INET Framework for OMNeT++/OMNEST
inet::NextHopRoute Class Reference

A next hop route that uses generic addresses as destination and next hop. More...

#include <NextHopRoute.h>

Inheritance diagram for inet::NextHopRoute:
inet::IRoute

Public Member Functions

 NextHopRoute ()
 
virtual ~NextHopRoute ()
 
virtual std::string str () const override
 
virtual std::string detailedInfo () const
 
bool equals (const IRoute &route) const
 
virtual void setRoutingTable (NextHopRoutingTable *owner)
 
virtual void setDestination (const L3Address &dest) override
 
virtual void setPrefixLength (int l) override
 
virtual void setNextHop (const L3Address &nextHop) override
 
virtual void setInterface (NetworkInterface *ie) override
 
virtual void setSourceType (SourceType sourceType) override
 
virtual void setSource (cObject *source) override
 
virtual void setMetric (int metric) override
 
virtual void setAdminDist (unsigned int adminDist) override
 
virtual void setProtocolData (cObject *protocolData) override
 
virtual IRoutingTablegetRoutingTableAsGeneric () const override
 The routing table in which this route is inserted, or nullptr. More...
 
virtual L3Address getDestinationAsGeneric () const override
 Destination address prefix to match. More...
 
virtual int getPrefixLength () const override
 Represents length of prefix to match. More...
 
virtual L3Address getNextHopAsGeneric () const override
 Next hop address. More...
 
virtual NetworkInterfacegetInterface () const override
 Next hop interface. More...
 
SourceType getSourceType () const override
 Source type of the route. More...
 
virtual cObject * getSource () const override
 Source of route. More...
 
virtual int getMetric () const override
 Cost to reach the destination. More...
 
virtual cObject * getProtocolData () const override
 
- Public Member Functions inherited from inet::IRoute
virtual ~IRoute ()
 

Protected Member Functions

void changed (int fieldCode)
 

Private Attributes

NextHopRoutingTableowner
 
int prefixLength
 
L3Address destination
 
L3Address nextHop
 
NetworkInterfaceinterface
 
SourceType sourceType
 
cObject * source
 
cObject * protocolData
 
int metric
 

Additional Inherited Members

- Public Types inherited from inet::IRoute
enum  SourceType {
  MANUAL, IFACENETMASK, ROUTER_ADVERTISEMENT, OWN_ADV_PREFIX,
  ICMP_REDIRECT, RIP, OSPF, BGP,
  ZEBRA, MANET, MANET2, DYMO,
  AODV, EIGRP, LISP, BABEL,
  ODR, UNKNOWN, ISIS
}
 Specifies where the route comes from. More...
 
enum  ChangeCodes {
  F_DESTINATION, F_PREFIX_LENGTH, F_NEXTHOP, F_IFACE,
  F_SOURCE, F_TYPE, F_ADMINDIST, F_METRIC,
  F_EXPIRYTIME, F_LAST
}
 Field codes for NB_ROUTE_CHANGED notifications. More...
 
enum  RouteAdminDist {
  dDirectlyConnected = 0, dStatic = 1, dEIGRPSummary = 5, dBGPExternal = 20,
  dEIGRPInternal = 90, dIGRP = 100, dOSPF = 110, dISIS = 115,
  dRIP = 120, dEGP = 140, dODR = 160, dEIGRPExternal = 170,
  dBGPInternal = 200, dDHCPlearned = 254, dBABEL = 125, dLISP = 210,
  dUnknown = 255
}
 Cisco like administrative distances. More...
 
- Static Public Member Functions inherited from inet::IRoute
static const char * sourceTypeName (SourceType sourceType)
 

Detailed Description

A next hop route that uses generic addresses as destination and next hop.

Constructor & Destructor Documentation

◆ NextHopRoute()

inet::NextHopRoute::NextHopRoute ( )
inline
40  : owner(nullptr), prefixLength(0), interface(nullptr), sourceType(IRoute::MANUAL),
41  source(nullptr), protocolData(nullptr), metric(0) {}

◆ ~NextHopRoute()

virtual inet::NextHopRoute::~NextHopRoute ( )
inlinevirtual
42 { delete protocolData; }

Member Function Documentation

◆ changed()

void inet::NextHopRoute::changed ( int  fieldCode)
protected
60 {
61  if (owner)
62  owner->routeChanged(this, fieldCode);
63 }

◆ detailedInfo()

std::string inet::NextHopRoute::detailedInfo ( ) const
virtual
50 {
51  return ""; // TODO
52 }

◆ equals()

bool inet::NextHopRoute::equals ( const IRoute route) const
55 {
56  return false; // TODO
57 }

◆ getDestinationAsGeneric()

