21 #include "ns3/object.h"
22 #include "ns3/assert.h"
23 #include "ns3/simulator.h"
41 .AddConstructor<HwmpRtable> ();
58 uint32_t metric,
Time lifetime, uint32_t seqnum)
60 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
68 i->second.retransmitter = retransmitter;
69 i->second.interface = interface;
70 i->second.metric = metric;
72 i->second.seqnum = seqnum;
76 uint32_t interface,
Time lifetime, uint32_t seqnum)
91 precursor.
address = precursorAddress;
93 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
96 bool should_add =
true;
97 for (
unsigned int j = 0; j < i->second.precursors.size (); j++)
101 if (i->second.precursors[j].address == precursorAddress)
104 i->second.precursors[j].whenExpire = precursor.
whenExpire;
110 i->second.precursors.push_back (precursor);
135 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
144 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
149 if ((i->second.whenExpire <
Simulator::Now ()) && (i->second.whenExpire != Seconds (0)))
159 std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.find (destination);
164 return LookupResult (i->second.retransmitter, i->second.interface, i->second.metric, i->second.seqnum,
172 NS_LOG_DEBUG (
"Proactive route has expired and will be deleted, sorry.");
183 std::vector<HwmpProtocol::FailedDestination>
187 std::vector<HwmpProtocol::FailedDestination> retval;
188 for (std::map<Mac48Address, ReactiveRoute>::iterator i =
m_routes.begin (); i !=
m_routes.end (); i++)
190 if (i->second.retransmitter == peerAddress)
194 dst.
seqnum = i->second.seqnum;
195 retval.push_back (dst);
203 retval.push_back (dst);
212 std::map<Mac48Address, ReactiveRoute>::iterator route =
m_routes.find (destination);
215 for (std::vector<Precursor>::const_iterator i = route->second.precursors.begin ();
216 i != route->second.precursors.end (); i++)
220 retval.push_back (std::make_pair (i->interface, i->address));
233 retransmitter (r), ifIndex (i), metric (m), seqnum (s), lifetime (l)