INET Framework for OMNeT++/OMNEST
inet::eigrp::EigrpTopologyTable< IPAddress > Class Template Reference

Class represents EIGRP Topology Table. More...

#include <EigrpTopologyTable.h>

Inheritance diagram for inet::eigrp::EigrpTopologyTable< IPAddress >:

Public Member Functions

 EigrpTopologyTable ()
 
virtual ~EigrpTopologyTable ()
 
void addRoute (EigrpRouteSource< IPAddress > *source)
 
EigrpRouteSource< IPAddress > * findRoute (const IPAddress &routeAddr, const IPAddress &routeMask, const IPAddress &nextHop)
 
EigrpRouteSource< IPAddress > * findRoute (const IPAddress &routeAddr, const IPAddress &routeMask, int nextHopId)
 
int getNumRoutes () const
 
EigrpRouteSource< IPAddress > * getRoute (int k)
 
EigrpRouteSource< IPAddress > * removeRoute (EigrpRouteSource< IPAddress > *source)
 Removes neighbor form the table, but the record still exists. More...
 
EigrpRouteSource< IPAddress > * findRouteById (int sourceId)
 
EigrpRouteSource< IPAddress > * findRouteByNextHop (int routeId, int nextHopId)
 
EigrpRouteSource< IPAddress > * findOrCreateRoute (const IPAddress &routeAddr, const IPAddress &routeMask, const Ipv4Address &routerId, eigrp::EigrpInterface *eigrpIface, int nextHopId, bool *sourceNew)
 Finds and returns source with given address or create one. More...
 
void purgeTable ()
 Deletes unreachable routes from the topology table. More...
 
void delayedRemove (int neighId)
 
uint64_t findRouteDMin (EigrpRoute< IPAddress > *route)
 
bool hasFeasibleSuccessor (EigrpRoute< IPAddress > *route, uint64_t &resultDmin)
 Finds feasible successor and minimal distance to the destination. More...
 
EigrpRouteSource< IPAddress > * getBestSuccessor (EigrpRoute< IPAddress > *route)
 Returns best successor to the destination. More...
 
EigrpRouteSource< IPAddress > * getBestSuccessorByIf (EigrpRoute< IPAddress > *route, int ifaceId)
 Returns first successor on specified interface. More...
 
int getNumRouteInfo () const
 
EigrpRoute< IPAddress > * getRouteInfo (int k)
 
void addRouteInfo (EigrpRoute< IPAddress > *route)
 
EigrpRoute< IPAddress > * removeRouteInfo (EigrpRoute< IPAddress > *route)
 
EigrpRoute< IPAddress > * findRouteInfo (const IPAddress &routeAddr, const IPAddress &routeMask)
 
EigrpRoute< IPAddress > * findRouteInfoById (int routeId)
 
Ipv4AddressgetRouterId ()
 
void setRouterId (Ipv4Address &routerID)
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void handleMessage (cMessage *msg) override
 
virtual int numInitStages () const override
 

Private Types

typedef std::vector< EigrpRouteSource< IPAddress > * > RouteVector
 
typedef std::vector< EigrpRoute< IPAddress > * > RouteInfoVector
 

Private Member Functions

RouteVector::iterator removeRoute (typename RouteVector::iterator routeIt)
 

Private Attributes

RouteVector routeVec
 Table with routes. More...
 
RouteInfoVector routeInfoVec
 Table with info about routes. More...
 
Ipv4Address routerID
 Router ID of this router, number represented as IPv4 address. More...
 
int routeIdCounter
 Counter for route ID. More...
 
int sourceIdCounter
 Counter for source ID. More...
 

Detailed Description

template<typename IPAddress>
class inet::eigrp::EigrpTopologyTable< IPAddress >

Class represents EIGRP Topology Table.

Member Typedef Documentation

◆ RouteInfoVector

template<typename IPAddress >
typedef std::vector<EigrpRoute<IPAddress> *> inet::eigrp::EigrpTopologyTable< IPAddress >::RouteInfoVector
private

◆ RouteVector

template<typename IPAddress >
typedef std::vector<EigrpRouteSource<IPAddress> *> inet::eigrp::EigrpTopologyTable< IPAddress >::RouteVector
private