virtual L3Address inet::NextHopRoute::getDestinationAsGeneric ( ) const
inlineoverridevirtual

Destination address prefix to match.

Implements inet::IRoute.

64 { return destination; }

Referenced by inet::NextHopRoutingTable::routeLessThan().

◆ getInterface()

virtual NetworkInterface* inet::NextHopRoute::getInterface ( ) const
inlineoverridevirtual

Next hop interface.

Implements inet::IRoute.

73 { return interface; }

Referenced by inet::NextHopRoutingTable::addRoute(), and inet::NextHopForwarding::routePacket().

◆ getMetric()

virtual int inet::NextHopRoute::getMetric ( ) const
inlineoverridevirtual

Cost to reach the destination.

Implements inet::IRoute.

82 { return metric; }

Referenced by inet::NextHopRoutingTable::routeLessThan().

◆ getNextHopAsGeneric()

virtual L3Address inet::NextHopRoute::getNextHopAsGeneric ( ) const
inlineoverridevirtual

Next hop address.

Implements inet::IRoute.

70 { return nextHop; }

Referenced by inet::NextHopForwarding::routePacket().

◆ getPrefixLength()

virtual int inet::NextHopRoute::getPrefixLength ( ) const
inlineoverridevirtual

Represents length of prefix to match.

Implements inet::IRoute.

67 { return prefixLength; }

Referenced by inet::NextHopRoutingTable::routeLessThan().

◆ getProtocolData()

virtual cObject* inet::NextHopRoute::getProtocolData ( ) const
inlineoverridevirtual

Implements inet::IRoute.

84 { return protocolData; }

◆ getRoutingTableAsGeneric()

IRoutingTable * inet::NextHopRoute::getRoutingTableAsGeneric ( ) const
overridevirtual

The routing table in which this route is inserted, or nullptr.

Implements inet::IRoute.

66 {
67  return owner;
68 }

Referenced by inet::NextHopRoutingTable::internalAddRoute(), and inet::NextHopRoutingTable::internalRemoveRoute().

◆ getSource()

virtual cObject* inet::NextHopRoute::getSource ( ) const
inlineoverridevirtual

Source of route.

Implements inet::IRoute.

79 { return source; }

◆ getSourceType()

SourceType inet::NextHopRoute::getSourceType ( ) const
inlineoverridevirtual

Source type of the route.

Implements inet::IRoute.

76 { return sourceType; }

◆ setAdminDist()

virtual void inet::NextHopRoute::setAdminDist ( unsigned int  adminDist)
inlineoverridevirtual

Implements inet::IRoute.

57 {}

◆ setDestination()

virtual void inet::NextHopRoute::setDestination ( const L3Address dest)
inlineoverridevirtual

Implements inet::IRoute.

50 { if (destination != dest) { this->destination = dest; changed(F_DESTINATION); } }

Referenced by inet::NextHopNetworkConfigurator::addStaticRoutes().

◆ setInterface()

virtual void inet::NextHopRoute::setInterface ( NetworkInterface ie)
inlineoverridevirtual

Implements inet::IRoute.

53 { if (interface != ie) { this->interface = ie; changed(F_IFACE); } }

Referenced by inet::NextHopNetworkConfigurator::addStaticRoutes().

◆ setMetric()

virtual void inet::NextHopRoute::setMetric ( int  metric)
inlineoverridevirtual

Implements inet::IRoute.

56 { if (this->metric != metric) { this->metric = metric; changed(F_METRIC); } }

◆ setNextHop()

virtual void inet::NextHopRoute::setNextHop ( const L3Address nextHop)
inlineoverridevirtual

Implements inet::IRoute.

52 { if (this->nextHop != nextHop) { this->nextHop = nextHop; changed(F_NEXTHOP); } }

Referenced by inet::NextHopNetworkConfigurator::addStaticRoutes().

◆ setPrefixLength()

virtual void inet::NextHopRoute::setPrefixLength ( int  l)
inlineoverridevirtual

Implements inet::IRoute.

51 { if (prefixLength != l) { this->prefixLength = l; changed(F_PREFIX_LENGTH); } }

◆ setProtocolData()

virtual void inet::NextHopRoute::setProtocolData ( cObject *  protocolData)
inlineoverridevirtual

Implements inet::IRoute.

58 { this->protocolData = protocolData; }

◆ setRoutingTable()

virtual void inet::NextHopRoute::setRoutingTable ( NextHopRoutingTable owner)
inlinevirtual

◆ setSource()

virtual void inet::NextHopRoute::setSource ( cObject *  source)
inlineoverridevirtual

Implements inet::IRoute.

55 { if (this->source != source) { this->source = source; changed(F_SOURCE); } }

