A Discrete-Event Network Simulator
API
hwmp-protocol.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2008,2009 IITP RAS
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Authors: Kirill Andreev <andreev@iitp.ru>
19  */
20 
21 #ifndef HWMP_PROTOCOL_H
22 #define HWMP_PROTOCOL_H
23 
24 #include "ns3/mesh-l2-routing-protocol.h"
25 #include "ns3/nstime.h"
26 #include "ns3/event-id.h"
27 #include "ns3/traced-value.h"
28 #include <vector>
29 #include <map>
30 
31 namespace ns3 {
32 class MeshPointDevice;
33 class Packet;
34 class Mac48Address;
35 class UniformRandomVariable;
36 namespace dot11s {
37 class HwmpProtocolMac;
38 class HwmpRtable;
39 class IePerr;
40 class IePreq;
41 class IePrep;
42 
47 {
48  std::string type;
51  uint32_t interface;
52  uint32_t metric;
54  uint32_t seqnum;
55 };
63 {
64 public:
69  static TypeId GetTypeId ();
70  HwmpProtocol ();
71  ~HwmpProtocol ();
72  void DoDispose ();
73 
78  {
80  uint32_t seqnum;
81  };
82 
94  bool RequestRoute (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination,
95  Ptr<const Packet> packet, uint16_t protocolType, RouteReplyCallback routeReply);
106  bool RemoveRoutingStuff (uint32_t fromIface, const Mac48Address source,
107  const Mac48Address destination, Ptr<Packet> packet, uint16_t& protocolType);
118  bool Install (Ptr<MeshPointDevice> mp);
126  void PeerLinkStatus (Mac48Address meshPontAddress, Mac48Address peerAddress, uint32_t interface,bool status);
131  void SetNeighboursCallback (Callback<std::vector<Mac48Address>, uint32_t> cb);
135  void SetRoot ();
137  void UnsetRoot ();
139 
142 
146  void Report (std::ostream & os) const;
148  void ResetStats ();
150 
159  int64_t AssignStreams (int64_t stream);
160 
165  Ptr<HwmpRtable> GetRoutingTable (void) const;
166 
167 private:
169  friend class HwmpProtocolMac;
170 
171  virtual void DoInitialize ();
172 
183  HwmpProtocol (const HwmpProtocol & hwmp);
184 
189  struct PathError
190  {
191  std::vector<FailedDestination> destinations;
192  std::vector<std::pair<uint32_t, Mac48Address> > receivers;
193  };
196  {
200  uint16_t protocol;
201  uint32_t inInterface;
203 
204  QueuedPacket ();
205  };
206  typedef std::map<uint32_t, Ptr<HwmpProtocolMac> > HwmpProtocolMacMap;
207 
219  bool ForwardUnicast (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination,
220  Ptr<Packet> packet, uint16_t protocolType, RouteReplyCallback routeReply, uint32_t ttl);
221 
224 
233  void ReceivePreq (IePreq preq, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric);
243  void ReceivePrep (IePrep prep, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric);
252  void ReceivePerr (std::vector<FailedDestination> destinations, Mac48Address from, uint32_t interface, Mac48Address fromMp);
264  void SendPrep (
265  Mac48Address src,
266  Mac48Address dst,
267  Mac48Address retransmitter,
268  uint32_t initMetric,
269  uint32_t originatorDsn,
270  uint32_t destinationSN,
271  uint32_t lifetime,
272  uint32_t interface);
280  PathError MakePathError (std::vector<FailedDestination> destinations);
285  void ForwardPathError (PathError perr);
290  void InitiatePathError (PathError perr);
297  std::vector<std::pair<uint32_t, Mac48Address> > GetPerrReceivers (std::vector<FailedDestination> failedDest);
298 
305  std::vector<Mac48Address> GetPreqReceivers (uint32_t interface);
312  std::vector<Mac48Address> GetBroadcastReceivers (uint32_t interface);
320  bool DropDataFrame (uint32_t seqno, Mac48Address source);
322 
329 
330  // /\name Methods related to Queue/Dequeue procedures
332 
337  bool QueuePacket (QueuedPacket packet);
357  void ProactivePathResolved ();
359 
362 
369  bool ShouldSendPreq (Mac48Address dst);
370 
378  void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry);
380  void SendProactivePreq ();
382 
387 
391  bool GetDoFlag ();
396  bool GetRfFlag ();
411  uint8_t GetMaxTtl ();
416  uint32_t GetNextPreqId ();
421  uint32_t GetNextHwmpSeqno ();
426  uint32_t GetActivePathLifetime ();
431  uint8_t GetUnicastPerrThreshold ();
433 
434 private:
436  struct Statistics
437  {
438  uint16_t txUnicast;
439  uint16_t txBroadcast;
440  uint32_t txBytes;
441  uint16_t droppedTtl;
442  uint16_t totalQueued;
443  uint16_t totalDropped;
444  uint16_t initiatedPreq;
445  uint16_t initiatedPrep;
446  uint16_t initiatedPerr;
447 
452  void Print (std::ostream & os) const;
454  Statistics ();
455  };
457 
460  uint32_t m_dataSeqno;
461  uint32_t m_hwmpSeqno;
462  uint32_t m_preqId;
463  std::map<Mac48Address, uint32_t> m_lastDataSeqno;
468  std::map<Mac48Address, std::pair<uint32_t, uint32_t> > m_hwmpSeqnoMetricDatabase;
470 
473 
475  struct PreqEvent {
478  };
479 
480  std::map<Mac48Address, PreqEvent> m_preqTimeouts;
485  std::vector<QueuedPacket> m_rqueue;
486 
490  uint16_t m_maxQueueSize;
499  bool m_isRoot;
500  uint8_t m_maxTtl;
504  bool m_doFlag;
505  bool m_rfFlag;
506 
511 };
512 } // namespace dot11s
513 } // namespace ns3
514 #endif
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::dot11s::HwmpProtocol::m_address
Mac48Address m_address
address
Definition: hwmp-protocol.h:459
ns3::dot11s::HwmpProtocol::m_rfFlag
bool m_rfFlag
Reply and forward flag.
Definition: hwmp-protocol.h:505
ns3::dot11s::HwmpProtocol::QueuedPacket::dst
Mac48Address dst
dst address
Definition: hwmp-protocol.h:199
ns3::dot11s::HwmpProtocol::operator=
HwmpProtocol & operator=(const HwmpProtocol &hwmp)
assignment operator
ns3::dot11s::HwmpProtocol::ForwardUnicast
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.
Definition: hwmp-protocol.cc:335
ns3::dot11s::HwmpProtocol::DequeueFirstPacket
QueuedPacket DequeueFirstPacket()
Dequeue the first packet in the queue.
Definition: hwmp-protocol.cc:1001
ns3::dot11s::HwmpProtocol::QueuedPacket::QueuedPacket
QueuedPacket()
Definition: hwmp-protocol.cc:1292
ns3::dot11s::HwmpProtocol::GetRfFlag
bool GetRfFlag()
Get rf flag function.
Definition: hwmp-protocol.cc:1167
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPnetDiameterTraversalTime
Time m_dot11MeshHWMPnetDiameterTraversalTime
Time we suppose the packet to go from one edge of the network to another.
Definition: hwmp-protocol.h:492
ns3::dot11s::RouteChange::type
std::string type
type of change
Definition: hwmp-protocol.h:48
ns3::dot11s::RouteChange
Structure to encapsulate route change information.
Definition: hwmp-protocol.h:47
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3::Callback
Callback template class.
Definition: callback.h:1279
ns3::dot11s::HwmpProtocol::RouteChangeTracedCallback
TracedCallback< struct RouteChange > RouteChangeTracedCallback
RouteChangeTracedCallback typedef.
Definition: hwmp-protocol.h:326
ns3::dot11s::HwmpProtocol::m_doFlag
bool m_doFlag
Destination only HWMP flag.
Definition: hwmp-protocol.h:504
ns3::dot11s::HwmpProtocol::UnsetRoot
void UnsetRoot()
Unset the current node as root.
Definition: hwmp-protocol.cc:1135
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::dot11s::RouteChange::destination
Mac48Address destination
route destination
Definition: hwmp-protocol.h:49
ns3::dot11s::HwmpProtocol::QueuedPacket::pkt
Ptr< Packet > pkt
the packet
Definition: hwmp-protocol.h:197
ns3::dot11s::HwmpProtocol::ProactivePathResolved
void ProactivePathResolved()
Signal the protocol that the proactive path is now available.
Definition: hwmp-protocol.cc:1043
ns3::dot11s::HwmpProtocol::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition: hwmp-protocol.cc:47
ns3::dot11s::HwmpProtocol::HwmpProtocolMacMap
std::map< uint32_t, Ptr< HwmpProtocolMac > > HwmpProtocolMacMap
HwmpProtocolMacMap typedef.
Definition: hwmp-protocol.h:206
ns3::dot11s::HwmpProtocol::GetDoFlag
bool GetDoFlag()
Get do flag function.
Definition: hwmp-protocol.cc:1162
ns3::dot11s::HwmpProtocol::m_proactivePreqTimer
EventId m_proactivePreqTimer
proactive PREQ timer
Definition: hwmp-protocol.h:481
ns3::dot11s::HwmpProtocol::m_preqId
uint32_t m_preqId
PREQ ID.
Definition: hwmp-protocol.h:462
ns3::dot11s::HwmpProtocol::m_unicastDataThreshold
uint8_t m_unicastDataThreshold
Maximum number of broadcast receivers, when we send a broadcast as a chain of unicasts.
Definition: hwmp-protocol.h:503
ns3::dot11s::HwmpProtocol::RemoveRoutingStuff
bool RemoveRoutingStuff(uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType)
Clean HWMP packet tag from packet; only the packet parameter is used.
Definition: hwmp-protocol.cc:324
ns3::dot11s::HwmpProtocol::m_randomStart
Time m_randomStart
Random start in Proactive PREQ propagation.
Definition: hwmp-protocol.h:483
ns3::MeshL2RoutingProtocol
Interface for L2 mesh routing protocol and mesh point communication.
Definition: mesh-l2-routing-protocol.h:45
ns3::dot11s::HwmpProtocol::~HwmpProtocol
~HwmpProtocol()
Definition: hwmp-protocol.cc:206
ns3::dot11s::HwmpProtocol::ReceivePerr
void ReceivePerr(std::vector< FailedDestination > destinations, Mac48Address from, uint32_t interface, Mac48Address fromMp)
Handler for receiving Path Error.
Definition: hwmp-protocol.cc:714
ns3::dot11s::HwmpProtocol::m_hwmpSeqnoMetricDatabase
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
Definition: hwmp-protocol.h:468
ns3::Mac48Address
an EUI-48 address
Definition: mac48-address.h:44
ns3::dot11s::HwmpProtocol::m_dataSeqno
uint32_t m_dataSeqno
data sequence no
Definition: hwmp-protocol.h:460
ns3::dot11s::HwmpProtocol::m_interfaces
HwmpProtocolMacMap m_interfaces
interfaces
Definition: hwmp-protocol.h:458
ns3::dot11s::HwmpProtocol::MakePathError
PathError MakePathError(std::vector< FailedDestination > destinations)
forms a path error information element when list of destination fails on a given interface
Definition: hwmp-protocol.cc:838
ns3::dot11s::HwmpProtocol::GetPerrReceivers
std::vector< std::pair< uint32_t, Mac48Address > > GetPerrReceivers(std::vector< FailedDestination > failedDest)
Get PERR receivers.
Definition: hwmp-protocol.cc:898
ns3::dot11s::HwmpProtocol::Statistics::Statistics
Statistics()
constructor
Definition: hwmp-protocol.cc:1214
ns3::dot11s::HwmpProtocol::m_lastDataSeqno
std::map< Mac48Address, uint32_t > m_lastDataSeqno
keeps HWMP seqno (first in pair) and HWMP metric (second in pair) for each address
Definition: hwmp-protocol.h:466
ns3::dot11s::HwmpProtocol::Statistics
Statistics structure.
Definition: hwmp-protocol.h:437
ns3::dot11s::RouteChange::metric
uint32_t metric
metric of route
Definition: hwmp-protocol.h:52
ns3::dot11s::HwmpProtocol::QueuedPacket
Packet waiting its routing information.
Definition: hwmp-protocol.h:196
ns3::dot11s::HwmpProtocol::GetPreqMinInterval
Time GetPreqMinInterval()
Get PREQ minimum interval function.
Definition: hwmp-protocol.cc:1172
ns3::dot11s::RouteChange::retransmitter
Mac48Address retransmitter
route source
Definition: hwmp-protocol.h:50
ns3::dot11s::HwmpProtocol::GetMaxTtl
uint8_t GetMaxTtl()
Get maximum TTL function.
Definition: hwmp-protocol.cc:1182
ns3::dot11s::HwmpProtocol::PeerLinkStatus
void PeerLinkStatus(Mac48Address meshPontAddress, Mac48Address peerAddress, uint32_t interface, bool status)
Peer link status function.
Definition: hwmp-protocol.cc:798
ns3::dot11s::HwmpProtocol::DoDispose
void DoDispose()
Destructor implementation.
Definition: hwmp-protocol.cc:224
ns3::Ptr< const Packet >
ns3::dot11s::HwmpProtocol::GetAddress
Mac48Address GetAddress()
Definition: hwmp-protocol.cc:1209
ns3::dot11s::HwmpProtocol::QueuedPacket::protocol
uint16_t protocol
protocol number
Definition: hwmp-protocol.h:200
ns3::dot11s::HwmpProtocol::DropDataFrame
bool DropDataFrame(uint32_t seqno, Mac48Address source)
MAC-plugin asks whether the frame can be dropped.
Definition: hwmp-protocol.cc:815
ns3::dot11s::HwmpProtocol::Install
bool Install(Ptr< MeshPointDevice > mp)
Install HWMP on given mesh point.
Definition: hwmp-protocol.cc:765
ns3::dot11s::HwmpProtocol::PreqEvent::whenScheduled
Time whenScheduled
scheduled time
Definition: hwmp-protocol.h:477
ns3::dot11s::HwmpProtocol::Statistics::txUnicast
uint16_t txUnicast
transmit unicast
Definition: hwmp-protocol.h:438
ns3::dot11s::IePreq
See 7.3.2.96 of 802.11s draft 2.07.
Definition: ie-dot11s-preq.h:103
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactiveRootTimeout
Time m_dot11MeshHWMPactiveRootTimeout
Lifetime of proactive routing information.
Definition: hwmp-protocol.h:495
ns3::dot11s::HwmpProtocol::m_unicastPerrThreshold
uint8_t m_unicastPerrThreshold
Maximum number of PERR receivers, when we send a PERR as a chain of unicasts.
Definition: hwmp-protocol.h:501
ns3::dot11s::HwmpProtocol::m_rqueue
std::vector< QueuedPacket > m_rqueue
Packet Queue.
Definition: hwmp-protocol.h:485
ns3::dot11s::HwmpProtocol::DoInitialize
virtual void DoInitialize()
Initialize() implementation.
Definition: hwmp-protocol.cc:212
ns3::dot11s::HwmpProtocol::m_coefficient
Ptr< UniformRandomVariable > m_coefficient
Random variable for random start time.
Definition: hwmp-protocol.h:509
ns3::dot11s::HwmpProtocol::Statistics::initiatedPrep
uint16_t initiatedPrep
initiated PREP
Definition: hwmp-protocol.h:445
ns3::dot11s::HwmpProtocol::QueuedPacket::reply
RouteReplyCallback reply
how to reply
Definition: hwmp-protocol.h:202
ns3::dot11s::HwmpProtocol::Statistics::droppedTtl
uint16_t droppedTtl
dropped TTL
Definition: hwmp-protocol.h:441
ns3::dot11s::HwmpProtocol::GetActivePathLifetime
uint32_t GetActivePathLifetime()
Get active path lifetime function.
Definition: hwmp-protocol.cc:1199
ns3::dot11s::HwmpProtocol::DequeueFirstPacketByDst
QueuedPacket DequeueFirstPacketByDst(Mac48Address dst)
Dequeue the first packet for a given destination.
Definition: hwmp-protocol.cc:983
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::dot11s::HwmpProtocol::m_isRoot
bool m_isRoot
True if the node is a root.
Definition: hwmp-protocol.h:499
ns3::dot11s::HwmpProtocol::Statistics::totalQueued
uint16_t totalQueued
total queued
Definition: hwmp-protocol.h:442
ns3::dot11s::HwmpProtocol::PreqEvent
PreqEvent structure.
Definition: hwmp-protocol.h:475
ns3::dot11s::HwmpProtocol::Statistics::initiatedPerr
uint16_t initiatedPerr
initiated PERR
Definition: hwmp-protocol.h:446
ns3::dot11s::HwmpProtocol::GetRoutingTable
Ptr< HwmpRtable > GetRoutingTable(void) const
Get pointer to HWMP routing table.
Definition: hwmp-protocol.cc:1287
ns3::dot11s::HwmpProtocol::HwmpProtocol
HwmpProtocol(const HwmpProtocol &hwmp)
Copy constructor - defined but not implemented (on purpose)
ns3::dot11s::HwmpProtocol::RetryPathDiscovery
void RetryPathDiscovery(Mac48Address dst, uint8_t numOfRetry)
Generates PREQ retry when retry timeout has expired and route is still unresolved.
Definition: hwmp-protocol.cc:1084
ns3::dot11s::HwmpProtocol::GetPreqReceivers
std::vector< Mac48Address > GetPreqReceivers(uint32_t interface)
Get PREQ receivers.
Definition: hwmp-protocol.cc:938
ns3::dot11s::HwmpProtocol::ResetStats
void ResetStats()
Reset Statistics:
Definition: hwmp-protocol.cc:1268
ns3::dot11s::HwmpProtocol::SetRoot
void SetRoot()
Unset the current node as root.
Definition: hwmp-protocol.cc:1128
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpreqMinInterval
Time m_dot11MeshHWMPpreqMinInterval
Minimal interval between to successive PREQs.
Definition: hwmp-protocol.h:493
ns3::dot11s::HwmpProtocol::Statistics::totalDropped
uint16_t totalDropped
total dropped
Definition: hwmp-protocol.h:443
ns3::dot11s::HwmpProtocol
Hybrid wireless mesh protocol – a mesh routing protocol defined in IEEE 802.11-2012 standard.
Definition: hwmp-protocol.h:63
ns3::dot11s::HwmpProtocol::PreqEvent::preqTimeout
EventId preqTimeout
PREQ timeout.
Definition: hwmp-protocol.h:476
ns3::dot11s::HwmpProtocol::HwmpProtocol
HwmpProtocol()
Definition: hwmp-protocol.cc:179
ns3::dot11s::HwmpProtocol::Statistics::txBytes
uint32_t txBytes
transmit bytes
Definition: hwmp-protocol.h:440
ns3::dot11s::HwmpProtocol::FailedDestination::seqnum
uint32_t seqnum
sequence number
Definition: hwmp-protocol.h:80
ns3::dot11s::HwmpProtocol::PathError::destinations
std::vector< FailedDestination > destinations
destination list: Mac48Address and sequence number
Definition: hwmp-protocol.h:191
ns3::dot11s::HwmpProtocol::GetUnicastPerrThreshold
uint8_t GetUnicastPerrThreshold()
Get unicast PERR threshold function.
Definition: hwmp-protocol.cc:1204
ns3::dot11s::HwmpProtocol::SendPrep
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.
Definition: hwmp-protocol.cc:740
ns3::dot11s::HwmpProtocol::FailedDestination::destination
Mac48Address destination
destination address
Definition: hwmp-protocol.h:79
ns3::dot11s::HwmpProtocolMac
Interface MAC plugin for HWMP – 802.11s routing protocol.
Definition: hwmp-protocol-mac.h:44
ns3::dot11s::HwmpProtocol::ForwardPathError
void ForwardPathError(PathError perr)
Forwards a received path error.
Definition: hwmp-protocol.cc:880
ns3::dot11s::HwmpProtocol::m_neighboursCallback
Callback< std::vector< Mac48Address >, uint32_t > m_neighboursCallback
neighbors callback
Definition: hwmp-protocol.h:510
ns3::dot11s::HwmpProtocol::GetBroadcastReceivers
std::vector< Mac48Address > GetBroadcastReceivers(uint32_t interface)
Get broadcast receivers.
Definition: hwmp-protocol.cc:954
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPperrMinInterval
Time m_dot11MeshHWMPperrMinInterval
Minimal interval between to successive PREQs.
Definition: hwmp-protocol.h:494
ns3::dot11s::HwmpProtocol::Report
void Report(std::ostream &os) const
Statistics:
Definition: hwmp-protocol.cc:1240
ns3::dot11s::HwmpProtocol::AssignStreams
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
Definition: hwmp-protocol.cc:1279
ns3::dot11s::HwmpProtocol::m_rtable
Ptr< HwmpRtable > m_rtable
Routing table.
Definition: hwmp-protocol.h:472
ns3::dot11s::HwmpProtocol::SendProactivePreq
void SendProactivePreq()
Proactive Preq routines:
Definition: hwmp-protocol.cc:1141
ns3::dot11s::RouteChange::interface
uint32_t interface
interface index
Definition: hwmp-protocol.h:51
ns3::dot11s::HwmpProtocol::GetPerrMinInterval
Time GetPerrMinInterval()
Get PERR minimum interval function.
Definition: hwmp-protocol.cc:1177
ns3::dot11s::HwmpProtocol::RequestRoute
bool RequestRoute(uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< const Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply)
Route request, inherited from MeshL2RoutingProtocol.
Definition: hwmp-protocol.cc:242
ns3::dot11s::HwmpProtocol::m_routeDiscoveryTimeCallback
TracedCallback< Time > m_routeDiscoveryTimeCallback
Route discovery time:
Definition: hwmp-protocol.h:324
ns3::dot11s::HwmpProtocol::GetNextHwmpSeqno
uint32_t GetNextHwmpSeqno()
Get next HWMP sequence no function.
Definition: hwmp-protocol.cc:1193
ns3::dot11s::HwmpProtocol::GetNextPreqId
uint32_t GetNextPreqId()
Get next period function.
Definition: hwmp-protocol.cc:1187
ns3::dot11s::IePrep
See 7.3.2.97 of 802.11s draft 2.07.
Definition: ie-dot11s-prep.h:34
ns3::dot11s::RouteChange::lifetime
Time lifetime
lifetime of route
Definition: hwmp-protocol.h:53
ns3::dot11s::HwmpProtocol::ReactivePathResolved
void ReactivePathResolved(Mac48Address dst)
Signal the protocol that the reactive path toward a destination is now available.
Definition: hwmp-protocol.cc:1015
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPmaxPREQretries
uint8_t m_dot11MeshHWMPmaxPREQretries
Maximum number of retries before we suppose the destination to be unreachable.
Definition: hwmp-protocol.h:491
ns3::dot11s::HwmpProtocol::ReceivePreq
void ReceivePreq(IePreq preq, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
Handler for receiving Path Request.
Definition: hwmp-protocol.cc:420
ns3::dot11s::HwmpProtocol::Statistics::Print
void Print(std::ostream &os) const
Print function.
Definition: hwmp-protocol.cc:1226
ns3::TracedCallback
Forward calls to a chain of Callback.
Definition: traced-callback.h:53
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPrannInterval
Time m_dot11MeshHWMPrannInterval
Lifetime of proactive routing information.
Definition: hwmp-protocol.h:498
ns3::dot11s::HwmpProtocol::m_preqTimeouts
std::map< Mac48Address, PreqEvent > m_preqTimeouts
PREQ timeouts.
Definition: hwmp-protocol.h:480
ns3::dot11s::HwmpProtocol::FailedDestination
structure of unreachable destination - address and sequence number
Definition: hwmp-protocol.h:78
ns3::dot11s::HwmpProtocol::m_hwmpSeqno
uint32_t m_hwmpSeqno
HWMP sequence no.
Definition: hwmp-protocol.h:461
ns3::dot11s::HwmpProtocol::SetNeighboursCallback
void SetNeighboursCallback(Callback< std::vector< Mac48Address >, uint32_t > cb)
This callback is used to obtain active neighbours on a given interface.
Definition: hwmp-protocol.cc:810
ns3::dot11s::HwmpProtocol::m_stats
Statistics m_stats
statistics
Definition: hwmp-protocol.h:456
ns3::dot11s::HwmpProtocol::ReceivePrep
void ReceivePrep(IePrep prep, Mac48Address from, uint32_t interface, Mac48Address fromMp, uint32_t metric)
Handler for receiving Path Reply.
Definition: hwmp-protocol.cc:614
ns3::dot11s::HwmpProtocol::Statistics::initiatedPreq
uint16_t initiatedPreq
initiated PREQ
Definition: hwmp-protocol.h:444
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPactivePathTimeout
Time m_dot11MeshHWMPactivePathTimeout
Lifetime of reactive routing information.
Definition: hwmp-protocol.h:496
ns3::dot11s::HwmpProtocol::m_routeChangeTraceSource
TracedCallback< struct RouteChange > m_routeChangeTraceSource
Route change trace source.
Definition: hwmp-protocol.h:328
ns3::dot11s::HwmpProtocol::QueuedPacket::inInterface
uint32_t inInterface
incoming device interface ID. (if packet has come from upper layers, this is Mesh point ID)
Definition: hwmp-protocol.h:201
ns3::dot11s::HwmpProtocol::QueuePacket
bool QueuePacket(QueuedPacket packet)
Queue a packet.
Definition: hwmp-protocol.cc:971
ns3::dot11s::RouteChange::seqnum
uint32_t seqnum
sequence number of route
Definition: hwmp-protocol.h:54
ns3::dot11s::HwmpProtocol::m_dot11MeshHWMPpathToRootInterval
Time m_dot11MeshHWMPpathToRootInterval
Interval between two successive proactive PREQs.
Definition: hwmp-protocol.h:497
ns3::dot11s::HwmpProtocol::QueuedPacket::src
Mac48Address src
src address
Definition: hwmp-protocol.h:198
ns3::dot11s::HwmpProtocol::PathError::receivers
std::vector< std::pair< uint32_t, Mac48Address > > receivers
list of PathError receivers (in case of unicast PERR)
Definition: hwmp-protocol.h:192
ns3::dot11s::HwmpProtocol::InitiatePathError
void InitiatePathError(PathError perr)
Passes a self-generated PERR to interface-plugin.
Definition: hwmp-protocol.cc:863
ns3::dot11s::HwmpProtocol::m_maxQueueSize
uint16_t m_maxQueueSize
Maximum number of packets we can store when resolving route.
Definition: hwmp-protocol.h:490
ns3::dot11s::HwmpProtocol::PathError
Structure of path error: IePerr and list of receivers: interfaces and MAC address.
Definition: hwmp-protocol.h:190
ns3::dot11s::HwmpProtocol::ShouldSendPreq
bool ShouldSendPreq(Mac48Address dst)
checks when the last path discovery procedure was started for a given destination.
Definition: hwmp-protocol.cc:1069
ns3::dot11s::HwmpProtocol::m_unicastPreqThreshold
uint8_t m_unicastPreqThreshold
Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts.
Definition: hwmp-protocol.h:502
ns3::dot11s::HwmpProtocol::m_maxTtl
uint8_t m_maxTtl
Initial value of Time To Live field.
Definition: hwmp-protocol.h:500
ns3::dot11s::HwmpProtocol::Statistics::txBroadcast
uint16_t txBroadcast
transmit broadcast
Definition: hwmp-protocol.h:439