#include <IRoutingTable.h>
Public Member Functions | |
| virtual | ~IRoutingTable () |
| virtual void | printRoutingTable () const =0 |
| virtual bool | isIPForwardingEnabled ()=0 |
| virtual IPAddress | getRouterId ()=0 |
| virtual void | setRouterId (IPAddress a)=0 |
Interfaces | |
| virtual void | configureInterfaceForIPv4 (InterfaceEntry *ie)=0 |
| virtual InterfaceEntry * | getInterfaceByAddress (const IPAddress &address) const =0 |
Routing functions (query the route table) | |
| virtual bool | isLocalAddress (const IPAddress &dest) const =0 |
| virtual const IPRoute * | findBestMatchingRoute (const IPAddress &dest) const =0 |
| virtual InterfaceEntry * | getInterfaceForDestAddr (const IPAddress &dest) const =0 |
| virtual IPAddress | getGatewayForDestAddr (const IPAddress &dest) const =0 |
Multicast routing functions | |
| virtual bool | isLocalMulticastAddress (const IPAddress &dest) const =0 |
| virtual MulticastRoutes | getMulticastRoutesFor (const IPAddress &dest) const =0 |
Route table manipulation | |
| virtual int | getNumRoutes () const =0 |
| virtual const IPRoute * | getRoute (int k) const =0 |
| virtual const IPRoute * | findRoute (const IPAddress &target, const IPAddress &netmask, const IPAddress &gw, int metric=0, const char *dev=NULL) const =0 |
| virtual const IPRoute * | getDefaultRoute () const =0 |
| virtual void | addRoute (const IPRoute *entry)=0 |
| virtual bool | deleteRoute (const IPRoute *entry)=0 |
| virtual std::vector< IPAddress > | gatherAddresses () const =0 |
A C++ interface to abstract the functionality of IRoutingTable. Referring to IRoutingTable via this interface makes it possible to transparently replace IRoutingTable with a different implementation, without any change to the base INET.
Definition at line 45 of file IRoutingTable.h.
| virtual IRoutingTable::~IRoutingTable | ( | ) | [inline, virtual] |
Definition at line 48 of file IRoutingTable.h.
{};
| virtual void IRoutingTable::addRoute | ( | const IPRoute * | entry | ) | [pure virtual] |
Adds a route to the routing table. Note that once added, routes cannot be modified; you must delete and re-add them instead.
Referenced by NetworkConfigurator::addDefaultRoutes(), FlatNetworkConfigurator::addDefaultRoutes(), NetworkConfigurator::addPointToPointPeerRoutes(), FlatNetworkConfigurator::fillRoutingTables(), RoutingTableParser::parseRouting(), TED::rebuildRoutingTable(), OSPF::Router::RebuildRoutingTable(), and OSPF::Router::UpdateExternalRoute().
| virtual void IRoutingTable::configureInterfaceForIPv4 | ( | InterfaceEntry * | ie | ) | [pure virtual] |
| virtual bool IRoutingTable::deleteRoute | ( | const IPRoute * | entry | ) | [pure virtual] |
Deletes the given route from the routing table. Returns true if the route was deleted correctly, false if it was not in the routing table.
Referenced by TED::rebuildRoutingTable(), and OSPF::Router::RebuildRoutingTable().
| virtual const IPRoute* IRoutingTable::findBestMatchingRoute | ( | const IPAddress & | dest | ) | const [pure virtual] |
The routing function.
Referenced by IP::routePacket().
| virtual const IPRoute* IRoutingTable::findRoute | ( | const IPAddress & | target, | |
| const IPAddress & | netmask, | |||
| const IPAddress & | gw, | |||
| int | metric = 0, |
|||
| const char * | dev = NULL | |||
| ) | const [pure virtual] |
Finds and returns the default route, or NULL if it doesn't exist
| virtual std::vector<IPAddress> IRoutingTable::gatherAddresses | ( | ) | const [pure virtual] |
Utility function: Returns a vector of all addresses of the node.
| virtual const IPRoute* IRoutingTable::getDefaultRoute | ( | ) | const [pure virtual] |
Finds and returns the default route, or NULL if it doesn't exist
| virtual IPAddress IRoutingTable::getGatewayForDestAddr | ( | const IPAddress & | dest | ) | const [pure virtual] |
Convenience function based on findBestMatchingRoute().
Returns the gateway to send the destination. Returns null address if the destination is not in routing table or there is no gateway (local delivery).
| virtual InterfaceEntry* IRoutingTable::getInterfaceByAddress | ( | const IPAddress & | address | ) | const [pure virtual] |
Returns an interface given by its address. Returns NULL if not found.
Referenced by RSVP::commitResv(), IP::encapsulate(), TED::initialize(), and TED::rebuildRoutingTable().
| virtual InterfaceEntry* IRoutingTable::getInterfaceForDestAddr | ( | const IPAddress & | dest | ) | const [pure virtual] |
Convenience function based on findBestMatchingRoute().
Returns the interface Id to send the packets with dest as destination address, or -1 if destination is not in routing table.
Referenced by ARP::addressRecognized(), RSVP::commitResv(), RSVP::evalNextHopInterface(), LDP::findInterfaceFromPeerAddr(), LDP::locateNextHop(), SCTPAssociation::pmStartPathManagement(), IP::routeMulticastPacket(), and SCTPPathVariables::SCTPPathVariables().
| virtual MulticastRoutes IRoutingTable::getMulticastRoutesFor | ( | const IPAddress & | dest | ) | const [pure virtual] |
Returns routes for a multicast address.
Referenced by IP::routeMulticastPacket().
| virtual int IRoutingTable::getNumRoutes | ( | ) | const [pure virtual] |
Returns the total number of routes (unicast, multicast, plus the default route).
Referenced by NetworkInfo::dumpRoutingInfo(), LDP::findPeerAddrFromInterface(), TED::initialize(), LDP::rebuildFecList(), TED::rebuildRoutingTable(), OSPF::Router::RebuildRoutingTable(), and OSPF::Router::UpdateExternalRoute().
| virtual const IPRoute* IRoutingTable::getRoute | ( | int | k | ) | const [pure virtual] |
Returns the kth route. The returned route cannot be modified; you must delete and re-add it instead. This rule is emphasized by returning a const pointer.
Referenced by NetworkInfo::dumpRoutingInfo(), LDP::findPeerAddrFromInterface(), TED::initialize(), LDP::rebuildFecList(), TED::rebuildRoutingTable(), OSPF::Router::RebuildRoutingTable(), and OSPF::Router::UpdateExternalRoute().
| virtual IPAddress IRoutingTable::getRouterId | ( | ) | [pure virtual] |
Returns routerId.
Referenced by NetworkConfigurator::assignAddresses(), TED::initialize(), SimpleClassifier::initialize(), RSVP::initialize(), OSPFRouting::initialize(), LinkStateRouting::initialize(), LIBTable::initialize(), LDP::openTCPConnectionToPeer(), LDP::processHelloTimeout(), LDP::processLDPHello(), IP::routeMulticastPacket(), IPAddressResolver::routerIdOf(), LDP::sendHelloTo(), LDP::sendMapping(), LDP::sendMappingRequest(), and LDP::sendNotify().
| virtual bool IRoutingTable::isIPForwardingEnabled | ( | ) | [pure virtual] |
IP forwarding on/off
Referenced by RoutingTableParser::parseMulticastGroups(), IP::routeMulticastPacket(), and IP::routePacket().
| virtual bool IRoutingTable::isLocalAddress | ( | const IPAddress & | dest | ) | const [pure virtual] |
Checks if the address is a local one, i.e. one of the host's.
Referenced by ARP::addressRecognized(), LDP::findInterfaceFromPeerAddr(), and IP::routePacket().
| virtual bool IRoutingTable::isLocalMulticastAddress | ( | const IPAddress & | dest | ) | const [pure virtual] |
Checks if the address is in one of the local multicast group address list.
Referenced by IP::routeMulticastPacket().
| virtual void IRoutingTable::printRoutingTable | ( | ) | const [pure virtual] |
For debugging
| virtual void IRoutingTable::setRouterId | ( | IPAddress | a | ) | [pure virtual] |
Sets routerId.
Referenced by NetworkConfigurator::assignAddresses().
1.7.1