INET Framework for OMNeT++/OMNEST
|
All OSPF classes are in this namespace. More...
#include <OSPFRouter.h>
Public Member Functions | |
Router (RouterID id, cSimpleModule *containingModule, IInterfaceTable *ift, IIPv4RoutingTable *rt) | |
Constructor. More... | |
virtual | ~Router () |
Destructor. More... | |
void | setRouterID (RouterID id) |
RouterID | getRouterID () const |
void | setRFC1583Compatibility (bool compatibility) |
bool | getRFC1583Compatibility () const |
unsigned long | getAreaCount () const |
MessageHandler * | getMessageHandler () |
unsigned long | getASExternalLSACount () const |
ASExternalLSA * | getASExternalLSA (unsigned long i) |
const ASExternalLSA * | getASExternalLSA (unsigned long i) const |
bool | getASBoundaryRouter () const |
unsigned long | getRoutingTableEntryCount () const |
RoutingTableEntry * | getRoutingTableEntry (unsigned long i) |
const RoutingTableEntry * | getRoutingTableEntry (unsigned long i) const |
void | addRoutingTableEntry (RoutingTableEntry *entry) |
void | addWatches () |
Adds OMNeT++ watches for the routerID, the list of Areas and the list of AS External LSAs. More... | |
void | addArea (Area *area) |
Adds a new Area to the Area list. More... | |
Area * | getAreaByID (AreaID areaID) |
Returns the pointer to the Area identified by the input areaID, if it's on the Area list, nullptr otherwise. More... | |
Area * | getAreaByAddr (IPv4Address address) |
Returns the Area pointer from the Area list which contains the input IPv4 address, nullptr if there's no such area connected to the Router. More... | |
Interface * | getNonVirtualInterface (unsigned char ifIndex) |
Returns the pointer of the physical Interface identified by the input interface index, nullptr if the Router doesn't have such an interface. More... | |
bool | installLSA (OSPFLSA *lsa, AreaID areaID=BACKBONE_AREAID) |
Installs a new LSA into the Router database. More... | |
OSPFLSA * | findLSA (LSAType lsaType, LSAKeyType lsaKey, AreaID areaID) |
Find the LSA identified by the input lsaKey in the database. More... | |
void | ageDatabase () |
Ages the LSAs in the Router's database. More... | |
bool | hasAnyNeighborInStates (int states) const |
Returns true if any Neighbor on any Interface in any of the Router's Areas is in any of the input states, false otherwise. More... | |
void | removeFromAllRetransmissionLists (LSAKeyType lsaKey) |
Removes all LSAs from all Neighbor's retransmission lists which are identified by the input lsaKey. More... | |
bool | isOnAnyRetransmissionList (LSAKeyType lsaKey) const |
Returns true if there's at least one LSA on any Neighbor's retransmission list identified by the input lsaKey, false otherwise. More... | |
bool | floodLSA (OSPFLSA *lsa, AreaID areaID=BACKBONE_AREAID, Interface *intf=nullptr, Neighbor *neighbor=nullptr) |
Floods out the input lsa on a set of Interfaces. More... | |
bool | isLocalAddress (IPv4Address address) const |
Returns true if the input IPv4 address falls into any of the Router's Areas' configured IPv4 address ranges, false otherwise. More... | |
bool | hasAddressRange (const IPv4AddressRange &addressRange) const |
Returns true if one of the Router's Areas the same IPv4 address range configured as the input IPv4 address range, false otherwise. More... | |
bool | isDestinationUnreachable (OSPFLSA *lsa) const |
Returns true if the destination described by the input lsa is in the routing table, false otherwise. More... | |
RoutingTableEntry * | lookup (IPv4Address destination, std::vector< RoutingTableEntry * > *table=nullptr) const |
Do a lookup in either the input OSPF routing table, or if it's nullptr then in the Router's own routing table. More... | |
void | rebuildRoutingTable () |
Rebuilds the routing table from scratch(based on the LSA database). More... | |
IPv4AddressRange | getContainingAddressRange (const IPv4AddressRange &addressRange, bool *advertise=nullptr) const |
Scans through the router's areas' preconfigured address ranges and returns the one containing the input addressRange. More... | |
void | updateExternalRoute (IPv4Address networkAddress, const OSPFASExternalLSAContents &externalRouteContents, int ifIndex) |
Stores information on an AS External Route in externalRoutes and intalls(or updates) a new ASExternalLSA into the database. More... | |
void | addExternalRouteInIPTable (IPv4Address networkAddress, const OSPFASExternalLSAContents &externalRouteContents, int ifIndex) |
Add an AS External Route in IPRoutingTable. More... | |
void | removeExternalRoute (IPv4Address networkAddress) |
Removes an AS External Route from the database. More... | |
RoutingTableEntry * | getPreferredEntry (const OSPFLSA &lsa, bool skipSelfOriginated, std::vector< RoutingTableEntry * > *fromRoutingTable=nullptr) |
Selects the preferred routing table entry for the input LSA(which is either an ASExternalLSA or a SummaryLSA) according to the algorithm defined in RFC2328 Section 16.4. More... | |
Private Member Functions | |
bool | installASExternalLSA (OSPFASExternalLSA *lsa) |
Installs a new AS External LSA into the Router's database. More... | |
ASExternalLSA * | findASExternalLSA (LSAKeyType lsaKey) |
Find the AS External LSA identified by the input lsaKey in the database. More... | |
const ASExternalLSA * | findASExternalLSA (LSAKeyType lsaKey) const |
Find the AS External LSA identified by the input lsaKey in the database. More... | |
ASExternalLSA * | originateASExternalLSA (ASExternalLSA *lsa) |
Originates a new AS External LSA based on the input lsa. More... | |
LinkStateID | getUniqueLinkStateID (const IPv4AddressRange &destination, Metric destinationCost, ASExternalLSA *&lsaToReoriginate, bool externalMetricIsType2=false) const |
Generates a unique LinkStateID for a given destination. More... | |
void | calculateASExternalRoutes (std::vector< RoutingTableEntry * > &newRoutingTable) |
Calculate the AS External Routes from the ASExternalLSAs in the database. More... | |
void | notifyAboutRoutingTableChanges (std::vector< RoutingTableEntry * > &oldRoutingTable) |
After a routing table rebuild the changes in the routing table are identified and new SummaryLSAs are originated or old ones are flooded out in each area as necessary. More... | |
bool | hasRouteToASBoundaryRouter (const std::vector< RoutingTableEntry * > &inRoutingTable, RouterID routerID) const |
Returns true if there is a route to the AS Boundary Router identified by asbrRouterID in the input inRoutingTable, false otherwise. More... | |
std::vector< RoutingTableEntry * > | getRoutesToASBoundaryRouter (const std::vector< RoutingTableEntry * > &fromRoutingTable, RouterID routerID) const |
Returns an std::vector of routes leading to the AS Boundary Router identified by asbrRouterID from the input fromRoutingTable. More... | |
void | pruneASBoundaryRouterEntries (std::vector< RoutingTableEntry * > &asbrEntries) const |
Prunes the input std::vector of RoutingTableEntries according to the RFC2328 Section 16.4.1. More... | |
RoutingTableEntry * | selectLeastCostRoutingEntry (std::vector< RoutingTableEntry * > &entries) const |
Selects the least cost RoutingTableEntry from the input std::vector of RoutingTableEntries. More... | |
Private Attributes | |
IInterfaceTable * | ift |
IIPv4RoutingTable * | rt |
RouterID | routerID |
The router ID assigned by the IP layer. More... | |
std::map< AreaID, Area * > | areasByID |
A map of the contained areas with the AreaID as key. More... | |
std::vector< Area * > | areas |
A list of the contained areas. More... | |
std::map< LSAKeyType, ASExternalLSA *, LSAKeyType_Less > | asExternalLSAsByID |
A map of the ASExternalLSAs advertised by this router. More... | |
std::vector< ASExternalLSA * > | asExternalLSAs |
A list of the ASExternalLSAs advertised by this router. More... | |
std::map< IPv4Address, OSPFASExternalLSAContents > | externalRoutes |
A map of the external route advertised by this router. More... | |
cMessage * | ageTimer |
Database age timer - fires every second. More... | |
std::vector< RoutingTableEntry * > | routingTable |
The OSPF routing table - contains more information than the one in the IP layer. More... | |
MessageHandler * | messageHandler |
The message dispatcher class. More... | |
bool | rfc1583Compatibility |
Decides whether to handle the preferred routing table entry to an AS boundary router as defined in RFC1583 or not. More... | |
All OSPF classes are in this namespace.
Represents the full OSPF data structure as laid out in RFC2328.
inet::ospf::Router::Router | ( | RouterID | id, |
cSimpleModule * | containingModule, | ||
IInterfaceTable * | ift, | ||
IIPv4RoutingTable * | rt | ||
) |
Constructor.
Initializes internal variables, adds a MessageHandler and starts the Database Age timer.
|
virtual |
Destructor.
Clears all LSA lists and kills the Database Age timer.
void inet::ospf::Router::addArea | ( | Area * | area | ) |
Adds a new Area to the Area list.
area | [in] The Area to add. |
Referenced by inet::ospf::OSPFConfigReader::loadAreaFromXML().
void inet::ospf::Router::addExternalRouteInIPTable | ( | IPv4Address | networkAddress, |
const OSPFASExternalLSAContents & | externalRouteContents, | ||
int | ifIndex | ||
) |
Add an AS External Route in IPRoutingTable.
networkAddress | [in] The external route's network address. |
externalRouteContents | [in] Route configuration data for the external route. |
ifIndex | [in] |
Referenced by inet::ospf::LinkStateUpdateHandler::processPacket().
|
inline |
void inet::ospf::Router::addWatches | ( | ) |
Adds OMNeT++ watches for the routerID, the list of Areas and the list of AS External LSAs.
Referenced by inet::ospf::OSPFRouting::createOspfRouter().
void inet::ospf::Router::ageDatabase | ( | ) |
Ages the LSAs in the Router's database.
This method is called on every firing of the DATABASE_AGE_TIMER(every second).
Referenced by inet::ospf::MessageHandler::handleTimer().
|
private |
Calculate the AS External Routes from the ASExternalLSAs in the database.
newRoutingTable | [in/out] Push the new RoutingTableEntries into this routing table, and also use this for path calculations. |
Referenced by rebuildRoutingTable().
|
private |
Find the AS External LSA identified by the input lsaKey in the database.
lsaKey | [in] Look for the AS External LSA which is identified by this key. |
Referenced by findLSA(), and getUniqueLinkStateID().
|
private |
Find the AS External LSA identified by the input lsaKey in the database.
lsaKey | [in] Look for the AS External LSA which is identified by this key. |
OSPFLSA * inet::ospf::Router::findLSA | ( | LSAType | lsaType, |
LSAKeyType | lsaKey, | ||
AreaID | areaID | ||
) |
Find the LSA identified by the input lsaKey in the database.
lsaType | [in] Look for an LSA of this type. |
lsaKey | [in] Look for the LSA which is identified by this key. |
areaID | [in] In case of Router, Network and Summary LSAs, look in the Area's database identified by this parameter. |
Referenced by inet::ospf::DatabaseDescriptionHandler::processDDPacket(), inet::ospf::LinkStateRequestHandler::processPacket(), and inet::ospf::LinkStateUpdateHandler::processPacket().
bool inet::ospf::Router::floodLSA | ( | OSPFLSA * | lsa, |
AreaID | areaID = BACKBONE_AREAID , |
||
Interface * | intf = nullptr , |
||
Neighbor * | neighbor = nullptr |
||
) |
Floods out the input lsa on a set of Interfaces.
lsa | [in] The LSA to be flooded out. |
areaID | [in] If the lsa is a Router, Network or Summary LSA, then flood it only in this Area. |
intf | [in] The Interface this LSA arrived on. |
neighbor | [in] The Nieghbor this LSA arrived from. |
Referenced by ageDatabase(), installASExternalLSA(), notifyAboutRoutingTableChanges(), inet::ospf::LinkStateUpdateHandler::processPacket(), removeExternalRoute(), and updateExternalRoute().
Area * inet::ospf::Router::getAreaByAddr | ( | IPv4Address | address | ) |
Returns the pointer to the Area identified by the input areaID, if it's on the Area list, nullptr otherwise.
areaID | [in] The Area identifier. |
Referenced by inet::ospf::Area::calculateShortestPathTree(), inet::ospf::OSPFConfigReader::loadHostRoute(), inet::ospf::OSPFConfigReader::loadInterfaceParameters(), inet::ospf::OSPFConfigReader::loadVirtualLink(), inet::ospf::Area::originateRouterLSA(), inet::ospf::LinkStateUpdateHandler::processPacket(), inet::ospf::MessageHandler::processPacket(), and rebuildRoutingTable().
|
inline |
Referenced by inet::ospf::Area::originateRouterLSA(), and inet::ospf::MessageHandler::processPacket().
|
inline |
Referenced by inet::ospf::Area::originateRouterLSA().
|
inline |
Referenced by inet::ospf::OSPFRouting::checkExternalRoute(), and inet::ospf::Neighbor::createDatabaseSummary().
|
inline |
|
inline |
Referenced by inet::ospf::OSPFRouting::checkExternalRoute(), and inet::ospf::Neighbor::createDatabaseSummary().
IPv4AddressRange inet::ospf::Router::getContainingAddressRange | ( | const IPv4AddressRange & | addressRange, |
bool * | advertise = nullptr |
||
) | const |
Scans through the router's areas' preconfigured address ranges and returns the one containing the input addressRange.
addressRange | [in] The address range to look for. |
advertise | [out] Whether the advertise flag is set in the returned preconfigured address range. |
Referenced by notifyAboutRoutingTableChanges(), and inet::ospf::Area::originateSummaryLSA().
|
inline |
Referenced by inet::ospf::LinkStateUpdateHandler::acknowledgeLSA(), inet::ospf::Neighbor::clearRequestRetransmissionTimer(), inet::ospf::Neighbor::clearUpdateRetransmissionTimer(), inet::ospf::Interface::floodLSA(), inet::ospf::OSPFRouting::handleMessage(), inet::ospf::NeighborStateLoading::processEvent(), inet::ospf::InterfaceStatePointToPoint::processEvent(), inet::ospf::NeighborStateExchange::processEvent(), inet::ospf::NeighborStateDown::processEvent(), inet::ospf::NeighborStateExchangeStart::processEvent(), inet::ospf::NeighborStateFull::processEvent(), inet::ospf::NeighborStateInit::processEvent(), inet::ospf::InterfaceStateNotDesignatedRouter::processEvent(), inet::ospf::InterfaceStateWaiting::processEvent(), inet::ospf::NeighborStateTwoWay::processEvent(), inet::ospf::InterfaceStateBackup::processEvent(), inet::ospf::InterfaceStateDesignatedRouter::processEvent(), inet::ospf::NeighborStateAttempt::processEvent(), inet::ospf::InterfaceStateDown::processEvent(), inet::ospf::LinkStateRequestHandler::processPacket(), inet::ospf::HelloHandler::processPacket(), inet::ospf::LinkStateAcknowledgementHandler::processPacket(), inet::ospf::DatabaseDescriptionHandler::processPacket(), inet::ospf::LinkStateUpdateHandler::processPacket(), inet::ospf::Interface::reset(), inet::ospf::Neighbor::reset(), inet::ospf::Neighbor::retransmitDatabaseDescriptionPacket(), inet::ospf::Neighbor::retransmitUpdatePacket(), inet::ospf::Neighbor::sendDatabaseDescriptionPacket(), inet::ospf::Interface::sendDelayedAcknowledgements(), inet::ospf::Interface::sendHelloPacket(), inet::ospf::Neighbor::sendLinkStateRequestPacket(), inet::ospf::Interface::sendLSAcknowledgement(), inet::ospf::Neighbor::startRequestRetransmissionTimer(), inet::ospf::Neighbor::startUpdateRetransmissionTimer(), inet::ospf::Interface::~Interface(), and inet::ospf::Neighbor::~Neighbor().
Interface * inet::ospf::Router::getNonVirtualInterface | ( | unsigned char | ifIndex | ) |
Returns the pointer of the physical Interface identified by the input interface index, nullptr if the Router doesn't have such an interface.
ifIndex | [in] The interface index to look for. |
Referenced by inet::ospf::Area::originateSummaryLSA().
RoutingTableEntry * inet::ospf::Router::getPreferredEntry | ( | const OSPFLSA & | lsa, |
bool | skipSelfOriginated, | ||
std::vector< RoutingTableEntry * > * | fromRoutingTable = nullptr |
||
) |
Selects the preferred routing table entry for the input LSA(which is either an ASExternalLSA or a SummaryLSA) according to the algorithm defined in RFC2328 Section 16.4.
points(1) through(3). This method is used when calculating the AS external routes and also when originating an SummaryLSA for an AS Boundary Router.
lsa | [in] The LSA describing the destination for which the preferred Routing Entry is sought for. |
skipSelfOriginated | [in] Whether to disregard this LSA if it was self-originated. |
fromRoutingTable | [in] The Routing Table from which to select the preferred RoutingTableEntry. If it is nullptr then the router's current routing table is used instead. |
Referenced by calculateASExternalRoutes(), and inet::ospf::Area::originateSummaryLSA().
|
inline |
|
inline |
Referenced by inet::ospf::LinkStateUpdateHandler::acknowledgeLSA(), inet::ospf::Area::ageDatabase(), inet::ospf::InterfaceState::calculateDesignatedRouter(), inet::ospf::Area::calculateInterAreaRoutes(), inet::ospf::Area::calculateNextHops(), inet::ospf::Area::calculateShortestPathTree(), inet::ospf::InterfaceState::changeState(), inet::ospf::NeighborState::changeState(), inet::ospf::Interface::createUpdatePacket(), inet::ospf::Area::getUniqueLinkStateID(), inet::ospf::MessageHandler::messageReceived(), inet::ospf::Neighbor::needAdjacency(), inet::ospf::Area::originateNetworkLSA(), inet::ospf::Area::originateRouterLSA(), inet::ospf::Area::originateSummaryLSA(), inet::ospf::HelloHandler::processPacket(), inet::ospf::DatabaseDescriptionHandler::processPacket(), inet::ospf::LinkStateUpdateHandler::processPacket(), inet::ospf::Area::recheckSummaryLSAs(), inet::ospf::Neighbor::retransmitUpdatePacket(), inet::ospf::Neighbor::sendDatabaseDescriptionPacket(), inet::ospf::Interface::sendDelayedAcknowledgements(), inet::ospf::Interface::sendHelloPacket(), inet::ospf::Neighbor::sendLinkStateRequestPacket(), and inet::ospf::Interface::sendLSAcknowledgement().
|
private |
Returns an std::vector of routes leading to the AS Boundary Router identified by asbrRouterID from the input fromRoutingTable.
If there are no routes leading to the AS Boundary Router, the returned std::vector is empty.
fromRoutingTable | [in] The routing table to look in. |
asbrRouterID | [in] The ID of the AS Boundary Router to look for. |
Referenced by getPreferredEntry().
|
inline |
Referenced by inet::ospf::Area::originateSummaryLSA().
|
inline |
|
inline |
Referenced by inet::ospf::Area::originateSummaryLSA().
|
private |
Generates a unique LinkStateID for a given destination.
This may require the reorigination of an LSA already in the database(with a different LinkStateID).
destination | [in] The destination for which a unique LinkStateID is required. |
destinationCost | [in] The path cost to the destination. |
lsaToReoriginate | [out] The LSA to reoriginate(which was already in the database, and had to be changed). |
externalMetricIsType2 | [in] True if the destinationCost is given as a Type2 external metric. |
bool inet::ospf::Router::hasAddressRange | ( | const IPv4AddressRange & | addressRange | ) | const |
Returns true if one of the Router's Areas the same IPv4 address range configured as the input IPv4 address range, false otherwise.
addressRange | [in] The IPv4 address range to look for. |
Referenced by inet::ospf::Area::calculateInterAreaRoutes().
bool inet::ospf::Router::hasAnyNeighborInStates | ( | int | states | ) | const |
Returns true if any Neighbor on any Interface in any of the Router's Areas is in any of the input states, false otherwise.
states | [in] A bitfield combination of NeighborStateType values. |
Referenced by ageDatabase(), and inet::ospf::LinkStateUpdateHandler::processPacket().
|
private |
Returns true if there is a route to the AS Boundary Router identified by asbrRouterID in the input inRoutingTable, false otherwise.
inRoutingTable | [in] The routing table to look in. |
asbrRouterID | [in] The ID of the AS Boundary Router to look for. |
Referenced by getPreferredEntry().
|
private |
Installs a new AS External LSA into the Router's database.
It tries to install keep one of multiple functionally equivalent AS External LSAs in the database. (See the comment in the method implementation.)
lsa | [in] The LSA to install. It will be copied into the database. |
From RFC2328 Section 12.4.4.1.: "If two routers, both reachable from one another, originate functionally equivalent AS-External-LSAs(i.e., same destination, cost and non-zero forwarding address), then the LSA originated by the router having the highest OSPF Router ID is used. The router having the lower OSPF Router ID can then flush its LSA." The problem is: how do we tell whether two routers are reachable from one another based on a Link State Update packet? 0. We can assume that if this LSA reached this router, then this router is reachable from the other router. But what about the other direction?
Referenced by installLSA(), and updateExternalRoute().
bool inet::ospf::Router::installLSA | ( | OSPFLSA * | lsa, |
AreaID | areaID = BACKBONE_AREAID |
||
) |
Installs a new LSA into the Router database.
Checks the input LSA's type and installs it into either the selected Area's database, or if it's an AS External LSA then into the Router's common asExternalLSAs list.
lsa | [in] The LSA to install. It will be copied into the database. |
areaID | [in] Identifies the input Router, Network and Summary LSA's Area. |
Referenced by inet::ospf::LinkStateUpdateHandler::processPacket().
bool inet::ospf::Router::isDestinationUnreachable | ( | OSPFLSA * | lsa | ) | const |
Returns true if the destination described by the input lsa is in the routing table, false otherwise.
lsa | [in] The LSA which describes the destination to look for. |
Referenced by inet::ospf::Area::ageDatabase(), and ageDatabase().
bool inet::ospf::Router::isLocalAddress | ( | IPv4Address | address | ) | const |
Returns true if the input IPv4 address falls into any of the Router's Areas' configured IPv4 address ranges, false otherwise.
address | [in] The IPv4 address to look for. |
Referenced by inet::ospf::LinkStateUpdateHandler::processPacket().
bool inet::ospf::Router::isOnAnyRetransmissionList | ( | LSAKeyType | lsaKey | ) | const |
Returns true if there's at least one LSA on any Neighbor's retransmission list identified by the input lsaKey, false otherwise.
lsaKey | [in] Identifies the LSAs to look for on the retransmission lists. |
Referenced by ageDatabase().
RoutingTableEntry * inet::ospf::Router::lookup | ( | IPv4Address | destination, |
std::vector< RoutingTableEntry * > * | table = nullptr |
||
) | const |
Do a lookup in either the input OSPF routing table, or if it's nullptr then in the Router's own routing table.
destination | [in] The destination to look up in the routing table. |
table | [in] The routing table to do the lookup in. |
Referenced by calculateASExternalRoutes(), getPreferredEntry(), and isDestinationUnreachable().
|
private |
After a routing table rebuild the changes in the routing table are identified and new SummaryLSAs are originated or old ones are flooded out in each area as necessary.
oldRoutingTable | [in] The previous version of the routing table(which is then compared with the one in routingTable). |
Referenced by rebuildRoutingTable().
|
private |
Originates a new AS External LSA based on the input lsa.
lsa | [in] The LSA whose contents should be copied into the newly originated LSA. |
Referenced by ageDatabase().
|
private |
Prunes the input std::vector of RoutingTableEntries according to the RFC2328 Section 16.4.1.
asbrEntries | [in/out] The list of RoutingTableEntries to prune. |
Referenced by getPreferredEntry().
void inet::ospf::Router::rebuildRoutingTable | ( | ) |
Rebuilds the routing table from scratch(based on the LSA database).
Referenced by inet::ospf::Area::ageDatabase(), ageDatabase(), inet::ospf::InterfaceState::changeState(), inet::ospf::NeighborState::changeState(), inet::ospf::HelloHandler::processPacket(), inet::ospf::LinkStateUpdateHandler::processPacket(), and updateExternalRoute().
void inet::ospf::Router::removeExternalRoute | ( | IPv4Address | networkAddress | ) |
Removes an AS External Route from the database.
networkAddress | [in] The network address of the external route which needs to be removed. |
void inet::ospf::Router::removeFromAllRetransmissionLists | ( | LSAKeyType | lsaKey | ) |
Removes all LSAs from all Neighbor's retransmission lists which are identified by the input lsaKey.
lsaKey | [in] Identifies the LSAs to remove from the retransmission lists. |
Referenced by inet::ospf::LinkStateUpdateHandler::processPacket().
|
private |
Selects the least cost RoutingTableEntry from the input std::vector of RoutingTableEntries.
entries | [in] The RoutingTableEntries to choose the least cost one from. |
Referenced by getPreferredEntry().
|
inline |
Referenced by inet::ospf::OSPFConfigReader::loadConfigFromXML().
|
inline |
void inet::ospf::Router::updateExternalRoute | ( | IPv4Address | networkAddress, |
const OSPFASExternalLSAContents & | externalRouteContents, | ||
int | ifIndex | ||
) |
Stores information on an AS External Route in externalRoutes and intalls(or updates) a new ASExternalLSA into the database.
networkAddress | [in] The external route's network address. |
externalRouteContents | [in] Route configuration data for the external route. |
ifIndex | [in] |
Referenced by inet::ospf::OSPFRouting::insertExternalRoute(), and inet::ospf::OSPFConfigReader::loadExternalRoute().
|
private |
Database age timer - fires every second.
Referenced by ageDatabase(), Router(), and ~Router().
|
private |
A list of the contained areas.
Referenced by addArea(), addWatches(), ageDatabase(), floodLSA(), getAreaByAddr(), getContainingAddressRange(), getNonVirtualInterface(), hasAddressRange(), hasAnyNeighborInStates(), installASExternalLSA(), isLocalAddress(), isOnAnyRetransmissionList(), lookup(), notifyAboutRoutingTableChanges(), rebuildRoutingTable(), removeFromAllRetransmissionLists(), and ~Router().
A map of the contained areas with the AreaID as key.
Referenced by addArea(), findLSA(), floodLSA(), getAreaByID(), and installLSA().
|
private |
A list of the ASExternalLSAs advertised by this router.
Referenced by addWatches(), ageDatabase(), calculateASExternalRoutes(), installASExternalLSA(), and ~Router().
|
private |
A map of the ASExternalLSAs advertised by this router.
Referenced by ageDatabase(), findASExternalLSA(), installASExternalLSA(), and removeExternalRoute().
|
private |
A map of the external route advertised by this router.
Referenced by removeExternalRoute(), and updateExternalRoute().
|
private |
Referenced by addExternalRouteInIPTable(), calculateASExternalRoutes(), lookup(), and updateExternalRoute().
|
private |
The message dispatcher class.
Referenced by ageDatabase(), Router(), and ~Router().
|
private |
Decides whether to handle the preferred routing table entry to an AS boundary router as defined in RFC1583 or not.
Referenced by calculateASExternalRoutes(), and getPreferredEntry().
|
private |
The router ID assigned by the IP layer.
Referenced by addWatches(), ageDatabase(), getPreferredEntry(), getUniqueLinkStateID(), installASExternalLSA(), isDestinationUnreachable(), notifyAboutRoutingTableChanges(), removeExternalRoute(), and updateExternalRoute().
|
private |
The OSPF routing table - contains more information than the one in the IP layer.
Referenced by addWatches(), getPreferredEntry(), installASExternalLSA(), lookup(), notifyAboutRoutingTableChanges(), rebuildRoutingTable(), and ~Router().
|
private |
Referenced by addExternalRouteInIPTable(), rebuildRoutingTable(), and updateExternalRoute().