Constructor & Destructor Documentation

◆ EigrpTopologyTable()

template<typename IPAddress >
inet::eigrp::EigrpTopologyTable< IPAddress >::EigrpTopologyTable ( )
inline
53 { routeIdCounter = 1; sourceIdCounter = 1; }

◆ ~EigrpTopologyTable()

template<typename IPAddress >
inet::eigrp::EigrpTopologyTable< IPAddress >::~EigrpTopologyTable
virtual
92 {
93  EigrpRouteSource<IPAddress> *rtSrc;
94  EigrpRoute<IPAddress> *rt;
95  unsigned i;
96 
97  for (i = 0; i < routeVec.size(); i++) {
98  rtSrc = routeVec[i];
99  routeVec[i] = nullptr;
100  delete rtSrc;
101  }
102  routeVec.clear();
103 
104  for (i = 0; i < routeInfoVec.size(); i++) {
105  rt = routeInfoVec[i];
106  routeInfoVec[i] = nullptr;
107  delete rt;
108  }
109  routeInfoVec.clear();
110 }

Member Function Documentation

◆ addRoute()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::addRoute ( EigrpRouteSource< IPAddress > *  source)
278 {
279 // RouteInfoVector::reverse_iterator rit;
280  typename RouteVector::iterator it = routeVec.end();
281  int routeId = source->getRouteId();
282 
283  source->setSourceId(sourceIdCounter);
284  sourceIdCounter++;
285 
286  // Find last route with routeId
287  while (it != routeVec.begin()) {
288  --it;
289  if ((*it)->getRouteId() == routeId && (*it)->isValid()) {
290  break;
291  }
292  }
293 
294  // Insert item after found item
295  if (it == routeVec.end())
296  routeVec.push_back(source);
297  else
298  routeVec.insert(it + 1, source);
299 }

Referenced by inet::eigrp::EigrpIpv4Pdm::removeNeighbor(), and inet::eigrp::EigrpIpv6Pdm::removeNeighbor().

◆ addRouteInfo()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::addRouteInfo ( EigrpRoute< IPAddress > *  route)
inline
90 { route->setRouteId(routeIdCounter); routeInfoVec.push_back(route); routeIdCounter++; }

◆ delayedRemove()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::delayedRemove ( int  neighId)
382 {
383  typename RouteVector::iterator it;
384 
385  for (it = routeVec.begin(); it != routeVec.end();) {
386  if ((*it)->getDelayedRemove() == neighId)
387  it = removeRoute(it);
388  else
389  ++it;
390  }
391 }

Referenced by inet::eigrp::EigrpIpv4Pdm::processAckPacket(), and inet::eigrp::EigrpIpv6Pdm::processAckPacket().

◆ findOrCreateRoute()

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findOrCreateRoute ( const IPAddress &  routeAddr,
const IPAddress &  routeMask,
const Ipv4Address routerId,
eigrp::EigrpInterface eigrpIface,
int  nextHopId,
bool *  sourceNew 
)

Finds and returns source with given address or create one.

Parameters
sourceNewreturn parameter, it is true if source was created. Else false.
460 {
461  EigrpRoute<IPAddress> *route = nullptr;
462  EigrpRouteSource<IPAddress> *source = nullptr;
463  (*sourceNew) = false;
464 
465  // Find source of route with given next hop ID
466  source = findRoute(routeAddr, routeMask, nextHopId);
467  if (source == nullptr) {
468  if ((route = findRouteInfo(routeAddr, routeMask)) == nullptr) { // Create route
469  route = new EigrpRoute<IPAddress>(routeAddr, routeMask);
470  addRouteInfo(route);
471  }
472  // Create source of route
473  source = new EigrpRouteSource<IPAddress>(eigrpIface->getInterfaceId(), eigrpIface->getInterfaceName(), nextHopId, route->getRouteId(), route);
474  source->setOriginator(routerId);
475  (*sourceNew) = true;
476  addRoute(source);
477  }
478 
479  return source;
480 }

