24 #include "ns3/peer-link.h"
26 #include "ns3/simulator.h"
27 #include "ns3/traced-value.h"
42 .AddConstructor<PeerLink> ()
43 .AddAttribute (
"RetryTimeout",
50 .AddAttribute (
"HoldingTimeout",
57 .AddAttribute (
"ConfirmTimeout",
64 .AddAttribute (
"MaxRetries",
65 "Maximum number of retries",
69 MakeUintegerChecker<uint16_t> ()
71 .AddAttribute (
"MaxBeaconLoss",
72 "Maximum number of lost beacons before link will be closed",
76 MakeUintegerChecker<uint16_t> (1)
78 .AddAttribute (
"MaxPacketFailure",
79 "Maximum number of failed packets before link will be closed",
83 MakeUintegerChecker<uint16_t> (1)
101 m_beaconInterval (
Seconds (0)),
695 os <<
"<PeerLink" << std::endl <<
697 "peerInterfaceAddress=\"" <<
m_peerAddress <<
"\"" << std::endl <<
703 "assocId=\"" <<
m_assocId <<
"\"" << std::endl <<
Simulation virtual time values and global simulation resolution.
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 Report(std::ostream &os) const
Statistics.
uint16_t GetPeerAid() const
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.
bool LinkIsIdle() const
True if link is idle. Link can be deleted in this state.
void SetLocalAid(uint16_t aid)
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
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.
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
uint16_t m_peerLinkId
Peer ID of this link.
void SendPeerLinkClose(PmpReasonCode reasoncode)
void BeaconLoss()
Several successive beacons were lost, close link.
Timeout of confirm timer.
uint16_t m_packetFail
How many successive packets were failed to transmit.
See 7.3.2.85 of draft 2.07.
int64_t GetMicroSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
AttributeValue implementation for Time.
void ClearTimingElement()
Hold an unsigned integer type.
uint16_t GetLocalAid() const
PeerLink()
C-tor create empty link.
void SetPeerClose(uint16_t localLinkID, uint16_t peerLinkId, PmpReasonCode reasonCode)
See 7.3.2.89 of 802.11s draft 2.07.
uint16_t m_assocId
My association ID.
IeBeaconTiming GetBeaconTimingElement() const
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.
uint32_t GetLinkMetric(Mac48Address peerAddress)
void Close(uint16_t localLinkID, uint16_t peerLinkID, PmpReasonCode reason)
Close link.
Time m_dot11MeshHoldingTimeout
Timeout of holding (graceful closing) timer.
void MLMEActivePeerLinkOpen()
MLME-ActivePeerLinkOpen.request.
Time m_dot11MeshConfirmTimeout
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)
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Mac48Address GetAddress() const
debug only, used to print established links
void SetPeerMeshPointAddress(Mac48Address macaddr)
Time GetLastBeacon() const
void SetInterface(uint32_t interface)
void MLMESetSignalStatusCallback(SignalStatusCallback)
Set callback.
void SetBeaconInformation(Time lastBeacon, Time BeaconInterval)
Process beacon received from peer.
also timeout of retry timer
uint16_t m_peerAssocId
Assoc Id assigned to me by peer.
EventId m_beaconLossTimer
bool LinkIsEstab() const
True if link is established.
void SetPeerConfirm(uint16_t localLinkID, uint16_t peerLinkId)
PmpReasonCode
Codes used by 802.11s Peer Management Protocol.
uint16_t m_dot11MeshMaxRetries
Time m_beaconInterval
Current beacon interval on corresponding interface.
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.
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)
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
static TypeId GetTypeId()
Support object system.
PeerEvent
Peer link events, see 802.11s draft 11B.3.3.2.
A base class which provides memory management and object aggregation.
Time GetBeaconInterval() const
void TransmissionFailure()
Callback type for MLME-SignalPeerLinkStatus event.
void SendPeerLinkConfirm()
PeerLinkOpenReject by internal reason.
uint32_t m_interface
The number of interface I am associated with.
Mac48Address GetPeerAddress() const
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)
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.