◆ setSourceType()

virtual void inet::NextHopRoute::setSourceType ( SourceType  sourceType)
inlineoverridevirtual

◆ str()

std::string inet::NextHopRoute::str ( ) const
overridevirtual
18 {
19  std::stringstream out;
20 
21  out << "dest:";
23  out << "* ";
24  else
25  out << destination << " ";
26  out << "gw:";
27  if (nextHop.isUnspecified())
28  out << "* ";
29  else
30  out << nextHop << " ";
31  out << "metric:" << metric << " ";
32  out << "if:";
33  if (!interface)
34  out << "*";
35  else
36  out << interface->getInterfaceName();
37  if (interface)
38  if (auto nextHopData = interface->findProtocolData<NextHopInterfaceData>())
39  out << "(" << nextHopData->getAddress() << ")";
40  out << " ";
41  out << (nextHop.isUnspecified() ? "DIRECT" : "REMOTE");
42  out << " " << IRoute::sourceTypeName(sourceType);
43  if (protocolData)
44  out << " " << protocolData->str();
45 
46  return out.str();
47 }

Referenced by inet::NextHopNetworkConfigurator::addStaticRoutes(), inet::NextHopRoutingTable::deleteRoute(), and inet::NextHopRoutingTable::removeRoute().

Member Data Documentation

◆ destination

L3Address inet::NextHopRoute::destination
private

Referenced by str().

◆ interface

NetworkInterface* inet::NextHopRoute::interface
private

Referenced by str().

◆ metric

int inet::NextHopRoute::metric
private

Referenced by str().

◆ nextHop

L3Address inet::NextHopRoute::nextHop
private

Referenced by str().

◆ owner

NextHopRoutingTable* inet::NextHopRoute::owner
private

◆ prefixLength

int inet::NextHopRoute::prefixLength
private

◆ protocolData

cObject* inet::NextHopRoute::protocolData
private

Referenced by str().

◆ source

cObject* inet::NextHopRoute::source
private

◆ sourceType

SourceType inet::NextHopRoute::sourceType
private

Referenced by str().


The documentation for this class was generated from the following files:
inet::IRoute::F_IFACE
@ F_IFACE
Definition: IRoute.h:50
inet::NextHopRoute::metric
int metric
Definition: NextHopRoute.h:34
inet::NextHopRoute::sourceType
SourceType sourceType
Definition: NextHopRoute.h:31
inet::IRoute::F_DESTINATION
@ F_DESTINATION
Definition: IRoute.h:47
inet::NextHopRoutingTable::routeChanged
virtual void routeChanged(NextHopRoute *entry, int fieldCode)
To be called from route objects whenever a field changes.
Definition: NextHopRoutingTable.cc:125
inet::NextHopRoute::destination
L3Address destination
Definition: NextHopRoute.h:28
inet::IRoute::MANUAL
@ MANUAL
manually added static route
Definition: IRoute.h:29
inet::NextHopRoute::owner
NextHopRoutingTable * owner
Definition: NextHopRoute.h:26
inet::NetworkInterface::getInterfaceName
const char * getInterfaceName() const
Definition: NetworkInterface.h:233
inet::NetworkInterface::findProtocolData
const T * findProtocolData() const
Returns the protocol data for the provided type or returns nullptr if no such protocol data is found.
Definition: NetworkInterface.h:299
inet::L3Address::isUnspecified
bool isUnspecified() const
Definition: L3Address.cc:138
inet::IRoute::F_SOURCE
@ F_SOURCE
Definition: IRoute.h:51
inet::NextHopRoute::source
cObject * source
Definition: NextHopRoute.h:32
inet::IRoute::F_TYPE
@ F_TYPE
Definition: IRoute.h:52
inet::NextHopRoute::prefixLength
int prefixLength
Definition: NextHopRoute.h:27
inet::NextHopRoute::nextHop
L3Address nextHop
Definition: NextHopRoute.h:29
inet::NextHopRoute::interface
NetworkInterface * interface
Definition: NextHopRoute.h:30
inet::NextHopRoute::protocolData
cObject * protocolData
Definition: NextHopRoute.h:33
inet::NextHopRoute::changed
void changed(int fieldCode)
Definition: NextHopRoute.cc:59
inet::IRoute::F_PREFIX_LENGTH
@ F_PREFIX_LENGTH
Definition: IRoute.h:48
inet::IRoute::sourceTypeName
static const char * sourceTypeName(SourceType sourceType)
Definition: IRoute.cc:12
inet::IRoute::F_METRIC
@ F_METRIC
Definition: IRoute.h:54
inet::IRoute::F_NEXTHOP
@ F_NEXTHOP
Definition: IRoute.h:49