22 #ifndef DOT11S_PEER_MAN_H 
   23 #define DOT11S_PEER_MAN_H 
   25 #include "ns3/mac48-address.h" 
   26 #include "ns3/net-device.h" 
   27 #include "ns3/event-id.h" 
   28 #include "ns3/nstime.h" 
   29 #include "ns3/traced-value.h" 
   36 class MeshPointDevice;
 
   37 class UniformRandomVariable;
 
   39 class PeerManagementProtocolMac;
 
   42 class IePeerManagement;
 
   43 class IeConfiguration;
 
  139   std::vector<Mac48Address> 
GetPeers (uint32_t interface) 
const;
 
  152   void Report (std::ostream &) 
const;
 
  273     void Print (std::ostream & os) 
const;
 
keep track of time values and allow control of global simulation resolution 
 
void NotifyLinkClose(Mac48Address peerMp, Mac48Address peerIface, Mac48Address myIface, uint32_t interface)
Aux. method to register closed links. 
 
virtual void DoInitialize()
Set peer link status change callback. 
 
smart pointer class similar to boost::intrusive_ptr 
 
uint8_t m_maxNumberOfPeerLinks
 
void NotifyLinkOpen(Mac48Address peerMp, Mac48Address peerIface, Mac48Address myIface, uint32_t interface)
Aux. method to register open links. 
 
Ptr< UniformRandomVariable > m_beaconShift
Add randomness to beacon shift. 
 
void Report(std::ostream &) const 
: Report statistics 
 
static TypeId GetTypeId()
 
Ptr< PeerLink > FindPeerLink(uint32_t interface, Mac48Address peerAddress)
Find active peer link by my interface and peer interface MAC. 
 
LinkEventCallback m_linkCloseTraceSrc
LinkClose trace source. 
 
TracedCallback< Mac48Address, Mac48Address > LinkEventCallback
Simple link open/close trace source type. Addresses are: src interface, dst interface. 
 
PeerState
Peer Link state: 
 
uint16_t m_lastLocalLinkId
 
bool IsActiveLink(uint32_t interface, Mac48Address peerAddress)
Checks if there is established link. 
 
std::vector< Ptr< PeerLink > > PeerLinksOnInterface
We keep a vector of pointers to PeerLink class. 
 
std::vector< Mac48Address > GetPeers(uint32_t interface) const 
Get list of active peers of my given interface. 
 
See 7.3.2.85 of draft 2.07. 
 
void SetMeshId(std::string s)
Set peer link status change callback. 
 
void Print(std::ostream &os) const 
 
void DoDispose()
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
 
void NotifyBeaconSent(uint32_t interface, Time beaconInterval)
Notify about beacon send event, needed to schedule BCA. 
 
PeerManagementProtocol & operator=(const PeerManagementProtocol &)
 
Mac48Address GetAddress()
Get mesh point address. 
 
void SetPeerLinkStatusCallback(Callback< void, Mac48Address, Mac48Address, uint32_t, bool > cb)
Set peer link status change callback. 
 
std::vector< Ptr< PeerLink > > GetPeerLinks() const 
Get list of all active peer links. 
 
uint8_t GetNumberOfLinks()
Set peer link status change callback. 
 
~PeerManagementProtocol()
 
Ptr< IeMeshId > GetMeshId() const 
Set peer link status change callback. 
 
std::map< uint32_t, PeerLinksOnInterface > PeerLinksMap
This map keeps all peer links. 
 
PeerManagementProtocolMacMap m_plugins
 
LinkEventCallback m_linkOpenTraceSrc
LinkOpen trace source. 
 
void ShiftOwnBeacon(uint32_t interface)
 
void ReceivePeerLinkFrame(uint32_t interface, Mac48Address peerAddress, Mac48Address peerMeshPointAddress, uint16_t aid, IePeerManagement peerManagementElement, IeConfiguration meshConfig)
Methods that handle Peer link management frames interaction: 
 
void ResetStats()
Set peer link status change callback. 
 
Ptr< IeBeaconTiming > GetBeaconTimingElement(uint32_t interface)
When we are sending a beacon - we fill beacon timing element. 
 
void PeerLinkStatus(uint32_t interface, Mac48Address peerAddress, Mac48Address peerMeshPointAddres, PeerLink::PeerState ostate, PeerLink::PeerState nstate)
Indicates changes in peer links. 
 
bool ShouldSendOpen(uint32_t interface, Mac48Address peerAddress)
 
std::map< Mac48Address, BeaconInfo > BeaconsOnInterface
This map keeps relationship between peer address and its beacon information. 
 
void ConfigurationMismatch(uint32_t interface, Mac48Address peerAddress)
Cancels peer link due to broken configuration (Mesh ID or Supported rates) 
 
struct Statistics m_stats
 
void TransmissionFailure(uint32_t interface, const Mac48Address peerAddress)
Cancels peer link due to successive transmission failures. 
 
void CheckBeaconCollisions(uint32_t interface)
BCA. 
 
std::map< uint32_t, Time > m_lastBeacon
Last beacon at each interface. 
 
bool GetBeaconCollisionAvoidance() const 
Set peer link status change callback. 
 
PmpReasonCode
Codes used by 802.11s Peer Management Protocol. 
 
bool ShouldAcceptOpen(uint32_t interface, Mac48Address peerAddress, PmpReasonCode &reasonCode)
 
bool m_enableBca
Flag which enables BCA. 
 
void ReceiveBeacon(uint32_t interface, Mac48Address peerAddress, Time beaconInterval, Ptr< IeBeaconTiming > beaconTiming)
To initiate peer link we must notify about received beacon. 
 
Describes Mesh Configuration Element see 7.3.2.86 of 802.11s draft 3.0. 
 
std::map< uint32_t, Time > m_beaconInterval
Beacon interval at each interface. 
 
void SetBeaconCollisionAvoidance(bool enable)
Enable or disable beacon collision avoidance. 
 
a base class which provides memory management and object aggregation 
 
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
 
std::map< uint32_t, Ptr< PeerManagementProtocolMac > > PeerManagementProtocolMacMap
this vector keeps pointers to MAC-plugins 
 
Keeps information about beacon of peer station: beacon interval, association ID, last time we have re...
 
uint16_t m_maxBeaconShift
Beacon can be shifted at [-m_maxBeaconShift; +m_maxBeaconShift] TUs. 
 
Callback< void, Mac48Address, Mac48Address, uint32_t, bool > m_peerStatusCallback
Callback to notify about peer link changes: Mac48Address is peer address of mesh point, Mac48Address is peer address of interface, uint32_t - interface ID, bool is status - true when new link has appeared, false - when link was closed,. 
 
std::map< uint32_t, BeaconsOnInterface > BeaconInfoMap
This map keeps beacon information on all interfaces. 
 
a unique identifier for an interface. 
 
Ptr< PeerLink > InitiateLink(uint32_t interface, Mac48Address peerAddress, Mac48Address peerMeshPointAddress)
 
bool Install(Ptr< MeshPointDevice >)
Install PMP on given mesh point. 
 
void TransmissionSuccess(uint32_t interface, const Mac48Address peerAddress)
resets transmission failure statistics 
 
802.11s Peer Management Protocol model