Interface MAC plugin for HWMP – 802.11s routing protocol. More...
#include <hwmp-protocol-mac.h>
 Inheritance diagram for ns3::dot11s::HwmpProtocolMac:
 Collaboration diagram for ns3::dot11s::HwmpProtocolMac:Classes | |
| struct | MyPerr | 
| struct | Statistics | 
Public Member Functions | |
| HwmpProtocolMac (uint32_t, Ptr< HwmpProtocol >) | |
| ~HwmpProtocolMac () | |
Inherited from MAC plugin  | |
| void | SetParent (Ptr< MeshWifiInterfaceMac > parent) | 
| Update beacon is empty, because HWMP does not know anything about beacons.  More... | |
| bool | Receive (Ptr< Packet > packet, const WifiMacHeader &header) | 
| Update beacon is empty, because HWMP does not know anything about beacons.  More... | |
| bool | UpdateOutcomingFrame (Ptr< Packet > packet, WifiMacHeader &header, Mac48Address from, Mac48Address to) | 
| Update beacon is empty, because HWMP does not know anything about beacons.  More... | |
| void | UpdateBeacon (MeshWifiBeacon &beacon) const | 
| Update beacon is empty, because HWMP does not know anything about beacons.  More... | |
| int64_t | AssignStreams (int64_t stream) | 
| Update beacon is empty, because HWMP does not know anything about beacons.  More... | |
  Public Member Functions inherited from ns3::MeshWifiInterfaceMacPlugin | |
| virtual | ~MeshWifiInterfaceMacPlugin () | 
| This is for subclasses.  More... | |
  Public Member Functions inherited from ns3::SimpleRefCount< MeshWifiInterfaceMacPlugin > | |
| SimpleRefCount () | |
| Constructor.  More... | |
| SimpleRefCount (const SimpleRefCount &o) | |
| Copy constructor.  More... | |
| uint32_t | GetReferenceCount (void) const | 
| Get the reference count of the object.  More... | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) | 
| Assignment.  More... | |
| void | Ref (void) const | 
| Increment the reference count.  More... | |
| void | Unref (void) const | 
| Decrement the reference count.  More... | |
Private Member Functions | |
| uint16_t | GetChannelId () const | 
| uint32_t | GetLinkMetric (Mac48Address peerAddress) const | 
| bool | ReceiveAction (Ptr< Packet > packet, const WifiMacHeader &header) | 
| Receive action management frame.  More... | |
| bool | ReceiveData (Ptr< Packet > packet, const WifiMacHeader &header) | 
| Receive data frame.  More... | |
| void | Report (std::ostream &) const | 
| Report statistics.  More... | |
| void | ResetStats () | 
| void | SendMyPerr () | 
| void | SendMyPreq () | 
| Sends one PREQ when PreqMinInterval after last PREQ expires (if any PREQ exists in rhe queue)  More... | |
Interaction with HWMP:  | |
| void | SendPreq (IePreq preq) | 
| Request a destination.  More... | |
| void | SendPreq (std::vector< IePreq > preq) | 
| Request a destination.  More... | |
| void | SendPrep (IePrep prep, Mac48Address receiver) | 
| Request a destination.  More... | |
| void | ForwardPerr (std::vector< HwmpProtocol::FailedDestination > destinations, std::vector< Mac48Address > receivers) | 
| Request a destination.  More... | |
| void | InitiatePerr (std::vector< HwmpProtocol::FailedDestination > destinations, std::vector< Mac48Address > receivers) | 
| Request a destination.  More... | |
| void | RequestDestination (Mac48Address dest, uint32_t originator_seqno, uint32_t dst_seqno) | 
| Request a destination.  More... | |
Static Private Member Functions | |
| static WifiActionHeader | GetWifiActionHeader () | 
Private Attributes | |
| uint32_t | m_ifIndex | 
| Ptr< MeshWifiInterfaceMac > | m_parent | 
| Ptr< HwmpProtocol > | m_protocol | 
my PREQ and PREQ timer:  | |
| EventId | m_preqTimer | 
| std::vector< IePreq > | m_myPreq | 
PERR timer and stored path error  | |
| EventId | m_perrTimer | 
| MyPerr | m_myPerr | 
Statistics:  | |
| Statistics | m_stats | 
Friends | |
| class | HwmpProtocol | 
Additional Inherited Members | |
  Static Public Member Functions inherited from ns3::SimpleRefCount< MeshWifiInterfaceMacPlugin > | |
