Peer link model for 802.11s Peer Management protocol. More...
#include <peer-link.h>
Public Types | |
enum | PeerState { IDLE, OPN_SNT, CNF_RCVD, OPN_RCVD, ESTAB, HOLDING } |
Peer Link state: More... |
Public Member Functions | |
PeerLink () | |
C-tor create empty link. | |
~PeerLink () | |
void | DoDispose () |
void | Report (std::ostream &os) const |
Statistics. | |
void | SetBeaconInformation (Time lastBeacon, Time BeaconInterval) |
Process beacon received from peer. | |
void | SetLinkStatusCallback (Callback< void, uint32_t, Mac48Address, bool > cb) |
Method used to detect peer link changes. | |
Peer link getters/setters | |
void | SetPeerAddress (Mac48Address macaddr) |
void | SetPeerMeshPointAddress (Mac48Address macaddr) |
void | SetInterface (uint32_t interface) |
void | SetLocalLinkId (uint16_t id) |
void | SetLocalAid (uint16_t aid) |
uint16_t | GetPeerAid () const |
void | SetBeaconTimingElement (IeBeaconTiming beaconTiming) |
Mac48Address | GetPeerAddress () const |
uint16_t | GetLocalAid () const |
Time | GetLastBeacon () const |
Time | GetBeaconInterval () const |
IeBeaconTiming | GetBeaconTimingElement () const |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Start (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Support object system. |
Private Types | |
enum | PeerEvent { CNCL, ACTOPN, CLS_ACPT, OPN_ACPT, OPN_RJCT, REQ_RJCT, CNF_ACPT, CNF_RJCT, TOR1, TOR2, TOC, TOH } |
Peer link events, see 802.11s draft 11B.3.3.2. More... |
Private Member Functions | |
PeerLink (const PeerLink &) | |
void | BeaconLoss () |
Several successive beacons were lost, close link. | |
bool | LinkIsEstab () const |
True if link is established. | |
bool | LinkIsIdle () const |
True if link is idle. Link can be deleted in this state. | |
PeerLink & | operator= (const PeerLink &) |
void | SetMacPlugin (Ptr< PeerManagementProtocolMac > plugin) |
void | StateMachine (PeerEvent event, PmpReasonCode=REASON11S_RESERVED) |
State transition. | |
Link response to received management frames | |
| |
void | Close (uint16_t localLinkID, uint16_t peerLinkID, PmpReasonCode reason) |
Close link. | |
void | OpenAccept (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp) |
Accept open link. | |
void | OpenReject (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason) |
Reject open link. | |
void | ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf, Mac48Address peerMp) |
Confirm accept. | |
void | ConfirmReject (uint16_t localLinkId, uint16_t peerLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason) |
Confirm reject. | |
Event handlers | |
void | ClearRetryTimer () |
void | ClearConfirmTimer () |
void | ClearHoldingTimer () |
void | SetHoldingTimer () |
void | SetRetryTimer () |
void | SetConfirmTimer () |
Work with management frames | |
void | SendPeerLinkClose (PmpReasonCode reasoncode) |
void | SendPeerLinkOpen () |
void | SendPeerLinkConfirm () |
Timeout handlers | |
void | HoldingTimeout () |
void | RetryTimeout () |
void | ConfirmTimeout () |
Private Attributes | |
uint16_t | m_assocId |
My association ID. | |
Time | m_beaconInterval |
Current beacon interval on corresponding interface. | |
IeBeaconTiming | m_beaconTiming |
Beacon timing element received from the peer. Needed by BCA. | |
IeConfiguration | m_configuration |
Mesh interface configuration. | |
uint32_t | m_interface |
The number of interface I am associated with. | |
Time | m_lastBeacon |
When last beacon was received. | |
SignalStatusCallback | m_linkStatusCallback |
How to report my status change. | |
uint16_t | m_localLinkId |
My ID of this link. | |
Ptr< PeerManagementProtocolMac > | m_macPlugin |
pointer to MAC plugin, which is responsible for peer management | |
uint16_t | m_packetFail |
How many successive packets were failed to transmit. | |
Mac48Address | m_peerAddress |
Peer address. | |
uint16_t | m_peerAssocId |
Assoc Id assigned to me by peer. | |
uint16_t | m_peerLinkId |
Peer ID of this link. | |
Mac48Address | m_peerMeshPointAddress |
PeerState | m_state |
Current state. | |
Timers & counters used for internal state transitions | |
uint16_t | m_dot11MeshMaxRetries |
Time | m_dot11MeshRetryTimeout |
Time | m_dot11MeshHoldingTimeout |
Time | m_dot11MeshConfirmTimeout |
EventId | m_retryTimer |
EventId | m_holdingTimer |
EventId | m_confirmTimer |
uint16_t | m_retryCounter |
EventId | m_beaconLossTimer |
uint16_t | m_maxBeaconLoss |
uint16_t | m_maxPacketFail |
Friends | |
class | PeerManagementProtocol |
MLME | |
typedef Callback< void, uint32_t, Mac48Address, Mac48Address, PeerLink::PeerState, PeerLink::PeerState > | SignalStatusCallback |
Callback type for MLME-SignalPeerLinkStatus event. | |
void | MLMECancelPeerLink (PmpReasonCode reason) |
MLME-CancelPeerLink.request. | |
void | MLMEActivePeerLinkOpen () |
MLME-ActivePeerLinkOpen.request. | |
void | MLMEPeeringRequestReject () |
MLME-PeeringRequestReject. | |
void | MLMESetSignalStatusCallback (SignalStatusCallback) |
Set callback. | |
void | TransmissionSuccess () |
Reports about transmission success/failure. | |
void | TransmissionFailure () |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
virtual void | DoStart (void) |
virtual void | NotifyNewAggregate (void) |
Peer link model for 802.11s Peer Management protocol.
This type is not accessible from the Config system.
No TraceSources are defined for this type.
Definition at line 43 of file peer-link.h.
typedef Callback<void, uint32_t, Mac48Address, Mac48Address, PeerLink::PeerState, PeerLink::PeerState> ns3::dot11s::PeerLink::SignalStatusCallback |
Callback type for MLME-SignalPeerLinkStatus event.
Definition at line 101 of file peer-link.h.
|
private |
Peer link events, see 802.11s draft 11B.3.3.2.
Definition at line 112 of file peer-link.h.
Peer Link state:
Definition at line 54 of file peer-link.h.
ns3::dot11s::PeerLink::PeerLink | ( | ) |
C-tor create empty link.
Definition at line 92 of file peer-link.cc.
ns3::dot11s::PeerLink::~PeerLink | ( | ) |
Definition at line 107 of file peer-link.cc.
|
private |
|
private |
Several successive beacons were lost, close link.
Definition at line 160 of file peer-link.cc.
References CNCL, and StateMachine().
Referenced by SetBeaconInformation().
|
private |
Definition at line 612 of file peer-link.cc.
References ns3::EventId::Cancel(), and m_confirmTimer.
Referenced by StateMachine().
|
private |
Definition at line 617 of file peer-link.cc.
References ns3::EventId::Cancel(), and m_holdingTimer.
Referenced by StateMachine().
|
private |
Definition at line 607 of file peer-link.cc.
References ns3::EventId::Cancel(), and m_retryTimer.
Referenced by StateMachine().
|
private |
Close link.
Definition at line 232 of file peer-link.cc.
References CLS_ACPT, m_localLinkId, m_peerLinkId, and StateMachine().
|
private |
Confirm accept.
Definition at line 285 of file peer-link.cc.
References CNF_ACPT, ns3::Mac48Address::GetBroadcast(), m_configuration, m_localLinkId, m_peerAssocId, m_peerLinkId, m_peerMeshPointAddress, NS_ASSERT, and StateMachine().
|
private |
Confirm reject.
Definition at line 316 of file peer-link.cc.
References CNF_RJCT, ns3::Mac48Address::GetBroadcast(), m_configuration, m_localLinkId, m_peerLinkId, m_peerMeshPointAddress, NS_ASSERT, and StateMachine().
|
private |
Definition at line 682 of file peer-link.cc.
References StateMachine(), and TOC.
Referenced by SetConfirmTimer().
|
virtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::Object.
Definition at line 111 of file peer-link.cc.
References ns3::EventId::Cancel(), ns3::dot11s::IeBeaconTiming::ClearTimingElement(), m_beaconLossTimer, m_beaconTiming, m_confirmTimer, m_holdingTimer, and m_retryTimer.
Time ns3::dot11s::PeerLink::GetBeaconInterval | ( | ) | const |
Definition at line 207 of file peer-link.cc.
References m_beaconInterval.
IeBeaconTiming ns3::dot11s::PeerLink::GetBeaconTimingElement | ( | ) | const |
Definition at line 212 of file peer-link.cc.
References m_beaconTiming.
Time ns3::dot11s::PeerLink::GetLastBeacon | ( | ) | const |
Definition at line 202 of file peer-link.cc.
References m_lastBeacon.
uint16_t ns3::dot11s::PeerLink::GetLocalAid | ( | ) | const |
Definition at line 191 of file peer-link.cc.
References m_assocId.
Mac48Address ns3::dot11s::PeerLink::GetPeerAddress | ( | void | ) | const |
Definition at line 186 of file peer-link.cc.
References m_peerAddress.
uint16_t ns3::dot11s::PeerLink::GetPeerAid | ( | ) | const |
Definition at line 196 of file peer-link.cc.
References m_peerAssocId.
|
static |
Support object system.
Reimplemented from ns3::Object.
Definition at line 37 of file peer-link.cc.
References m_dot11MeshConfirmTimeout, m_dot11MeshHoldingTimeout, m_dot11MeshMaxRetries, m_dot11MeshRetryTimeout, m_maxBeaconLoss, m_maxPacketFail, ns3::MicroSeconds(), and ns3::TypeId::SetParent().
|
private |
Definition at line 653 of file peer-link.cc.
References StateMachine(), and TOH.
Referenced by SetHoldingTimer().
|
private |
True if link is established.
Definition at line 343 of file peer-link.cc.
|
private |
True if link is idle. Link can be deleted in this state.
Definition at line 348 of file peer-link.cc.
void ns3::dot11s::PeerLink::MLMEActivePeerLinkOpen | ( | ) |
MLME-ActivePeerLinkOpen.request.
Definition at line 222 of file peer-link.cc.
References ACTOPN, and StateMachine().
void ns3::dot11s::PeerLink::MLMECancelPeerLink | ( | PmpReasonCode | reason | ) |
MLME-CancelPeerLink.request.
Definition at line 217 of file peer-link.cc.
References CNCL, and StateMachine().
void ns3::dot11s::PeerLink::MLMEPeeringRequestReject | ( | ) |
MLME-PeeringRequestReject.
Definition at line 227 of file peer-link.cc.
References ns3::dot11s::REASON11S_PEERING_CANCELLED, REQ_RJCT, and StateMachine().
void ns3::dot11s::PeerLink::MLMESetSignalStatusCallback | ( | PeerLink::SignalStatusCallback | cb | ) |
|
private |
Accept open link.
Definition at line 252 of file peer-link.cc.
References ns3::Mac48Address::GetBroadcast(), m_configuration, m_peerLinkId, m_peerMeshPointAddress, NS_ASSERT, OPN_ACPT, and StateMachine().
|
private |
Reject open link.
Definition at line 267 of file peer-link.cc.
References ns3::Mac48Address::GetBroadcast(), m_configuration, m_peerLinkId, m_peerMeshPointAddress, NS_ASSERT, OPN_RJCT, and StateMachine().
void ns3::dot11s::PeerLink::Report | ( | std::ostream & | os | ) | const |
Statistics.
Definition at line 687 of file peer-link.cc.
References ESTAB, ns3::dot11s::PeerManagementProtocolMac::GetAddress(), ns3::dot11s::PeerManagementProtocolMac::GetLinkMetric(), ns3::Time::GetSeconds(), m_assocId, m_lastBeacon, m_localLinkId, m_macPlugin, m_peerAddress, m_peerLinkId, m_peerMeshPointAddress, and m_state.
|
private |
Definition at line 664 of file peer-link.cc.
References m_dot11MeshMaxRetries, m_retryCounter, StateMachine(), TOR1, and TOR2.
Referenced by SetRetryTimer().
|
private |
Definition at line 622 of file peer-link.cc.
References m_assocId, m_configuration, m_localLinkId, m_macPlugin, m_peerAddress, m_peerLinkId, m_peerMeshPointAddress, ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), and ns3::dot11s::IePeerManagement::SetPeerClose().
Referenced by StateMachine().
|
private |
Definition at line 639 of file peer-link.cc.
References m_assocId, m_configuration, m_localLinkId, m_macPlugin, m_peerAddress, m_peerLinkId, m_peerMeshPointAddress, ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), and ns3::dot11s::IePeerManagement::SetPeerConfirm().
Referenced by StateMachine().
|
private |
Definition at line 630 of file peer-link.cc.
References m_assocId, m_configuration, m_localLinkId, m_macPlugin, m_peerAddress, m_peerMeshPointAddress, NS_ASSERT, ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), and ns3::dot11s::IePeerManagement::SetPeerOpen().
Referenced by StateMachine().
Process beacon received from peer.
Definition at line 145 of file peer-link.cc.
References BeaconLoss(), ns3::EventId::Cancel(), ns3::Time::GetMicroSeconds(), ns3::Time::GetSeconds(), m_beaconInterval, m_beaconLossTimer, m_lastBeacon, m_maxBeaconLoss, NS_ASSERT, ns3::Simulator::Schedule(), and ns3::Seconds().
void ns3::dot11s::PeerLink::SetBeaconTimingElement | ( | IeBeaconTiming | beaconTiming | ) |
Definition at line 181 of file peer-link.cc.
References m_beaconTiming.
|
private |
Definition at line 676 of file peer-link.cc.
References ConfirmTimeout(), ns3::Time::GetMicroSeconds(), m_confirmTimer, m_dot11MeshConfirmTimeout, NS_ASSERT, and ns3::Simulator::Schedule().
Referenced by StateMachine().
|
private |
Definition at line 647 of file peer-link.cc.
References ns3::Time::GetMicroSeconds(), HoldingTimeout(), m_dot11MeshHoldingTimeout, m_holdingTimer, NS_ASSERT, and ns3::Simulator::Schedule().
Referenced by StateMachine().
void ns3::dot11s::PeerLink::SetInterface | ( | uint32_t | interface | ) |
Definition at line 130 of file peer-link.cc.
References m_interface.
void ns3::dot11s::PeerLink::SetLinkStatusCallback | ( | Callback< void, uint32_t, Mac48Address, bool > | cb | ) |
Method used to detect peer link changes.
cb | is a callback, which notifies, that on interface (uint32_t), peer link with address (Mac48Address) was opened (bool is true) or closed (bool is false) |
void ns3::dot11s::PeerLink::SetLocalAid | ( | uint16_t | aid | ) |
Definition at line 140 of file peer-link.cc.
References m_assocId.
void ns3::dot11s::PeerLink::SetLocalLinkId | ( | uint16_t | id | ) |
Definition at line 135 of file peer-link.cc.
References m_localLinkId.
|
private |
Set pointer to MAC-plugin, which is responsible for sending peer link management frames
Definition at line 353 of file peer-link.cc.
References m_macPlugin.
void ns3::dot11s::PeerLink::SetPeerAddress | ( | Mac48Address | macaddr | ) |
Definition at line 120 of file peer-link.cc.
References m_peerAddress.
void ns3::dot11s::PeerLink::SetPeerMeshPointAddress | ( | Mac48Address | macaddr | ) |
Definition at line 125 of file peer-link.cc.
References m_peerMeshPointAddress.
|
private |
Definition at line 658 of file peer-link.cc.
References ns3::Time::GetMicroSeconds(), m_dot11MeshRetryTimeout, m_retryTimer, NS_ASSERT, RetryTimeout(), and ns3::Simulator::Schedule().
Referenced by StateMachine().
|
private |
State transition.
Definition at line 361 of file peer-link.cc.
References ACTOPN, ClearConfirmTimer(), ClearHoldingTimer(), ClearRetryTimer(), CLS_ACPT, CNCL, CNF_ACPT, CNF_RCVD, CNF_RJCT, ESTAB, ns3::Mac48Address::GetBroadcast(), HOLDING, IDLE, m_interface, m_linkStatusCallback, m_peerAddress, m_peerMeshPointAddress, m_retryCounter, m_state, NS_ASSERT, OPN_ACPT, OPN_RCVD, OPN_RJCT, OPN_SNT, ns3::dot11s::REASON11S_MESH_CLOSE_RCVD, ns3::dot11s::REASON11S_MESH_CONFIRM_TIMEOUT, ns3::dot11s::REASON11S_MESH_MAX_RETRIES, ns3::dot11s::REASON11S_PEERING_CANCELLED, REQ_RJCT, SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), SetConfirmTimer(), SetHoldingTimer(), SetRetryTimer(), TOC, TOH, TOR1, and TOR2.
Referenced by BeaconLoss(), Close(), ConfirmAccept(), ConfirmReject(), ConfirmTimeout(), HoldingTimeout(), MLMEActivePeerLinkOpen(), MLMECancelPeerLink(), MLMEPeeringRequestReject(), OpenAccept(), OpenReject(), RetryTimeout(), and TransmissionFailure().
void ns3::dot11s::PeerLink::TransmissionFailure | ( | ) |
Definition at line 170 of file peer-link.cc.
References CNCL, m_maxPacketFail, m_packetFail, and StateMachine().
void ns3::dot11s::PeerLink::TransmissionSuccess | ( | ) |
Reports about transmission success/failure.
Definition at line 165 of file peer-link.cc.
References m_packetFail.
|
friend |
Definition at line 46 of file peer-link.h.
|
private |
My association ID.
Definition at line 219 of file peer-link.h.
Referenced by GetLocalAid(), Report(), SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), and SetLocalAid().
|
private |
Current beacon interval on corresponding interface.
Definition at line 226 of file peer-link.h.
Referenced by GetBeaconInterval(), and SetBeaconInformation().
|
private |
Definition at line 253 of file peer-link.h.
Referenced by DoDispose(), and SetBeaconInformation().
|
private |
Beacon timing element received from the peer. Needed by BCA.
Definition at line 238 of file peer-link.h.
Referenced by DoDispose(), GetBeaconTimingElement(), and SetBeaconTimingElement().
|
private |
Mesh interface configuration.
Definition at line 236 of file peer-link.h.
Referenced by ConfirmAccept(), ConfirmReject(), OpenAccept(), OpenReject(), SendPeerLinkClose(), SendPeerLinkConfirm(), and SendPeerLinkOpen().
|
private |
Definition at line 251 of file peer-link.h.
Referenced by ClearConfirmTimer(), DoDispose(), and SetConfirmTimer().
|
private |
Definition at line 247 of file peer-link.h.
Referenced by GetTypeId(), and SetConfirmTimer().
|
private |
Definition at line 246 of file peer-link.h.
Referenced by GetTypeId(), and SetHoldingTimer().
|
private |
Definition at line 244 of file peer-link.h.
Referenced by GetTypeId(), and RetryTimeout().
|
private |
Definition at line 245 of file peer-link.h.
Referenced by GetTypeId(), and SetRetryTimer().
|
private |
Definition at line 250 of file peer-link.h.
Referenced by ClearHoldingTimer(), DoDispose(), and SetHoldingTimer().
|
private |
The number of interface I am associated with.
Definition at line 206 of file peer-link.h.
Referenced by SetInterface(), and StateMachine().
|
private |
When last beacon was received.
Definition at line 224 of file peer-link.h.
Referenced by GetLastBeacon(), Report(), and SetBeaconInformation().
|
private |
How to report my status change.
Definition at line 258 of file peer-link.h.
Referenced by MLMESetSignalStatusCallback(), and StateMachine().
|
private |
My ID of this link.
Definition at line 215 of file peer-link.h.
Referenced by Close(), ConfirmAccept(), ConfirmReject(), Report(), SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), and SetLocalLinkId().
|
private |
pointer to MAC plugin, which is responsible for peer management
Definition at line 208 of file peer-link.h.
Referenced by Report(), SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), and SetMacPlugin().
|
private |
Definition at line 254 of file peer-link.h.
Referenced by GetTypeId(), and SetBeaconInformation().
|
private |
Definition at line 255 of file peer-link.h.
Referenced by GetTypeId(), and TransmissionFailure().
|
private |
How many successive packets were failed to transmit.
Definition at line 228 of file peer-link.h.
Referenced by TransmissionFailure(), and TransmissionSuccess().
|
private |
Peer address.
Definition at line 210 of file peer-link.h.
Referenced by GetPeerAddress(), Report(), SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), SetPeerAddress(), and StateMachine().
|
private |
Assoc Id assigned to me by peer.
Definition at line 221 of file peer-link.h.
Referenced by ConfirmAccept(), and GetPeerAid().
|
private |
Peer ID of this link.
Definition at line 217 of file peer-link.h.
Referenced by Close(), ConfirmAccept(), ConfirmReject(), OpenAccept(), OpenReject(), Report(), SendPeerLinkClose(), and SendPeerLinkConfirm().
|
private |
Mesh point address, equal to peer address in case of single interface mesh point
Definition at line 213 of file peer-link.h.
Referenced by ConfirmAccept(), ConfirmReject(), OpenAccept(), OpenReject(), Report(), SendPeerLinkClose(), SendPeerLinkConfirm(), SendPeerLinkOpen(), SetPeerMeshPointAddress(), and StateMachine().
|
private |
Definition at line 252 of file peer-link.h.
Referenced by RetryTimeout(), and StateMachine().
|
private |
Definition at line 249 of file peer-link.h.
Referenced by ClearRetryTimer(), DoDispose(), and SetRetryTimer().
|
private |
Current state.
Definition at line 231 of file peer-link.h.
Referenced by LinkIsEstab(), LinkIsIdle(), Report(), and StateMachine().