Referenced by inet::eigrp::EigrpIpv4Pdm::enableInterface(), inet::eigrp::EigrpIpv6Pdm::enableInterface(), inet::eigrp::EigrpIpv4Pdm::processInterRoute(), and inet::eigrp::EigrpIpv6Pdm::processInterRoute().

◆ findRoute() [1/2]

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRoute ( const IPAddress &  routeAddr,
const IPAddress &  routeMask,
const IPAddress &  nextHop 
)
116 {
117  typename RouteVector::iterator it;
118  EigrpRoute<IPAddress> *route;
119 
120  for (it = routeVec.begin(); it != routeVec.end(); it++) {
121  route = (*it)->getRouteInfo();
122  if (route->getRouteAddress() == routeAddr && route->getRouteMask() == routeMask &&
123  (*it)->getNextHop() == nextHop && (*it)->isValid())
124  {
125  return *it;
126  }
127  }
128 
129  return nullptr;
130 }

Referenced by inet::eigrp::EigrpIpv4Pdm::disableInterface(), inet::eigrp::EigrpIpv6Pdm::disableInterface(), inet::eigrp::EigrpIpv4Pdm::processRTRouteDel(), inet::eigrp::EigrpIpv6Pdm::processRTRouteDel(), inet::eigrp::EigrpIpv4Pdm::processUpdatePacket(), and inet::eigrp::EigrpIpv6Pdm::processUpdatePacket().

◆ findRoute() [2/2]

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRoute ( const IPAddress &  routeAddr,
const IPAddress &  routeMask,
int  nextHopId 
)
134 {
135  typename RouteVector::iterator it;
136  EigrpRoute<IPAddress> *route;
137 
138  for (it = routeVec.begin(); it != routeVec.end(); it++) {
139  route = (*it)->getRouteInfo();
140 
141  if (route->getRouteAddress() == routeAddr && route->getRouteMask() == routeMask &&
142  (*it)->getNexthopId() == nextHopId && (*it)->isValid())
143  {
144  return *it;
145  }
146  }
147 
148  return nullptr;
149 }

◆ findRouteById()

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRouteById ( int  sourceId)
437 {
438  typename RouteVector::iterator it;
439  for (it = routeVec.begin(); it != routeVec.end(); it++) {
440  if ((*it)->getSourceId() == sourceId && (*it)->isValid())
441  return *it;
442  }
443  return nullptr;
444 }

Referenced by inet::eigrp::EigrpIpv4Pdm::addRoutesToMsg(), and inet::eigrp::EigrpIpv6Pdm::addRoutesToMsg().

◆ findRouteByNextHop()

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRouteByNextHop ( int  routeId,
int  nextHopId 
)
448 {
449  typename RouteVector::iterator it;
450  for (it = routeVec.begin(); it != routeVec.end(); it++) {
451  if ((*it)->getRouteId() == routeId && (*it)->getNexthopId() == nextHopId && (*it)->isValid())
452  return *it;
453  }
454  return nullptr;
455 }

Referenced by inet::eigrp::EigrpIpv4Pdm::removeNeighbor(), and inet::eigrp::EigrpIpv6Pdm::removeNeighbor().

◆ findRouteDMin()

template<typename IPAddress >
uint64_t inet::eigrp::EigrpTopologyTable< IPAddress >::findRouteDMin ( EigrpRoute< IPAddress > *  route)
153 {
154  uint64_t dmin = eigrp::EigrpMetricHelper::METRIC_INF;
155  uint64_t tempD;
156  typename RouteVector::iterator it;
157  int routeId = route->getRouteId();
158 
159  for (it = routeVec.begin(); it != routeVec.end(); it++) {
160  if ((*it)->getRouteId() == routeId /* do not check FC here */ && (*it)->isValid()) {
161  tempD = (*it)->getMetric();
162  if (tempD < dmin) {
163  dmin = tempD;
164  }
165  }
166  }
167 
168  return dmin;
169 }

Referenced by inet::eigrp::EigrpIpv4Pdm::findRouteDMin(), and inet::eigrp::EigrpIpv6Pdm::findRouteDMin().

◆ findRouteInfo()