| static void | Cleanup (void) | 
| Noop.  More... | |
Interface MAC plugin for HWMP – 802.11s routing protocol.
Definition at line 44 of file hwmp-protocol-mac.h.
| ns3::dot11s::HwmpProtocolMac::HwmpProtocolMac | ( | uint32_t | ifIndex, | 
| Ptr< HwmpProtocol > | protocol | ||
| ) | 
Definition at line 39 of file hwmp-protocol-mac.cc.
| ns3::dot11s::HwmpProtocolMac::~HwmpProtocolMac | ( | ) | 
Definition at line 43 of file hwmp-protocol-mac.cc.
      
  | 
  virtual | 
Update beacon is empty, because HWMP does not know anything about beacons.
Implements ns3::MeshWifiInterfaceMacPlugin.
Definition at line 480 of file hwmp-protocol-mac.cc.
References m_protocol.
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 319 of file hwmp-protocol-mac.cc.
References ns3::Packet::AddHeader(), ns3::WifiInformationElementVector::AddInformationElement(), first::address, ns3::Mac48Address::GetBroadcast(), ns3::Packet::GetSize(), GetWifiActionHeader(), m_parent, m_protocol, m_stats, NS_LOG_FUNCTION_NOARGS, ns3::WifiMacHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::dot11s::HwmpProtocolMac::Statistics::txMgt, ns3::dot11s::HwmpProtocolMac::Statistics::txMgtBytes, and ns3::dot11s::HwmpProtocolMac::Statistics::txPerr.
Referenced by SendMyPerr().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Definition at line 437 of file hwmp-protocol-mac.cc.
References m_parent.
      
  | 
  private | 
Definition at line 432 of file hwmp-protocol-mac.cc.
References m_parent.
      
  | 
  staticprivate | 
Definition at line 207 of file hwmp-protocol-mac.cc.
References ns3::WifiActionHeader::MESH_PATH_SELECTION, ns3::WifiActionHeader::PATH_SELECTION, ns3::WifiActionHeader::ActionValue::pathSelection, and ns3::WifiActionHeader::SetAction().
Referenced by ForwardPerr(), SendPrep(), and SendPreq().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 373 of file hwmp-protocol-mac.cc.
References ns3::dot11s::HwmpProtocolMac::MyPerr::destinations, m_myPerr, ns3::dot11s::HwmpProtocolMac::MyPerr::receivers, and SendMyPerr().
 Here is the call graph for this function:
      
  | 
  virtual | 
Update beacon is empty, because HWMP does not know anything about beacons.
Implements ns3::MeshWifiInterfaceMacPlugin.
Definition at line 165 of file hwmp-protocol-mac.cc.
References ns3::WifiMacHeader::IsAction(), ns3::WifiMacHeader::IsData(), ReceiveAction(), and ReceiveData().
 Here is the call graph for this function:
      
  | 
  private | 
