A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::dot11s::HwmpProtocol Class Reference

Hybrid wireless mesh protocol – a mesh routing protocol defined in IEEE 802.11-2012 standard. More...

#include "hwmp-protocol.h"

+ Inheritance diagram for ns3::dot11s::HwmpProtocol:
+ Collaboration diagram for ns3::dot11s::HwmpProtocol:

Classes

struct  FailedDestination
 structure of unreachable destination - address and sequence number More...
 
struct  PathError
 Structure of path error: IePerr and list of receivers: interfaces and MAC address. More...
 
struct  PreqEvent
 PreqEvent structure. More...
 
struct  QueuedPacket
 Packet waiting its routing information. More...
 
struct  Statistics
 Statistics structure. More...
 

Public Member Functions

 HwmpProtocol ()
 
 HwmpProtocol (const HwmpProtocol &)=delete
 
 ~HwmpProtocol () override
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model.
 
void DoDispose () override
 Destructor implementation.
 
Ptr< HwmpRtableGetRoutingTable () const
 Get pointer to HWMP routing table.
 
bool Install (Ptr< MeshPointDevice > mp)
 Install HWMP on given mesh point.
 
HwmpProtocoloperator= (const HwmpProtocol &)=delete
 
void PeerLinkStatus (Mac48Address meshPointAddress, Mac48Address peerAddress, uint32_t interface, bool status)
 Peer link status function.
 
bool RemoveRoutingStuff (uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType) override
 Clean HWMP packet tag from packet; only the packet parameter is used.
 
bool RequestRoute (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< const Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply) override
 Route request, inherited from MeshL2RoutingProtocol.
 
void SetNeighboursCallback (Callback< std::vector< Mac48Address >, uint32_t > cb)
 This callback is used to obtain active neighbours on a given interface.
 
Proactive PREQ mechanism:

Set the current node as root

void SetRoot ()
 Unset the current node as root.
 
void UnsetRoot ()
 Unset the current node as root.
 
void Report (std::ostream &os) const
 Statistics:
 
void ResetStats ()
 Reset Statistics:
 
- Public Member Functions inherited from ns3::MeshL2RoutingProtocol
 ~MeshL2RoutingProtocol () override
 virtual D-tor for subclasses
 
Ptr< MeshPointDeviceGetMeshPoint () const
 Each mesh protocol must be installed on the mesh point to work.
 
virtual bool RemoveRoutingStuff (uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType)=0
 When packet is ready to go to upper layer, protocol must remove all its information: tags, header, etc.
 
virtual bool RequestRoute (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< const Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply)=0
 Request routing information, all packets must go through this request.
 
void SetMeshPoint (Ptr< MeshPointDevice > mp)
 Set host mesh point, analog of SetNode (...) methods for upper layer protocols.
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor.
 
 ~Object () override
 Destructor.
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together.
 
void Dispose ()
 Dispose of this Object.
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one.
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object.
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object.
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object.
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId.
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object.
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one.
 
bool IsInitialized () const
 Check if the object has been initialized.
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor.
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful.
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors.
 
virtual TypeId GetInstanceTypeId () const =0
 Get the most derived TypeId for this Object.
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful.
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors.
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context.
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context.
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context.
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::MeshL2RoutingProtocol
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type.
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID.
 

Private Types

typedef std::map< uint32_t, Ptr< HwmpProtocolMac > > HwmpProtocolMacMap
 HwmpProtocolMacMap typedef.
 
typedef TracedCallback< RouteChangeRouteChangeTracedCallback
 RouteChangeTracedCallback typedef.
 

Private Member Functions

void DoInitialize () override
 Initialize() implementation.
 
bool ForwardUnicast (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply, uint32_t ttl)
 Like RequestRoute, but for unicast packets.
 
Mac48Address GetAddress ()
 