template<typename IPAddress >
EigrpRoute< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRouteInfo ( const IPAddress &  routeAddr,
const IPAddress &  routeMask 
)
497 {
498  typename RouteInfoVector::iterator it;
499 
500  for (it = routeInfoVec.begin(); it != routeInfoVec.end(); it++) {
501  if ((*it)->getRouteAddress() == routeAddr && (*it)->getRouteMask() == routeMask)
502  return *it;
503  }
504 
505  return nullptr;
506 }

◆ findRouteInfoById()

template<typename IPAddress >
EigrpRoute< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::findRouteInfoById ( int  routeId)
510 {
511  typename RouteInfoVector::iterator it;
512 
513  for (it = routeInfoVec.begin(); it != routeInfoVec.end(); it++) {
514  if ((*it)->getRouteId() == routeId)
515  return *it;
516  }
517 
518  return nullptr;
519 }

Referenced by inet::eigrp::EigrpIpv4Pdm::addRoutesToMsg(), inet::eigrp::EigrpIpv6Pdm::addRoutesToMsg(), inet::eigrp::EigrpIpv4Pdm::unlockRoutes(), and inet::eigrp::EigrpIpv6Pdm::unlockRoutes().

◆ getBestSuccessor()

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::getBestSuccessor ( EigrpRoute< IPAddress > *  route)

Returns best successor to the destination.

Finds successor for the route with minimal metric, second key is minimal next hop IP.

176 {
177  typename RouteVector::iterator it;
178  int routeId = route->getRouteId();
179  EigrpRouteSource<IPAddress> *tempSrc = nullptr;
180 
181  for (it = routeVec.begin(); it != routeVec.end(); it++) {
182  if ((*it)->getRouteId() == routeId && (*it)->isSuccessor() && (*it)->isValid()) {
183  if (tempSrc != nullptr) {
184  if ((*it)->getMetric() < tempSrc->getMetric())
185  tempSrc = *it;
186  else if ((*it)->getMetric() == tempSrc->getMetric() && (*it)->getNextHop() < tempSrc->getNextHop())
187  tempSrc = *it;
188  }
189  else
190  tempSrc = *it;
191  }
192  }
193 
194  return tempSrc;
195 }

Referenced by inet::eigrp::EigrpIpv4Pdm::getBestSuccessor(), inet::eigrp::EigrpIpv6Pdm::getBestSuccessor(), inet::eigrp::EigrpIpv4Pdm::sendAllEigrpPaths(), inet::eigrp::EigrpIpv6Pdm::sendAllEigrpPaths(), inet::eigrp::EigrpIpv4Pdm::updateRoute(), and inet::eigrp::EigrpIpv6Pdm::updateRoute().

◆ getBestSuccessorByIf()

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::getBestSuccessorByIf ( EigrpRoute< IPAddress > *  route,
int  ifaceId 
)

Returns first successor on specified interface.

Finds successor on specified interface with metric equal to Dij (minimal distance)

217 {
218  typename RouteVector::iterator it;
219  int routeId = route->getRouteId();
220  uint64_t dij = route->getDij();
221 
222  for (it = routeVec.begin(); it != routeVec.end(); it++) {
223  if ((*it)->getRouteId() == routeId && (*it)->isSuccessor() && (*it)->getMetric() == dij &&
224  (*it)->getIfaceId() == ifaceId && (*it)->isValid())
225  {
226  return *it;
227  }
228  }
229  return nullptr;
230 }

Referenced by inet::eigrp::EigrpIpv4Pdm::applySplitHorizon(), and inet::eigrp::EigrpIpv6Pdm::applySplitHorizon().

◆ getNumRouteInfo()

◆ getNumRoutes()

◆ getRoute()

◆ getRouteInfo()

◆ getRouterId()

◆ handleMessage()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::handleMessage ( cMessage *  msg)
overrideprotectedvirtual
86 {
87  throw cRuntimeError("This module does not process messages");
88 }

◆ hasFeasibleSuccessor()

template<typename IPAddress >
bool inet::eigrp::EigrpTopologyTable< IPAddress >::hasFeasibleSuccessor ( EigrpRoute< IPAddress > *  route,
uint64_t &  resultDmin 
)

Finds feasible successor and minimal distance to the destination.

@params resultDmin Return value with minimal distance of all FS.

239 {
240  typename RouteVector::iterator it;
241  int routeId = route->getRouteId();
242  bool hasFs = false;
243  uint64_t tempD;
244 
246  EV_DEBUG << "EIGRP: Search feasible successor for route " << route->getRouteAddress();
247  EV_DEBUG << ", FD is " << route->getFd() << endl;
248 
249  for (it = routeVec.begin(); it != routeVec.end(); it++) {
250  if ((*it)->getRouteId() == routeId && (*it)->isValid()) {
251  EV_DEBUG << " Next hop " << (*it)->getNextHop();
252  EV_DEBUG << " (" << (*it)->getMetric() << "/" << (*it)->getRd() << ") ";
253 
254  tempD = (*it)->getMetric();
255  if (tempD < resultDmin) {
256  hasFs = false; // FS must have minimal distance
257  resultDmin = tempD;
258  }
259 
260  if ((*it)->getRd() < route->getFd() && tempD == resultDmin) {
261  EV_DEBUG << "satisfies FC" << endl;
262  hasFs = true;
263  }
264  else
265  EV_DEBUG << "not satisfies FC" << endl;
266  }
267  }
268  if (hasFs)
269  EV_DEBUG << " FS found, dmin is " << resultDmin << endl;
270  else
271  EV_DEBUG << " FS not found, dmin is " << resultDmin << endl;
272 
273  return hasFs;
274 }

Referenced by inet::eigrp::EigrpIpv4Pdm::hasFeasibleSuccessor(), and inet::eigrp::EigrpIpv6Pdm::hasFeasibleSuccessor().

◆ initialize()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::initialize ( int  stage)
overrideprotectedvirtual
72 {
73  cSimpleModule::initialize(stage);
74  if (stage == INITSTAGE_ROUTING_PROTOCOLS) {
75  // TODO
76  WATCH(routerID);
77  WATCH_PTRVECTOR(routeVec);
78  #ifdef EIGRP_TT_DEBUG
79  WATCH_PTRVECTOR(routeInfoVec);
80  #endif
81  }
82 }

◆ numInitStages()

template<typename IPAddress >
virtual int inet::eigrp::EigrpTopologyTable< IPAddress >::numInitStages ( ) const
inlineoverrideprotectedvirtual
50 { return NUM_INIT_STAGES; }

◆ purgeTable()

◆ removeRoute() [1/2]

template<typename IPAddress >
EigrpRouteSource< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::removeRoute ( EigrpRouteSource< IPAddress > *  source)

Removes neighbor form the table, but the record still exists.

369 {
370  typename RouteVector::iterator it;
371 
372  if ((it = find(routeVec, source)) != routeVec.end()) {
373  removeRoute(it);
374  return source;
375  }
376 
377  return nullptr;
378 }

◆ removeRoute() [2/2]

template<typename IPAddress >
std::vector< EigrpRouteSource< IPAddress > * >::iterator inet::eigrp::EigrpTopologyTable< IPAddress >::removeRoute ( typename RouteVector::iterator  routeIt)
private
412 {
413  EigrpRoute<IPAddress> *route = nullptr;
414  EigrpRouteSource<IPAddress> *source = nullptr;
415 
416  source = *routeIt;
417  route = source->getRouteInfo();
418 
419  EV_DEBUG << "EIGRP: remove route source " << route->getRouteAddress();
420  EV_DEBUG << " via " << source->getNextHop() << " from TT" << endl;
421 
422  if (route->getRefCnt() == 1 && !route->isActive() && route->getNumSentMsgs() == 0) {
423  EV_DEBUG << "EIGRP: remove route info " << route->getRouteAddress() << ", it does not have any source" << endl;
424  removeRouteInfo(route);
425  delete route;
426  }
427  else {
428  route->decrementRefCnt();
429  }
430 
431  delete source;
432  return routeVec.erase(routeIt);
433 }

◆ removeRouteInfo()