Receive action management frame.
Definition at line 94 of file hwmp-protocol-mac.cc.
References ns3::WifiInformationElementVector::Begin(), ns3::WifiInformationElementVector::End(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), ns3::WifiActionHeader::GetCategory(), ns3::Packet::GetSize(), IE11S_PERR, IE11S_PREP, IE11S_PREQ, IE11S_RANN, m_ifIndex, m_parent, m_protocol, m_stats, ns3::WifiActionHeader::MESH_PATH_SELECTION, NS_ASSERT, NS_LOG_WARN, ns3::Packet::RemoveHeader(), ns3::dot11s::HwmpProtocolMac::Statistics::rxMgt, ns3::dot11s::HwmpProtocolMac::Statistics::rxMgtBytes, ns3::dot11s::HwmpProtocolMac::Statistics::rxPerr, ns3::dot11s::HwmpProtocolMac::Statistics::rxPrep, and ns3::dot11s::HwmpProtocolMac::Statistics::rxPreq.
Referenced by Receive().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Receive data frame.
Definition at line 53 of file hwmp-protocol-mac.cc.
References ns3::Packet::AddPacketTag(), ns3::WifiMacHeader::GetAddr3(), ns3::WifiMacHeader::GetAddr4(), ns3::Mac48Address::GetBroadcast(), ns3::Packet::GetSize(), ns3::WifiMacHeader::IsData(), m_protocol, m_stats, NS_ASSERT, NS_FATAL_ERROR, ns3::Packet::PeekPacketTag(), ns3::Packet::RemoveHeader(), ns3::dot11s::HwmpProtocolMac::Statistics::rxData, ns3::dot11s::HwmpProtocolMac::Statistics::rxDataBytes, ns3::dot11s::HwmpTag::SetSeqno(), and ns3::dot11s::HwmpTag::SetTtl().
Referenced by Receive().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Report statistics.
Definition at line 466 of file hwmp-protocol-mac.cc.
References m_parent, m_stats, and ns3::dot11s::HwmpProtocolMac::Statistics::Print().
 Here is the call graph for this function:
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 253 of file hwmp-protocol-mac.cc.
References ns3::dot11s::IePreq::AddDestinationAddressElement(), m_myPreq, m_protocol, NS_ASSERT, NS_LOG_FUNCTION_NOARGS, SendMyPreq(), ns3::dot11s::IePreq::SetHopcount(), ns3::dot11s::IePreq::SetLifetime(), ns3::dot11s::IePreq::SetOriginatorAddress(), ns3::dot11s::IePreq::SetOriginatorSeqNumber(), ns3::dot11s::IePreq::SetPreqID(), and ns3::dot11s::IePreq::SetTTL().
 Here is the call graph for this function:
      
  | 
  private | 
Definition at line 474 of file hwmp-protocol-mac.cc.
References m_stats.
      
  | 
  private | 
Definition at line 419 of file hwmp-protocol-mac.cc.
References ns3::dot11s::HwmpProtocolMac::MyPerr::destinations, ForwardPerr(), ns3::EventId::IsRunning(), m_myPerr, m_perrTimer, m_protocol, NS_LOG_FUNCTION_NOARGS, ns3::dot11s::HwmpProtocolMac::MyPerr::receivers, and ns3::Simulator::Schedule().
Referenced by InitiatePerr().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Sends one PREQ when PreqMinInterval after last PREQ expires (if any PREQ exists in rhe queue)
Definition at line 277 of file hwmp-protocol-mac.cc.
References ns3::EventId::IsRunning(), m_myPreq, m_preqTimer, m_protocol, NS_ASSERT, NS_LOG_FUNCTION_NOARGS, ns3::Simulator::Schedule(), and SendPreq().
Referenced by RequestDestination().
 Here is the call graph for this function:
 Here is the caller graph for this function:
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 295 of file hwmp-protocol-mac.cc.
References ns3::Packet::AddHeader(), ns3::WifiInformationElementVector::AddInformationElement(), ns3::Packet::GetSize(), GetWifiActionHeader(), m_parent, m_protocol, m_stats, NS_LOG_FUNCTION_NOARGS, ns3::WifiMacHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::dot11s::HwmpProtocolMac::Statistics::txMgt, ns3::dot11s::HwmpProtocolMac::Statistics::txMgtBytes, and ns3::dot11s::HwmpProtocolMac::Statistics::txPrep.
 Here is the call graph for this function:
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 216 of file hwmp-protocol-mac.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by SendMyPreq().
 Here is the caller graph for this function:
      
  | 
  private | 
