24 #include "ns3/peer-link.h" 26 #include "ns3/simulator.h" 27 #include "ns3/traced-value.h" 42 .SetGroupName (
"Mesh")
44 .AddAttribute (
"RetryTimeout",
51 .AddAttribute (
"HoldingTimeout",
58 .AddAttribute (
"ConfirmTimeout",
65 .AddAttribute (
"MaxRetries",
66 "Maximum number of retries",
70 MakeUintegerChecker<uint16_t> ()
72 .AddAttribute (
"MaxBeaconLoss",
73 "Maximum number of lost beacons before link will be closed",
77 MakeUintegerChecker<uint16_t> (1)
79 .AddAttribute (
"MaxPacketFailure",
80 "Maximum number of failed packets before link will be closed",
84 MakeUintegerChecker<uint16_t> (1)
104 m_beaconInterval (
Seconds (0)),
300 NS_LOG_FUNCTION (
this << localLinkId << peerLinkId << peerAid << peerMp);
332 NS_LOG_FUNCTION (
this << localLinkId << peerLinkId << peerMp << reason);
712 os <<
"<PeerLink" << std::endl <<
714 "peerInterfaceAddress=\"" <<
m_peerAddress <<
"\"" << std::endl <<
720 "assocId=\"" <<
m_assocId <<
"\"" << std::endl <<
Simulation virtual time values and global simulation resolution.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
void SetBeaconTimingElement(IeBeaconTiming beaconTiming)
void TransmissionSuccess()
Reports about transmission success/failure.
Mac48Address m_peerMeshPointAddress
Mesh point address, equal to peer address in case of single interface mesh point. ...
void MLMECancelPeerLink(PmpReasonCode reason)
MLME-CancelPeerLink.request.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
void SetPeerAddress(Mac48Address macaddr)
void MLMESetSignalStatusCallback(SignalStatusCallback cb)
Set callback.
Time GetBeaconInterval() const
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
SignalStatusCallback m_linkStatusCallback
How to report my status change.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Channel is IDLE, no packet is being transmitted.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
IeConfiguration m_configuration
Mesh interface configuration.
void StateMachine(PeerEvent event, PmpReasonCode=REASON11S_RESERVED)
State transition.
void SetLocalAid(uint16_t aid)
IeBeaconTiming GetBeaconTimingElement() const
IeBeaconTiming m_beaconTiming
Beacon timing element received from the peer. Needed by BCA.
Ptr< PeerManagementProtocolMac > m_macPlugin
pointer to MAC plugin, which is responsible for peer management
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
void SetLocalLinkId(uint16_t id)
void OpenAccept(uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp)
Accept open link.
uint16_t m_peerLinkId
Peer ID of this link.
void SendPeerLinkClose(PmpReasonCode reasoncode)
void BeaconLoss()
Several successive beacons were lost, close link.
Mac48Address GetPeerAddress() const
uint16_t m_packetFail
How many successive packets were failed to transmit.
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
according to IEEE 802.11 - 2012
AttributeValue implementation for Time.
uint16_t GetPeerAid() const
void ClearTimingElement()
Clear timing element.
Hold an unsigned integer type.
PeerLink()
C-tor create empty link.
void SetPeerClose(uint16_t localLinkID, uint16_t peerLinkId, PmpReasonCode reasonCode)
Set peer close function.
also timeout of retry timer
See 7.3.2.89 of 802.11s draft 2.07.
uint16_t m_assocId
My association ID.
static Mac48Address GetBroadcast(void)
void SetMacPlugin(Ptr< PeerManagementProtocolMac > plugin)
Set pointer to MAC-plugin, which is responsible for sending peer link management frames.
void DoDispose()
Destructor implementation.
uint16_t GetLocalAid() const
uint32_t GetLinkMetric(Mac48Address peerAddress)
void Close(uint16_t localLinkID, uint16_t peerLinkID, PmpReasonCode reason)
Close link.
Time m_dot11MeshHoldingTimeout
void MLMEActivePeerLinkOpen()
MLME-ActivePeerLinkOpen.request.
Time m_dot11MeshConfirmTimeout
int64_t GetMicroSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
PeerState m_state
Current state.
Mac48Address m_peerAddress
Peer address.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SendPeerLinkManagementFrame(Mac48Address peerAddress, Mac48Address peerMpAddress, uint16_t aid, IePeerManagement peerElement, IeConfiguration meshConfig)
Send peer link management frame function.
PeerLinkOpenReject by internal reason.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void SetPeerMeshPointAddress(Mac48Address macaddr)
void SetInterface(uint32_t interface)
NS_LOG_LOGIC("Net device "<< nd<< " is not bridged")
void SetBeaconInformation(Time lastBeacon, Time BeaconInterval)
Process beacon received from peer.
Timeout of confirm timer.
uint16_t m_peerAssocId
Assoc Id assigned to me by peer.
EventId m_beaconLossTimer
void SetPeerConfirm(uint16_t localLinkID, uint16_t peerLinkId)
Set peer confirm function.
PeerEvent
Peer link events, see 802.11s draft 11B.3.3.2.
PmpReasonCode
Codes used by 802.11s Peer Management Protocol.
uint16_t m_dot11MeshMaxRetries
Time m_beaconInterval
Current beacon interval on corresponding interface.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
uint16_t m_localLinkId
My ID of this link.
Describes Mesh Configuration Element see 7.3.2.86 of 802.11s draft 3.0.
Peer link model for 802.11s Peer Management protocol.
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Time m_lastBeacon
When last beacon was received.
void SetPeerOpen(uint16_t localLinkId)
Set peer open function.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
static TypeId GetTypeId()
Get the type ID.
Time GetLastBeacon() const
static const char *const PeerStateNames[6]
Literal names of Mesh Peer Management states for use in log messages.
void Report(std::ostream &os) const
Statistics.
A base class which provides memory management and object aggregation.
void TransmissionFailure()
Callback type for MLME-SignalPeerLinkStatus event.
void SendPeerLinkConfirm()
uint32_t m_interface
The number of interface I am associated with.
Timeout of holding (graceful closing) timer.
Mac48Address GetAddress() const
debug only, used to print established links
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void ConfirmReject(uint16_t localLinkId, uint16_t peerLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
Confirm reject.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Time m_dot11MeshRetryTimeout
void ConfirmAccept(uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf, Mac48Address peerMp)
Confirm accept.
void MLMEPeeringRequestReject()
MLME-PeeringRequestReject.
void OpenReject(uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
Reject open link.