template<typename IPAddress >
EigrpRoute< IPAddress > * inet::eigrp::EigrpTopologyTable< IPAddress >::removeRouteInfo ( EigrpRoute< IPAddress > *  route)
484 {
485  typename RouteInfoVector::iterator it;
486 
487  if ((it = find(routeInfoVec, route)) != routeInfoVec.end()) {
488  routeInfoVec.erase(it);
489  return route;
490  }
491 
492  return nullptr;
493 }

Referenced by inet::eigrp::EigrpIpv4Pdm::unlockRoutes(), and inet::eigrp::EigrpIpv6Pdm::unlockRoutes().

◆ setRouterId()

template<typename IPAddress >
void inet::eigrp::EigrpTopologyTable< IPAddress >::setRouterId ( Ipv4Address routerID)
inline

Member Data Documentation

◆ routeIdCounter

template<typename IPAddress >
int inet::eigrp::EigrpTopologyTable< IPAddress >::routeIdCounter
private

◆ routeInfoVec

◆ routerID

template<typename IPAddress >
Ipv4Address inet::eigrp::EigrpTopologyTable< IPAddress >::routerID
private

Router ID of this router, number represented as IPv4 address.

INDEPENDENT on routed protocol (Ipv4/IPv6)!

Referenced by inet::eigrp::EigrpTopologyTable< Ipv4Address >::getRouterId(), and inet::eigrp::EigrpTopologyTable< Ipv4Address >::setRouterId().

◆ routeVec

◆ sourceIdCounter

template<typename IPAddress >
int inet::eigrp::EigrpTopologyTable< IPAddress >::sourceIdCounter
private

The documentation for this class was generated from the following files:
inet::eigrp::EigrpTopologyTable::findRoute
EigrpRouteSource< IPAddress > * findRoute(const IPAddress &routeAddr, const IPAddress &routeMask, const IPAddress &nextHop)
Definition: EigrpTopologyTable.cc:115
inet::eigrp::EigrpTopologyTable::sourceIdCounter
int sourceIdCounter
Counter for source ID.
Definition: EigrpTopologyTable.h:43
inet::eigrp::EigrpTopologyTable::addRouteInfo
void addRouteInfo(EigrpRoute< IPAddress > *route)
Definition: EigrpTopologyTable.h:90
inet::eigrp::EigrpTopologyTable::findRouteInfo
EigrpRoute< IPAddress > * findRouteInfo(const IPAddress &routeAddr, const IPAddress &routeMask)
Definition: EigrpTopologyTable.cc:496
inet::eigrp::EigrpTopologyTable::routeVec
RouteVector routeVec
Table with routes.
Definition: EigrpTopologyTable.h:37
inet::find
std::vector< T >::iterator find(std::vector< T > &v, const Tk &a)
Definition: stlutils.h:44
inet::eigrp::EigrpTopologyTable::removeRouteInfo
EigrpRoute< IPAddress > * removeRouteInfo(EigrpRoute< IPAddress > *route)
Definition: EigrpTopologyTable.cc:483
inet::eigrp::EigrpTopologyTable::routeInfoVec
RouteInfoVector routeInfoVec
Table with info about routes.
Definition: EigrpTopologyTable.h:38
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::physicallayer::k
const double k
Definition: Qam1024Modulation.cc:14
inet::eigrp::EigrpTopologyTable::routeIdCounter
int routeIdCounter
Counter for route ID.
Definition: EigrpTopologyTable.h:42
inet::eigrp::EigrpMetricHelper::METRIC_INF
static const uint64_t METRIC_INF
Definition: EigrpMetricHelper.h:50
inet::eigrp::EigrpTopologyTable::routerID
Ipv4Address routerID
Router ID of this router, number represented as IPv4 address.
Definition: EigrpTopologyTable.h:40
inet::eigrp::EigrpTopologyTable::addRoute
void addRoute(EigrpRouteSource< IPAddress > *source)
Definition: EigrpTopologyTable.cc:277
inet::eigrp::EigrpTopologyTable::removeRoute
RouteVector::iterator removeRoute(typename RouteVector::iterator routeIt)
Definition: EigrpTopologyTable.cc:411
inet::INITSTAGE_ROUTING_PROTOCOLS
INET_API InitStage INITSTAGE_ROUTING_PROTOCOLS
Initialization of routing protocols.