Interaction with HWMP MAC plugin
void ReceivePreq (IePreq preq, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
 Handler for receiving Path Request.
 
void ReceivePrep (IePrep prep, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
 Handler for receiving Path Reply.
 
void ReceivePerr (std::vector< FailedDestination > destinations, Mac48Address from, uint32_t interface, Mac48Address fromMp)
 Handler for receiving Path Error.
 
void SendPrep (Mac48Address src, Mac48Address dst, Mac48Address retransmitter, uint32_t initMetric, uint32_t originatorDsn, uint32_t destinationSN, uint32_t lifetime, uint32_t interface)
 Send Path Reply.
 
PathError MakePathError (std::vector< FailedDestination > destinations)
 forms a path error information element when list of destination fails on a given interface
 
void ForwardPathError (PathError perr)
 Forwards a received path error.
 
void InitiatePathError (PathError perr)
 Passes a self-generated PERR to interface-plugin.
 
std::vector< std::pair< uint32_t, Mac48Address > > GetPerrReceivers (std::vector< FailedDestination > failedDest)
 Get PERR receivers.
 
std::vector< Mac48AddressGetPreqReceivers (uint32_t interface)
 Get PREQ receivers.
 
std::vector< Mac48AddressGetBroadcastReceivers (uint32_t interface)
 Get broadcast receivers.
 
bool DropDataFrame (uint32_t seqno, Mac48Address source)
 MAC-plugin asks whether the frame can be dropped.
 
bool QueuePacket (QueuedPacket packet)
 Queue a packet.
 
QueuedPacket DequeueFirstPacketByDst (Mac48Address dst)
 Dequeue the first packet for a given destination.
 
QueuedPacket DequeueFirstPacket ()
 Dequeue the first packet in the queue.
 
void ReactivePathResolved (Mac48Address dst)
 Signal the protocol that the reactive path toward a destination is now available.
 
void ProactivePathResolved ()
 Signal the protocol that the proactive path is now available.
 
Methods responsible for path discovery retry procedure:
bool ShouldSendPreq (Mac48Address dst)
 checks when the last path discovery procedure was started for a given destination.
 
void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry)
 Generates PREQ retry when retry timeout has expired and route is still unresolved.
 
void SendProactivePreq ()
 Proactive Preq routines:
 
Methods needed by HwmpMacLugin to access protocol parameters:
bool GetDoFlag () const
 Get do flag function.
 
bool GetRfFlag () const
 Get rf flag function.
 
Time GetPreqMinInterval ()
 Get PREQ minimum interval function.
 
Time GetPerrMinInterval ()
 Get PERR minimum interval function.
 
uint8_t GetMaxTtl () const
 Get maximum TTL function.
 
uint32_t GetNextPreqId ()
 Get next period function.
 
uint32_t GetNextHwmpSeqno ()
 Get next HWMP sequence no function.
 
uint32_t GetActivePathLifetime ()
 Get active path lifetime function.
 
uint8_t GetUnicastPerrThreshold () const
 Get unicast PERR threshold function.
 

Private Attributes

Mac48Address m_address
 address
 
Ptr< UniformRandomVariablem_coefficient
 Random variable for random start time.
 
uint32_t m_dataSeqno
 data sequence no
 
uint32_t m_hwmpSeqno
 HWMP sequence no.
 
HwmpProtocolMacMap m_interfaces
 interfaces
 
Callback< std::vector< Mac48Address >, uint32_tm_neighboursCallback
 neighbors callback
 
uint32_t m_preqId
 PREQ ID.
 
std::map< Mac48Address, PreqEventm_preqTimeouts
 PREQ timeouts.
 
EventId m_proactivePreqTimer
 proactive PREQ timer
 
Time m_randomStart
 Random start in Proactive PREQ propagation.
 
TracedCallback< RouteChangem_routeChangeTraceSource
 Route change trace source.
 
TracedCallback< Timem_routeDiscoveryTimeCallback
 Route discovery time:
 
std::vector< QueuedPacketm_rqueue
 Packet Queue.
 
Ptr< HwmpRtablem_rtable
 Routing table.
 
Statistics m_stats
 statistics
 
Sequence number filters

Data sequence number database

std::map< Mac48Address, uint32_tm_lastDataSeqno
 keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address
 
std::map< Mac48Address, std::pair< uint32_t, uint32_t > > m_hwmpSeqnoMetricDatabase
 keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address
 
HWMP-protocol parameters

These are all Attributes

uint16_t m_maxQueueSize
 Maximum number of packets we can store when resolving route.
 
uint8_t m_dot11MeshHWMPmaxPREQretries
 Maximum number of retries before we suppose the destination to be unreachable.
 
Time m_dot11MeshHWMPnetDiameterTraversalTime
 Time we suppose the packet to go from one edge of the network to another.
 
Time m_dot11MeshHWMPpreqMinInterval
 Minimal interval between to successive PREQs.
 
Time m_dot11MeshHWMPperrMinInterval
 Minimal interval between to successive PREQs.
 
Time m_dot11MeshHWMPactiveRootTimeout
 Lifetime of proactive routing information.
 
Time m_dot11MeshHWMPactivePathTimeout
 Lifetime of reactive routing information.
 
Time m_dot11MeshHWMPpathToRootInterval
 Interval between two successive proactive PREQs.
 
Time m_dot11MeshHWMPrannInterval
 Lifetime of proactive routing information.
 
bool m_isRoot
 True if the node is a root.
 
uint8_t m_maxTtl
 Initial value of Time To Live field.
 
uint8_t m_unicastPerrThreshold
 Maximum number of PERR receivers, when we send a PERR as a chain of unicasts.
 
uint8_t m_unicastPreqThreshold
 Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts.
 
uint8_t m_unicastDataThreshold
 Maximum number of broadcast receivers, when we send a broadcast as a chain of unicasts.
 
bool m_doFlag
 Destination only HWMP flag.
 
bool m_rfFlag
 Reply and forward flag.
 

Friends

class HwmpProtocolMac
 allow HwmpProtocolMac class friend access
 

Additional Inherited Members

- Public Types inherited from ns3::MeshL2RoutingProtocol
typedef Callback< void, bool, Ptr< Packet >, Mac48Address, Mac48Address, uint16_t, uint32_tRouteReplyCallback
 Callback to be invoked when route discovery procedure is completed.
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object.
 
virtual void DoDispose ()
 Destructor implementation.
 
virtual void DoInitialize ()
 Initialize() implementation.
 
virtual void NotifyNewAggregate ()
 Notify all Objects aggregated to this one of a new Object being aggregated.
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes.
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed.
 
- Protected Attributes inherited from ns3::MeshL2RoutingProtocol
Ptr< MeshPointDevicem_mp
 Host mesh point.
 

Detailed Description

Hybrid wireless mesh protocol – a mesh routing protocol defined in IEEE 802.11-2012 standard.

Config Paths

ns3::dot11s::HwmpProtocol is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::MeshPointDevice/RoutingProtocol/$ns3::dot11s::HwmpProtocol"

Attributes

  • DoFlag: Destination only HWMP flag
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: constructwriteread
  • Dot11MeshHWMPactivePathTimeout: Lifetime of reactive routing information
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5.12e+09ns
    • Flags: constructwriteread
  • Dot11MeshHWMPactiveRootTimeout: Lifetime of proactive routing information
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5.12e+09ns
    • Flags: constructwriteread
  • Dot11MeshHWMPmaxPREQretries: Maximum number of retries before we suppose the destination to be unreachable
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:255
    • Initial value: 3
    • Flags: constructwriteread
  • Dot11MeshHWMPnetDiameterTraversalTime: Time we suppose the packet to go from one edge of the network to another
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1.024e+08ns
    • Flags: constructwriteread
  • Dot11MeshHWMPpathToRootInterval: Interval between two successive proactive PREQs
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2.048e+09ns
    • Flags: constructwriteread
  • Dot11MeshHWMPperrMinInterval: Minimal interval between to successive PREQs
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1.024e+08ns
    • Flags: constructwriteread
  • Dot11MeshHWMPpreqMinInterval: Minimal interval between to successive PREQs
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1.024e+08ns
    • Flags: constructwriteread
  • Dot11MeshHWMPrannInterval: Lifetime of proactive routing information
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5.12e+09ns
    • Flags: constructwriteread
  • MaxQueueSize: Maximum number of packets we can store when resolving route
    • Set with class: ns3::UintegerValue
    • Underlying type: uint16_t 1:65535
    • Initial value: 255
    • Flags: constructwriteread
  • MaxTtl: Initial value of Time To Live field
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 2:255
    • Initial value: 32
    • Flags: constructwriteread
  • RandomStart: Random delay at first proactive PREQ
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+08ns
    • Flags: constructwriteread
  • RfFlag: Reply and forward flag
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: constructwriteread
  • UnicastDataThreshold: Maximum number of broadcast receivers, when we send a broadcast as a chain of unicasts
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:255
    • Initial value: 1
    • Flags: constructwriteread
  • UnicastPerrThreshold: Maximum number of PERR receivers, when we send a PERR as a chain of unicasts
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:255
    • Initial value: 32
    • Flags: constructwriteread
  • UnicastPreqThreshold: Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:255
    • Initial value: 1
    • Flags: constructwriteread

TraceSources

  • RouteChange: Routing table changed
    Callback signature: ns3::HwmpProtocol::RouteChangeTracedCallback
  • RouteDiscoveryTime: The time of route discovery procedure
    Callback signature: ns3::Time::TracedCallback

Size of this type is 464 bytes (on a 64-bit architecture).

Definition at line 67 of file hwmp-protocol.h.

Member Typedef Documentation

◆ HwmpProtocolMacMap

HwmpProtocolMacMap typedef.

Definition at line 221 of file hwmp-protocol.h.

◆ RouteChangeTracedCallback

RouteChangeTracedCallback typedef.

Definition at line 358 of file hwmp-protocol.h.

Constructor & Destructor Documentation

◆ HwmpProtocol() [1/2]

ns3::dot11s::HwmpProtocol::HwmpProtocol ( )

Definition at line 155 of file hwmp-protocol.cc.

References m_coefficient, and NS_LOG_FUNCTION.

◆ ~HwmpProtocol()

ns3::dot11s::HwmpProtocol::~HwmpProtocol ( )
override

Definition at line 182 of file hwmp-protocol.cc.

References NS_LOG_FUNCTION.

◆ HwmpProtocol() [2/2]

ns3::dot11s::HwmpProtocol::HwmpProtocol ( const HwmpProtocol )
delete

Member Function Documentation

◆ AssignStreams()

int64_t ns3::dot11s::HwmpProtocol::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 1378 of file hwmp-protocol.cc.

References m_coefficient, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

+ Here is the call graph for this function:

◆ DequeueFirstPacket()

HwmpProtocol::QueuedPacket ns3::dot11s::HwmpProtocol::DequeueFirstPacket ( )
private

Dequeue the first packet in the queue.

Returns
the dequeued packet

Definition at line 1037 of file hwmp-protocol.cc.

References m_rqueue, NS_LOG_FUNCTION, and ns3::dot11s::HwmpProtocol::QueuedPacket::pkt.

Referenced by ProactivePathResolved().

+ Here is the caller graph for this function:

◆ DequeueFirstPacketByDst()

HwmpProtocol::QueuedPacket ns3::dot11s::HwmpProtocol::DequeueFirstPacketByDst ( Mac48Address  dst)
private

Dequeue the first packet for a given destination.

Parameters
dstthe destination
Returns
the dequeued packet

Definition at line 1019 of file hwmp-protocol.cc.

References m_rqueue, NS_LOG_FUNCTION, and ns3::dot11s::HwmpProtocol::QueuedPacket::pkt.

Referenced by ReactivePathResolved(), and RetryPathDiscovery().

+ Here is the caller graph for this function:

◆ DoDispose()

void ns3::dot11s::HwmpProtocol::DoDispose ( )
overridevirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overridden 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 201 of file hwmp-protocol.cc.

References ns3::EventId::Cancel(), m_hwmpSeqnoMetricDatabase, m_interfaces, m_lastDataSeqno, ns3::MeshL2RoutingProtocol::m_mp, m_preqTimeouts, m_proactivePreqTimer, m_rqueue, m_rtable, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ DoInitialize()

void ns3::dot11s::HwmpProtocol::DoInitialize ( )
overrideprivatevirtual

Initialize() implementation.

This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 188 of file hwmp-protocol.cc.

References ns3::Time::GetSeconds(), ns3::UniformRandomVariable::GetValue(), m_coefficient, m_isRoot, m_proactivePreqTimer, m_randomStart, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Seconds(), SendProactivePreq(), and ns3::ObjectBase::SetAttribute().

+ Here is the call graph for this function:

◆ DropDataFrame()

bool ns3::dot11s::HwmpProtocol::DropDataFrame ( uint32_t  seqno,
Mac48Address  source 
)
private

MAC-plugin asks whether the frame can be dropped.

Protocol automatically updates seqno.

Returns
true if frame can be dropped
Parameters
seqnois the sequence number of source
sourceis the source address

Definition at line 836 of file hwmp-protocol.cc.

References GetAddress(), m_lastDataSeqno, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ ForwardPathError()

void ns3::dot11s::HwmpProtocol::ForwardPathError ( PathError  perr)
private

Forwards a received path error.

Parameters
perrthe path error

Definition at line 907 of file hwmp-protocol.cc.

References ns3::Time::As(), ns3::dot11s::HwmpProtocol::PathError::destinations, ns3::dot11s::HwmpProtocolMac::ForwardPerr(), ns3::MeshL2RoutingProtocol::GetMeshPoint(), m_interfaces, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dot11s::HwmpProtocol::PathError::receivers, ns3::Simulator::Schedule(), and ns3::Time::US.

Referenced by ReceivePerr().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ForwardUnicast()

bool ns3::dot11s::HwmpProtocol::ForwardUnicast ( uint32_t  sourceIface,
const Mac48Address  source,
const Mac48Address  destination,
Ptr< Packet packet,
uint16_t  protocolType,
RouteReplyCallback  routeReply,
uint32_t  ttl 
)
private

Like RequestRoute, but for unicast packets.

Parameters
sourceIfacethe source interface
sourcethe source address
destinationthe destination address
packetthe packet to route
protocolTypethe protocol type
routeReplythe route reply callback
ttlthe TTL
Returns
true if forwarded

Definition at line 332 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpProtocol::QueuedPacket::dst, GetAddress(), ns3::Mac48Address::GetBroadcast(), ns3::MeshL2RoutingProtocol::GetMeshPoint(), GetNextHwmpSeqno(), ns3::dot11s::HwmpRtable::GetUnreachableDestinations(), ns3::dot11s::HwmpRtable::LookupResult::ifIndex, ns3::dot11s::HwmpProtocol::QueuedPacket::inInterface, ns3::dot11s::HwmpProtocol::Statistics::initiatedPreq, InitiatePathError(), ns3::dot11s::HwmpRtable::LookupProactive(), ns3::dot11s::HwmpRtable::LookupProactiveExpired(), ns3::dot11s::HwmpRtable::LookupReactive(), ns3::dot11s::HwmpRtable::LookupReactiveExpired(), m_interfaces, m_rtable, m_stats, MakePathError(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dot11s::HwmpProtocol::QueuedPacket::pkt, ns3::dot11s::HwmpProtocol::QueuedPacket::protocol, QueuePacket(), ns3::dot11s::HwmpProtocol::QueuedPacket::reply, ns3::dot11s::HwmpRtable::LookupResult::retransmitter, ns3::dot11s::HwmpRtable::LookupResult::seqnum, ns3::dot11s::HwmpTag::SetAddress(), ns3::dot11s::HwmpTag::SetTtl(), ShouldSendPreq(), ns3::dot11s::HwmpProtocol::QueuedPacket::src, ns3::dot11s::HwmpProtocol::Statistics::totalDropped, ns3::dot11s::HwmpProtocol::Statistics::totalQueued, ns3::dot11s::HwmpProtocol::Statistics::txBytes, and ns3::dot11s::HwmpProtocol::Statistics::txUnicast.

Referenced by RequestRoute().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetActivePathLifetime()

uint32_t ns3::dot11s::HwmpProtocol::GetActivePathLifetime ( )
private

Get active path lifetime function.

Returns
the active path lifetime

Definition at line 1261 of file hwmp-protocol.cc.

References ns3::Time::GetMicroSeconds(), and m_dot11MeshHWMPactivePathTimeout.

+ Here is the call graph for this function:

◆ GetAddress()

Mac48Address ns3::dot11s::HwmpProtocol::GetAddress ( )
private
Returns
address of MeshPointDevice

Definition at line 1273 of file hwmp-protocol.cc.

References m_address.

Referenced by DropDataFrame(), ForwardUnicast(), ReceivePerr(), ReceivePrep(), ReceivePreq(), and SendProactivePreq().

+ Here is the caller graph for this function:

◆ GetBroadcastReceivers()

std::vector< Mac48Address > ns3::dot11s::HwmpProtocol::GetBroadcastReceivers ( uint32_t  interface)
private

Get broadcast receivers.

Parameters
interface
Returns
list of addresses where a broadcast should be retransmitted

Definition at line 990 of file hwmp-protocol.cc.

References ns3::Mac48Address::GetBroadcast(), m_neighboursCallback, m_unicastDataThreshold, and NS_LOG_FUNCTION.

Referenced by RequestRoute().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetDoFlag()

bool ns3::dot11s::HwmpProtocol::GetDoFlag ( ) const
private

Get do flag function.

Returns
DO flag

Definition at line 1217 of file hwmp-protocol.cc.

References m_doFlag.

◆ GetMaxTtl()

uint8_t ns3::dot11s::HwmpProtocol::GetMaxTtl ( ) const
private

Get maximum TTL function.

Returns
the maximum TTL

Definition at line 1241 of file hwmp-protocol.cc.

References m_maxTtl.

◆ GetNextHwmpSeqno()

uint32_t ns3::dot11s::HwmpProtocol::GetNextHwmpSeqno ( )
private

Get next HWMP sequence no function.

Returns
the next HWMP sequence number

Definition at line 1254 of file hwmp-protocol.cc.

References m_hwmpSeqno.

Referenced by ForwardUnicast(), ReceivePreq(), RetryPathDiscovery(), and SendProactivePreq().

+ Here is the caller graph for this function:

◆ GetNextPreqId()

uint32_t ns3::dot11s::HwmpProtocol::GetNextPreqId ( )
private

Get next period function.

Returns
the next period

Definition at line 1247 of file hwmp-protocol.cc.

References m_preqId.

Referenced by SendProactivePreq().

+ Here is the caller graph for this function:

◆ GetPerrMinInterval()

Time ns3::dot11s::HwmpProtocol::GetPerrMinInterval ( )
private

Get PERR minimum interval function.

Returns
the PERR minimum interval

Definition at line 1235 of file hwmp-protocol.cc.

References m_dot11MeshHWMPperrMinInterval.

◆ GetPerrReceivers()

std::vector< std::pair< uint32_t, Mac48Address > > ns3::dot11s::HwmpProtocol::GetPerrReceivers ( std::vector< FailedDestination failedDest)
private

Get PERR receivers.

Parameters
failedDest
Returns
list of addresses where a PERR should be sent to

Definition at line 932 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::DeleteProactivePath(), ns3::dot11s::HwmpRtable::DeleteReactivePath(), ns3::dot11s::RouteChange::destination, ns3::dot11s::HwmpRtable::GetPrecursors(), m_routeChangeTraceSource, m_rtable, NS_LOG_FUNCTION, ns3::dot11s::RouteChange::seqnum, and ns3::dot11s::RouteChange::type.

Referenced by MakePathError().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetPreqMinInterval()

Time ns3::dot11s::HwmpProtocol::GetPreqMinInterval ( )
private

Get PREQ minimum interval function.

Returns
the PREQ

Definition at line 1229 of file hwmp-protocol.cc.

References m_dot11MeshHWMPpreqMinInterval.

◆ GetPreqReceivers()

std::vector< Mac48Address > ns3::dot11s::HwmpProtocol::GetPreqReceivers ( uint32_t  interface)
private

Get PREQ receivers.

Parameters
interface
Returns
list of addresses where a PREQ should be sent to

Definition at line 973 of file hwmp-protocol.cc.

References ns3::Mac48Address::GetBroadcast(), m_neighboursCallback, m_unicastPreqThreshold, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ GetRfFlag()

bool ns3::dot11s::HwmpProtocol::GetRfFlag ( ) const
private

Get rf flag function.

Returns
the RF flag

Definition at line 1223 of file hwmp-protocol.cc.

References m_rfFlag.

◆ GetRoutingTable()

Ptr< HwmpRtable > ns3::dot11s::HwmpProtocol::GetRoutingTable ( ) const

Get pointer to HWMP routing table.

Returns
pointer to routing table

Definition at line 1386 of file hwmp-protocol.cc.

References m_rtable.

◆ GetTypeId()

◆ GetUnicastPerrThreshold()

uint8_t ns3::dot11s::HwmpProtocol::GetUnicastPerrThreshold ( ) const
private

Get unicast PERR threshold function.

Returns
the unicast PERR threshold

Definition at line 1267 of file hwmp-protocol.cc.

References m_unicastPerrThreshold.

◆ InitiatePathError()

void ns3::dot11s::HwmpProtocol::InitiatePathError ( PathError  perr)
private

Passes a self-generated PERR to interface-plugin.

Parameters
perrthe path error

Definition at line 889 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpProtocol::PathError::destinations, m_interfaces, NS_LOG_FUNCTION, and ns3::dot11s::HwmpProtocol::PathError::receivers.

Referenced by ForwardUnicast(), and PeerLinkStatus().

+ Here is the caller graph for this function:

◆ Install()

bool ns3::dot11s::HwmpProtocol::Install ( Ptr< MeshPointDevice mp)

Install HWMP on given mesh point.

Parameters
mpthe MeshPointDevice
Returns
true if successful

Installing protocol causes installation of its interface MAC plugins.

Also MP aggregates all installed protocols, HWMP protocol can be accessed via MeshPointDevice::GetObject<dot11s::HwmpProtocol>();

Definition at line 778 of file hwmp-protocol.cc.

References ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::Mac48Address::ConvertFrom(), m_address, m_interfaces, ns3::MeshL2RoutingProtocol::m_mp, ns3::MakeCallback(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ MakePathError()

HwmpProtocol::PathError ns3::dot11s::HwmpProtocol::MakePathError ( std::vector< FailedDestination destinations)
private

forms a path error information element when list of destination fails on a given interface

Attention
removes all entries from routing table!
Parameters
destinationsvector of failed destinations
Returns
PathError

Definition at line 863 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::DeleteReactivePath(), ns3::dot11s::RouteChange::destination, ns3::dot11s::HwmpProtocol::PathError::destinations, GetPerrReceivers(), ns3::dot11s::HwmpProtocol::Statistics::initiatedPerr, m_routeChangeTraceSource, m_rtable, m_stats, NS_LOG_FUNCTION, ns3::dot11s::HwmpProtocol::PathError::receivers, ns3::dot11s::RouteChange::seqnum, and ns3::dot11s::RouteChange::type.

Referenced by ForwardUnicast(), PeerLinkStatus(), and ReceivePerr().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator=()

HwmpProtocol & ns3::dot11s::HwmpProtocol::operator= ( const HwmpProtocol )
delete

◆ PeerLinkStatus()

void ns3::dot11s::HwmpProtocol::PeerLinkStatus ( Mac48Address  meshPointAddress,
Mac48Address  peerAddress,
uint32_t  interface,
bool  status 
)

Peer link status function.

Parameters
meshPointAddressThe MAC address of the mesh point
peerAddressThe MAC address of the peer
interfaceThe interface number
statusThe status of the peer link

Definition at line 814 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::GetUnreachableDestinations(), InitiatePathError(), m_rtable, MakePathError(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::Dot11sStack::InstallStack().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ProactivePathResolved()

◆ QueuePacket()

bool ns3::dot11s::HwmpProtocol::QueuePacket ( QueuedPacket  packet)
private

Queue a packet.

Parameters
packetthe packet to be queued
Returns
true on success

Definition at line 1007 of file hwmp-protocol.cc.

References m_maxQueueSize, m_rqueue, and NS_LOG_FUNCTION.

Referenced by ForwardUnicast().

+ Here is the caller graph for this function:

◆ ReactivePathResolved()

◆ ReceivePerr()

void ns3::dot11s::HwmpProtocol::ReceivePerr ( std::vector< FailedDestination destinations,
Mac48Address  from,
uint32_t  interface,
Mac48Address  fromMp 
)
private

Handler for receiving Path Error.

Parameters
destinationsthe list of failed destinations
fromthe from address
interfacethe interface
fromMpthe from MP address

Definition at line 726 of file hwmp-protocol.cc.

References ForwardPathError(), GetAddress(), ns3::dot11s::HwmpRtable::LookupResult::ifIndex, ns3::dot11s::HwmpRtable::LookupReactiveExpired(), m_rtable, MakePathError(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dot11s::HwmpRtable::LookupResult::retransmitter, and ns3::dot11s::HwmpRtable::LookupResult::seqnum.

+ Here is the call graph for this function:

◆ ReceivePrep()

void ns3::dot11s::HwmpProtocol::ReceivePrep ( IePrep  prep,
Mac48Address  from,
uint32_t  interface,
Mac48Address  fromMp,
uint32_t  metric 
)
private

◆ ReceivePreq()

void ns3::dot11s::HwmpProtocol::ReceivePreq ( IePreq  preq,
Mac48Address  from,
uint32_t  interface,
Mac48Address  fromMp,
uint32_t  metric 
)
private

Handler for receiving Path Request.

Parameters
preqthe IE preq
fromthe from address
interfacethe interface
fromMpthe 'from MP' address
metricthe metric

Definition at line 427 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpRtable::AddPrecursor(), ns3::dot11s::HwmpRtable::AddProactivePath(), ns3::dot11s::HwmpRtable::AddReactivePath(), ns3::Time::As(), ns3::dot11s::IePreq::DelDestinationAddressElement(), ns3::dot11s::RouteChange::destination, GetAddress(), ns3::Mac48Address::GetBroadcast(), ns3::dot11s::IePreq::GetDestCount(), ns3::dot11s::IePreq::GetDestinationList(), ns3::dot11s::IePreq::GetLifetime(), ns3::MeshL2RoutingProtocol::GetMeshPoint(), ns3::dot11s::IePreq::GetMetric(), ns3::Time::GetMicroSeconds(), GetNextHwmpSeqno(), ns3::dot11s::IePreq::GetOriginatorAddress(), ns3::dot11s::IePreq::GetOriginatorSeqNumber(), ns3::dot11s::IePreq::IncrementMetric(), ns3::dot11s::RouteChange::interface, ns3::dot11s::IePreq::IsNeedNotPrep(), ns3::dot11s::RouteChange::lifetime, ns3::dot11s::HwmpRtable::LookupResult::lifetime, ns3::dot11s::HwmpRtable::LookupProactive(), ns3::dot11s::HwmpRtable::LookupReactive(), m_hwmpSeqnoMetricDatabase, m_interfaces, m_routeChangeTraceSource, m_rtable, ns3::dot11s::RouteChange::metric, ns3::dot11s::HwmpRtable::LookupResult::metric, ns3::MicroSeconds(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ProactivePathResolved(), ReactivePathResolved(), ns3::dot11s::RouteChange::retransmitter, ns3::dot11s::HwmpRtable::LookupResult::retransmitter, ns3::Simulator::Schedule(), SendPrep(), ns3::dot11s::HwmpProtocolMac::SendPreq(), ns3::dot11s::RouteChange::seqnum, ns3::dot11s::HwmpRtable::LookupResult::seqnum, ns3::dot11s::RouteChange::type, and ns3::Time::US.

+ Here is the call graph for this function:

◆ RemoveRoutingStuff()

bool ns3::dot11s::HwmpProtocol::RemoveRoutingStuff ( uint32_t  fromIface,
const Mac48Address  source,
const Mac48Address  destination,
Ptr< Packet packet,
uint16_t &  protocolType 
)
overridevirtual

Clean HWMP packet tag from packet; only the packet parameter is used.

Parameters
fromIfacethe from interface
sourcethe source address
destinationthe destination address
packetthe packet to route
protocolTypethe protocol type
Returns
true if successful

Implements ns3::MeshL2RoutingProtocol.

Definition at line 317 of file hwmp-protocol.cc.

References NS_FATAL_ERROR.

◆ Report()

◆ RequestRoute()

bool ns3::dot11s::HwmpProtocol::RequestRoute ( uint32_t  sourceIface,
const Mac48Address  source,
const Mac48Address  destination,
Ptr< const Packet packet,
uint16_t  protocolType,
MeshL2RoutingProtocol::RouteReplyCallback  routeReply 
)
overridevirtual

Route request, inherited from MeshL2RoutingProtocol.

Parameters
sourceIfacethe source interface
sourcethe source address
destinationthe destination address
packetthe packet to route
protocolTypethe protocol type
routeReplythe route reply
Returns
true if route exists

Implements ns3::MeshL2RoutingProtocol.

Definition at line 221 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpTag::DecrementTtl(), ns3::dot11s::HwmpProtocol::Statistics::droppedTtl, ForwardUnicast(), ns3::Mac48Address::GetBroadcast(), GetBroadcastReceivers(), ns3::MeshL2RoutingProtocol::GetMeshPoint(), ns3::dot11s::HwmpTag::GetTtl(), m_dataSeqno, m_interfaces, m_maxTtl, m_stats, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::dot11s::HwmpTag::SetAddress(), ns3::dot11s::HwmpTag::SetSeqno(), ns3::dot11s::HwmpTag::SetTtl(), ns3::dot11s::HwmpProtocol::Statistics::txBroadcast, and ns3::dot11s::HwmpProtocol::Statistics::txBytes.

+ Here is the call graph for this function:

◆ ResetStats()

void ns3::dot11s::HwmpProtocol::ResetStats ( )

Reset Statistics:

Definition at line 1365 of file hwmp-protocol.cc.

References m_interfaces, m_stats, and NS_LOG_FUNCTION.

◆ RetryPathDiscovery()

◆ SendPrep()

void ns3::dot11s::HwmpProtocol::SendPrep ( Mac48Address  src,
Mac48Address  dst,
Mac48Address  retransmitter,
uint32_t  initMetric,
uint32_t  originatorDsn,
uint32_t  destinationSN,
uint32_t  lifetime,
uint32_t  interface 
)
private

Send Path Reply.

Parameters
srcthe source address
dstthe destination address
retransmitterthe retransmitter address
initMetricthe initial metric
originatorDsnthe originator DSN
destinationSNthe destination DSN
lifetimethe lifetime
interfacethe interface

Definition at line 753 of file hwmp-protocol.cc.

References ns3::dot11s::HwmpProtocol::Statistics::initiatedPrep, m_interfaces, m_maxTtl, m_stats, NS_ASSERT, ns3::dot11s::IePrep::SetDestinationAddress(), ns3::dot11s::IePrep::SetDestinationSeqNumber(), ns3::dot11s::IePrep::SetHopcount(), ns3::dot11s::IePrep::SetLifetime(), ns3::dot11s::IePrep::SetMetric(), ns3::dot11s::IePrep::SetOriginatorAddress(), ns3::dot11s::IePrep::SetOriginatorSeqNumber(), and ns3::dot11s::IePrep::SetTtl().

Referenced by ReceivePreq().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendProactivePreq()

◆ SetNeighboursCallback()

void ns3::dot11s::HwmpProtocol::SetNeighboursCallback ( Callback< std::vector< Mac48Address >, uint32_t cb)

This callback is used to obtain active neighbours on a given interface.

Parameters
cbis a callback, which returns a list of addresses on given interface (uint32_t)

Definition at line 830 of file hwmp-protocol.cc.

References m_neighboursCallback.

◆ SetRoot()

void ns3::dot11s::HwmpProtocol::SetRoot ( )

Unset the current node as root.

Definition at line 1178 of file hwmp-protocol.cc.

References m_address, m_isRoot, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

◆ ShouldSendPreq()

bool ns3::dot11s::HwmpProtocol::ShouldSendPreq ( Mac48Address  dst)
private

checks when the last path discovery procedure was started for a given destination.

Returns
true if should send PREQ
Parameters
dstis the destination address

If the retry counter has not achieved the maximum level - preq should not be sent

Definition at line 1106 of file hwmp-protocol.cc.

References m_dot11MeshHWMPnetDiameterTraversalTime, m_preqTimeouts, ns3::Simulator::Now(), NS_LOG_FUNCTION, RetryPathDiscovery(), and ns3::Simulator::Schedule().

Referenced by ForwardUnicast().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UnsetRoot()

void ns3::dot11s::HwmpProtocol::UnsetRoot ( )

Unset the current node as root.

Definition at line 1186 of file hwmp-protocol.cc.

References ns3::EventId::Cancel(), m_proactivePreqTimer, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Friends And Related Function Documentation

◆ HwmpProtocolMac

friend class HwmpProtocolMac
friend

allow HwmpProtocolMac class friend access

Definition at line 190 of file hwmp-protocol.h.

Member Data Documentation

◆ m_address

Mac48Address ns3::dot11s::HwmpProtocol::m_address
private

address

Definition at line 492 of file hwmp-protocol.h.

Referenced by GetAddress(), Install(), Report(), and SetRoot().

◆ m_coefficient

Ptr<UniformRandomVariable> ns3::dot11s::HwmpProtocol::m_coefficient
private

Random variable for random start time.

coefficient

Definition at line 548 of file hwmp-protocol.h.

Referenced by HwmpProtocol(), AssignStreams(), and DoInitialize().

◆ m_dataSeqno

uint32_t ns3::dot11s::HwmpProtocol::m_dataSeqno
private

data sequence no

Definition at line 493 of file hwmp-protocol.h.

Referenced by RequestRoute().

◆ m_doFlag

bool ns3::dot11s::HwmpProtocol::m_doFlag
private

Destination only HWMP flag.

Definition at line 543 of file hwmp-protocol.h.

Referenced by GetDoFlag(), GetTypeId(), and Report().

◆ m_dot11MeshHWMPactivePathTimeout

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactivePathTimeout
private

Lifetime of reactive routing information.

Definition at line 532 of file hwmp-protocol.h.

Referenced by GetActivePathLifetime(), GetTypeId(), and Report().

◆ m_dot11MeshHWMPactiveRootTimeout

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactiveRootTimeout
private

Lifetime of proactive routing information.

Definition at line 531 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and SendProactivePreq().

◆ m_dot11MeshHWMPmaxPREQretries

uint8_t ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPmaxPREQretries
private

Maximum number of retries before we suppose the destination to be unreachable.

Definition at line 525 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and RetryPathDiscovery().

◆ m_dot11MeshHWMPnetDiameterTraversalTime

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPnetDiameterTraversalTime
private

Time we suppose the packet to go from one edge of the network to another.

Definition at line 527 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), RetryPathDiscovery(), and ShouldSendPreq().

◆ m_dot11MeshHWMPpathToRootInterval

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpathToRootInterval
private

Interval between two successive proactive PREQs.

Definition at line 533 of file hwmp-protocol.h.

Referenced by GetTypeId(), Report(), and SendProactivePreq().

◆ m_dot11MeshHWMPperrMinInterval

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPperrMinInterval
private

Minimal interval between to successive PREQs.

Definition at line 530 of file hwmp-protocol.h.

Referenced by GetPerrMinInterval(), GetTypeId(), and Report().

◆ m_dot11MeshHWMPpreqMinInterval

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpreqMinInterval
private

Minimal interval between to successive PREQs.

Definition at line 529 of file hwmp-protocol.h.

Referenced by GetPreqMinInterval(), GetTypeId(), and Report().

◆ m_dot11MeshHWMPrannInterval

Time ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPrannInterval
private

Lifetime of proactive routing information.

Definition at line 534 of file hwmp-protocol.h.

Referenced by GetTypeId(), and Report().

◆ m_hwmpSeqno

uint32_t ns3::dot11s::HwmpProtocol::m_hwmpSeqno
private

HWMP sequence no.

Definition at line 494 of file hwmp-protocol.h.

Referenced by GetNextHwmpSeqno().

◆ m_hwmpSeqnoMetricDatabase

std::map<Mac48Address, std::pair<uint32_t, uint32_t> > ns3::dot11s::HwmpProtocol::m_hwmpSeqnoMetricDatabase
private

keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address

Definition at line 501 of file hwmp-protocol.h.

Referenced by DoDispose(), ReceivePrep(), and ReceivePreq().

◆ m_interfaces

◆ m_isRoot

bool ns3::dot11s::HwmpProtocol::m_isRoot
private

True if the node is a root.

Definition at line 535 of file hwmp-protocol.h.

Referenced by DoInitialize(), Report(), and SetRoot().

◆ m_lastDataSeqno

std::map<Mac48Address, uint32_t> ns3::dot11s::HwmpProtocol::m_lastDataSeqno
private

keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address

Definition at line 499 of file hwmp-protocol.h.

Referenced by DoDispose(), and DropDataFrame().

◆ m_maxQueueSize

uint16_t ns3::dot11s::HwmpProtocol::m_maxQueueSize
private

Maximum number of packets we can store when resolving route.

Definition at line 524 of file hwmp-protocol.h.

Referenced by GetTypeId(), QueuePacket(), and Report().

◆ m_maxTtl

uint8_t ns3::dot11s::HwmpProtocol::m_maxTtl
private

Initial value of Time To Live field.

Definition at line 536 of file hwmp-protocol.h.

Referenced by GetMaxTtl(), GetTypeId(), Report(), RequestRoute(), SendPrep(), and SendProactivePreq().

◆ m_neighboursCallback

Callback<std::vector<Mac48Address>, uint32_t> ns3::dot11s::HwmpProtocol::m_neighboursCallback
private

neighbors callback

Definition at line 549 of file hwmp-protocol.h.

Referenced by GetBroadcastReceivers(), GetPreqReceivers(), and SetNeighboursCallback().

◆ m_preqId

uint32_t ns3::dot11s::HwmpProtocol::m_preqId
private

PREQ ID.

Definition at line 495 of file hwmp-protocol.h.

Referenced by GetNextPreqId().

◆ m_preqTimeouts

std::map<Mac48Address, PreqEvent> ns3::dot11s::HwmpProtocol::m_preqTimeouts
private

PREQ timeouts.

Definition at line 514 of file hwmp-protocol.h.

Referenced by DoDispose(), ReactivePathResolved(), RetryPathDiscovery(), and ShouldSendPreq().

◆ m_proactivePreqTimer

EventId ns3::dot11s::HwmpProtocol::m_proactivePreqTimer
private

proactive PREQ timer

Definition at line 515 of file hwmp-protocol.h.

Referenced by DoDispose(), DoInitialize(), SendProactivePreq(), and UnsetRoot().

◆ m_randomStart

Time ns3::dot11s::HwmpProtocol::m_randomStart
private

Random start in Proactive PREQ propagation.

Definition at line 517 of file hwmp-protocol.h.

Referenced by DoInitialize(), and GetTypeId().

◆ m_rfFlag

bool ns3::dot11s::HwmpProtocol::m_rfFlag
private

Reply and forward flag.

Definition at line 544 of file hwmp-protocol.h.

Referenced by GetRfFlag(), GetTypeId(), and Report().

◆ m_routeChangeTraceSource

TracedCallback<RouteChange> ns3::dot11s::HwmpProtocol::m_routeChangeTraceSource
private

Route change trace source.

Definition at line 360 of file hwmp-protocol.h.

Referenced by GetPerrReceivers(), GetTypeId(), MakePathError(), ReceivePrep(), and ReceivePreq().

◆ m_routeDiscoveryTimeCallback

TracedCallback<Time> ns3::dot11s::HwmpProtocol::m_routeDiscoveryTimeCallback
private

Route discovery time:

Definition at line 356 of file hwmp-protocol.h.

Referenced by GetTypeId(), ReactivePathResolved(), and RetryPathDiscovery().

◆ m_rqueue

std::vector<QueuedPacket> ns3::dot11s::HwmpProtocol::m_rqueue
private

◆ m_rtable

◆ m_stats

Statistics ns3::dot11s::HwmpProtocol::m_stats
private

◆ m_unicastDataThreshold

uint8_t ns3::dot11s::HwmpProtocol::m_unicastDataThreshold
private

Maximum number of broadcast receivers, when we send a broadcast as a chain of unicasts.

Definition at line 541 of file hwmp-protocol.h.

Referenced by GetBroadcastReceivers(), GetTypeId(), and Report().

◆ m_unicastPerrThreshold

uint8_t ns3::dot11s::HwmpProtocol::m_unicastPerrThreshold
private

Maximum number of PERR receivers, when we send a PERR as a chain of unicasts.

Definition at line 537 of file hwmp-protocol.h.

Referenced by GetTypeId(), GetUnicastPerrThreshold(), and Report().

◆ m_unicastPreqThreshold

uint8_t ns3::dot11s::HwmpProtocol::m_unicastPreqThreshold
private

Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts.

Definition at line 539 of file hwmp-protocol.h.

Referenced by GetPreqReceivers(), GetTypeId(), and Report().


The documentation for this class was generated from the following files: