21 #include "ns3/object.h" 22 #include "ns3/assert.h" 23 #include "ns3/simulator.h" 42 .SetGroupName (
"Mesh")
60 uint32_t metric,
Time lifetime, uint32_t seqnum)
63 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
71 i->second.retransmitter = retransmitter;
72 i->second.interface = interface;
73 i->second.metric = metric;
75 i->second.seqnum = seqnum;
79 uint32_t interface,
Time lifetime, uint32_t seqnum)
81 NS_LOG_FUNCTION (
this << metric << root << retransmitter << interface << lifetime << seqnum);
93 NS_LOG_FUNCTION (
this << destination << precursorInterface << precursorAddress << lifetime);
96 precursor.
address = precursorAddress;
98 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
101 bool should_add =
true;
102 for (
unsigned int j = 0; j < i->second.precursors.size (); j++)
106 if (i->second.precursors[j].address == precursorAddress)
109 i->second.precursors[j].whenExpire = precursor.
whenExpire;
115 i->second.precursors.push_back (precursor);
143 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
153 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
169 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
174 NS_LOG_DEBUG (
"Returning reactive route to " << destination);
175 return LookupResult (i->second.retransmitter, i->second.interface, i->second.metric, i->second.seqnum,
184 NS_LOG_DEBUG (
"Proactive route has expired and will be deleted, sorry.");
197 std::vector<HwmpProtocol::FailedDestination>
202 std::vector<HwmpProtocol::FailedDestination> retval;
203 for (std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.begin (); i !=
m_routes.end (); i++)
205 if (i->second.retransmitter == peerAddress)
209 dst.
seqnum = i->second.seqnum;
210 retval.push_back (dst);
218 retval.push_back (dst);
228 std::map<Mac48Address, ReactiveRoute>::iterator route =
m_routes.find (destination);
231 for (std::vector<Precursor>::const_iterator i = route->second.precursors.begin ();
232 i != route->second.precursors.end (); i++)
236 retval.push_back (std::make_pair (i->interface, i->address));
249 retransmitter (r), ifIndex (i), metric (m), seqnum (s), lifetime (l)
Simulation virtual time values and global simulation resolution.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
ProactiveRoute m_root
Path to proactive tree root MP.
std::vector< Precursor > precursors
precursors
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
static const uint32_t MAX_METRIC
Maximum (the best?) path metric.
Time whenExpire
expire time
Route lookup result, return type of LookupXXX methods.
uint32_t seqnum
sequence number
structure of unreachable destination - address and sequence number
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint32_t ifIndex
IF index.
LookupResult LookupReactiveExpired(Mac48Address destination)
Return all reactive paths, including expired.
void DoDispose()
Destructor implementation.
LookupResult LookupReactive(Mac48Address destination)
Lookup path to destination.
std::vector< std::pair< uint32_t, Mac48Address > > PrecursorList
Path precursor = {MAC, interface ID}.
uint32_t seqnum
sequence number
Routing table for HWMP – 802.11s routing protocol.
std::vector< HwmpProtocol::FailedDestination > GetUnreachableDestinations(Mac48Address peerAddress)
When peer link with a given MAC-address fails - it returns list of unreachable destination addresses...
PrecursorList GetPrecursors(Mac48Address destination)
Route found in reactive mode.
static Mac48Address GetBroadcast(void)
void AddPrecursor(Mac48Address destination, uint32_t precursorInterface, Mac48Address precursorAddress, Time lifetime)
LookupResult LookupProactiveExpired()
Return all proactive paths, including expired.
uint32_t interface
interface
bool operator==(const LookupResult &o) const
Compare route lookup results, used by tests.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t seqnum
sequence number
void AddReactivePath(Mac48Address destination, Mac48Address retransmitter, uint32_t interface, uint32_t metric, Time lifetime, uint32_t seqnum)
static const uint32_t INTERFACE_ANY
Means all interfaces.
std::map< Mac48Address, ReactiveRoute > m_routes
List of routes.
static Time Now(void)
Return the current simulation virtual time.
static TypeId GetTypeId()
Get the type ID.
Mac48Address destination
destination address
void DeleteProactivePath()
Mac48Address retransmitter
retransmitter
Mac48Address address
address
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
LookupResult(Mac48Address r=Mac48Address::GetBroadcast(), uint32_t i=INTERFACE_ANY, uint32_t m=MAX_METRIC, uint32_t s=0, Time l=Seconds(0.0))
Lookup result function.
Time whenExpire
expire time
void DeleteReactivePath(Mac48Address destination)
void AddProactivePath(uint32_t metric, Mac48Address root, Mac48Address retransmitter, uint32_t interface, Time lifetime, uint32_t seqnum)
A base class which provides memory management and object aggregation.
Mac48Address retransmitter
retransmitter
uint32_t interface
interface
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Route found in reactive mode.
LookupResult LookupProactive()
Find proactive path to tree root. Note that calling this method has side effect of deleting expired p...