Request a destination.
If can not send preq immediately - add a destination to existing PREQ generated by me and stored in PREQ queue
| dest | is the destination to be resolved | 
| originator_seqno | is a sequence number that shall be preq originator sequenece number | 
| dst_seqno | is a sequence number taken from routing table | 
Definition at line 224 of file hwmp-protocol-mac.cc.
References ns3::Packet::AddHeader(), ns3::WifiInformationElementVector::AddInformationElement(), ns3::Packet::GetSize(), GetWifiActionHeader(), m_ifIndex, m_parent, m_protocol, m_stats, ns3::WifiMacHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::dot11s::HwmpProtocolMac::Statistics::txMgt, ns3::dot11s::HwmpProtocolMac::Statistics::txMgtBytes, and ns3::dot11s::HwmpProtocolMac::Statistics::txPreq.
 Here is the call graph for this function:
      
  | 
  virtual | 
Update beacon is empty, because HWMP does not know anything about beacons.
Implements ns3::MeshWifiInterfaceMacPlugin.
Definition at line 47 of file hwmp-protocol-mac.cc.
References m_parent.
      
  | 
  inlinevirtual | 
Update beacon is empty, because HWMP does not know anything about beacons.
Implements ns3::MeshWifiInterfaceMacPlugin.
Definition at line 55 of file hwmp-protocol-mac.h.
      
  | 
  virtual | 
Update beacon is empty, because HWMP does not know anything about beacons.
Implements ns3::MeshWifiInterfaceMacPlugin.
Definition at line 184 of file hwmp-protocol-mac.cc.
References ns3::Packet::AddHeader(), ns3::dot11s::HwmpTag::GetAddress(), ns3::dot11s::HwmpTag::GetSeqno(), ns3::Packet::GetSize(), ns3::dot11s::HwmpTag::GetTtl(), ns3::WifiMacHeader::IsData(), m_stats, NS_FATAL_ERROR, ns3::Packet::RemovePacketTag(), ns3::WifiMacHeader::SetAddr1(), ns3::dot11s::MeshHeader::SetMeshSeqno(), ns3::dot11s::MeshHeader::SetMeshTtl(), ns3::dot11s::HwmpProtocolMac::Statistics::txData, and ns3::dot11s::HwmpProtocolMac::Statistics::txDataBytes.
 Here is the call graph for this function:
      
  | 
  friend | 
Definition at line 60 of file hwmp-protocol-mac.h.
      
  | 
  private | 
Definition at line 94 of file hwmp-protocol-mac.h.
Referenced by ReceiveAction(), and SendPreq().
      
  | 
  private | 
Definition at line 109 of file hwmp-protocol-mac.h.
Referenced by InitiatePerr(), and SendMyPerr().
      
  | 
  private | 
Definition at line 100 of file hwmp-protocol-mac.h.
Referenced by RequestDestination(), and SendMyPreq().
      
  | 
  private | 
Definition at line 93 of file hwmp-protocol-mac.h.
Referenced by ForwardPerr(), GetChannelId(), GetLinkMetric(), ReceiveAction(), Report(), SendPrep(), SendPreq(), and SetParent().
      
  | 
  private | 
Definition at line 104 of file hwmp-protocol-mac.h.
Referenced by SendMyPerr().
      
  | 
  private | 
Definition at line 99 of file hwmp-protocol-mac.h.
Referenced by SendMyPreq().
      
  | 
  private | 
Definition at line 95 of file hwmp-protocol-mac.h.
Referenced by AssignStreams(), ForwardPerr(), ReceiveAction(), ReceiveData(), RequestDestination(), SendMyPerr(), SendMyPreq(), SendPrep(), and SendPreq().
      
  | 
  private | 
Definition at line 131 of file hwmp-protocol-mac.h.
Referenced by ForwardPerr(), ReceiveAction(), ReceiveData(), Report(), ResetStats(), SendPrep(), SendPreq(), and UpdateOutcomingFrame().