INET Framework for OMNeT++/OMNEST
inet::IPv4NetworkConfigurator::RoutingTableInfo Class Reference

Simplified routing table representation used by the optimizer. More...

#include <IPv4NetworkConfigurator.h>

Public Member Functions

 RoutingTableInfo ()
 
 ~RoutingTableInfo ()
 
int addRouteInfo (RouteInfo *routeInfo)
 
void removeRouteInfo (const RouteInfo *routeInfo)
 
RouteInfofindBestMatchingRouteInfo (const uint32 destination) const
 
RouteInfofindBestMatchingRouteInfo (const uint32 destination, int begin, int end) const
 

Static Public Member Functions

static bool routeInfoLessThan (const RouteInfo *a, const RouteInfo *b)
 

Public Attributes

std::vector< RouteInfo * > originalRouteInfos
 
std::vector< RouteInfo * > routeInfos
 

Detailed Description

Simplified routing table representation used by the optimizer.

Constructor & Destructor Documentation

inet::IPv4NetworkConfigurator::RoutingTableInfo::RoutingTableInfo ( )
inline
113 {}
inet::IPv4NetworkConfigurator::RoutingTableInfo::~RoutingTableInfo ( )
inline
114 { for (int i = 0; i < (int)originalRouteInfos.size(); i++) delete originalRouteInfos[i]; }
std::vector< RouteInfo * > originalRouteInfos
Definition: IPv4NetworkConfigurator.h:109

Member Function Documentation

int inet::IPv4NetworkConfigurator::RoutingTableInfo::addRouteInfo ( RouteInfo routeInfo)

Referenced by inet::IPv4NetworkConfigurator::optimizeRoutes(), and inet::IPv4NetworkConfigurator::tryToMergeTwoRoutes().

47 {
48  auto it = upper_bound(routeInfos.begin(), routeInfos.end(), routeInfo, routeInfoLessThan);
49  int index = it - routeInfos.begin();
50  routeInfos.insert(it, routeInfo);
51  return index;
52 }
std::vector< RouteInfo * > routeInfos
Definition: IPv4NetworkConfigurator.h:110
static bool routeInfoLessThan(const RouteInfo *a, const RouteInfo *b)
Definition: IPv4NetworkConfigurator.h:120
RouteInfo* inet::IPv4NetworkConfigurator::RoutingTableInfo::findBestMatchingRouteInfo ( const uint32  destination) const
inline

Referenced by inet::IPv4NetworkConfigurator::addOriginalRouteInfos(), inet::IPv4NetworkConfigurator::checkOriginalRoutes(), findBestMatchingRouteInfo(), and inet::IPv4NetworkConfigurator::interruptsOriginalRoute().

118 { return findBestMatchingRouteInfo(destination, 0, routeInfos.size()); }
std::vector< RouteInfo * > routeInfos
Definition: IPv4NetworkConfigurator.h:110
RouteInfo * findBestMatchingRouteInfo(const uint32 destination) const
Definition: IPv4NetworkConfigurator.h:118
IPv4NetworkConfigurator::RouteInfo * inet::IPv4NetworkConfigurator::RoutingTableInfo::findBestMatchingRouteInfo ( const uint32  destination,
int  begin,
int  end 
) const
55 {
56  for (int index = begin; index < end; index++) {
57  RouteInfo *routeInfo = routeInfos.at(index);
58  if (routeInfo->enabled && !((destination ^ routeInfo->destination) & routeInfo->netmask))
59  return const_cast<RouteInfo *>(routeInfo);
60  }
61  return nullptr;
62 }
std::vector< RouteInfo * > routeInfos
Definition: IPv4NetworkConfigurator.h:110
void inet::IPv4NetworkConfigurator::RoutingTableInfo::removeRouteInfo ( const RouteInfo routeInfo)
inline

Referenced by inet::IPv4NetworkConfigurator::tryToMergeTwoRoutes().

117 { routeInfos.erase(std::find(routeInfos.begin(), routeInfos.end(), routeInfo)); }
std::vector< RouteInfo * > routeInfos
Definition: IPv4NetworkConfigurator.h:110
std::vector< T >::iterator find(std::vector< T > &v, const T &a)
Definition: stlutils.h:48
static bool inet::IPv4NetworkConfigurator::RoutingTableInfo::routeInfoLessThan ( const RouteInfo a,
const RouteInfo b 
)
inlinestatic
120 { return a->netmask != b->netmask ? a->netmask > b->netmask : a->destination < b->destination; }
value< double, units::m > b
Definition: Units.h:1054

Member Data Documentation

std::vector<RouteInfo *> inet::IPv4NetworkConfigurator::RoutingTableInfo::originalRouteInfos

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