a Link State Advertisement (LSA) for a router, used in global routing. More...
#include <global-router-interface.h>
Public Types | |
enum | LSType { Unknown = 0, RouterLSA, NetworkLSA, SummaryLSA, SummaryLSA_ASBR, ASExternalLSAs } |
corresponds to LS type field of RFC 2328 OSPF LSA header More... | |
enum | SPFStatus { LSA_SPF_NOT_EXPLORED = 0, LSA_SPF_CANDIDATE, LSA_SPF_IN_SPFTREE } |
Enumeration of the possible values of the status flag in the Routing Link State Advertisements. More... | |
Public Member Functions | |
GlobalRoutingLSA () | |
Create a blank Global Routing Link State Advertisement. | |
GlobalRoutingLSA (SPFStatus status, Ipv4Address linkStateId, Ipv4Address advertisingRtr) | |
Create an initialized Global Routing Link State Advertisement. | |
GlobalRoutingLSA (GlobalRoutingLSA &lsa) | |
Copy constructor for a Global Routing Link State Advertisement. | |
~GlobalRoutingLSA () | |
Destroy an existing Global Routing Link State Advertisement. | |
GlobalRoutingLSA & | operator= (const GlobalRoutingLSA &lsa) |
Assignment operator for a Global Routing Link State Advertisement. | |
void | CopyLinkRecords (const GlobalRoutingLSA &lsa) |
Copy any Global Routing Link Records in a given Global Routing Link State Advertisement to the current LSA. | |
uint32_t | AddLinkRecord (GlobalRoutingLinkRecord *lr) |
Add a given Global Routing Link Record to the LSA. | |
uint32_t | GetNLinkRecords (void) const |
Return the number of Global Routing Link Records in the LSA. | |
GlobalRoutingLinkRecord * | GetLinkRecord (uint32_t n) const |
Return a pointer to the specified Global Routing Link Record. | |
void | ClearLinkRecords (void) |
Release all of the Global Routing Link Records present in the Global Routing Link State Advertisement and make the list of link records empty. | |
bool | IsEmpty (void) const |
Check to see if the list of Global Routing Link Records present in the Global Routing Link State Advertisement is empty. | |
void | Print (std::ostream &os) const |
Print the contents of the Global Routing Link State Advertisement and any Global Routing Link Records present in the list. Quite verbose. | |
LSType | GetLSType (void) const |
Return the LSType field of the LSA. | |
void | SetLSType (LSType typ) |
Set the LS type field of the LSA. | |
Ipv4Address | GetLinkStateId (void) const |
Get the Link State ID as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement. | |
void | SetLinkStateId (Ipv4Address addr) |
Set the Link State ID is defined by the OSPF spec. We always set it to the router ID of the router making the advertisement. | |
Ipv4Address | GetAdvertisingRouter (void) const |
Get the Advertising Router as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement. | |
void | SetAdvertisingRouter (Ipv4Address rtr) |
Set the Advertising Router as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement. | |
void | SetNetworkLSANetworkMask (Ipv4Mask mask) |
For a Network LSA, set the Network Mask field that precedes the list of attached routers. | |
Ipv4Mask | GetNetworkLSANetworkMask (void) const |
For a Network LSA, get the Network Mask field that precedes the list of attached routers. | |
uint32_t | AddAttachedRouter (Ipv4Address addr) |
Add an attached router to the list in the NetworkLSA. | |
uint32_t | GetNAttachedRouters (void) const |
Return the number of attached routers listed in the NetworkLSA. | |
Ipv4Address | GetAttachedRouter (uint32_t n) const |
Return an Ipv4Address corresponding to the specified attached router. | |
SPFStatus | GetStatus (void) const |
Get the SPF status of the advertisement. | |
void | SetStatus (SPFStatus status) |
Set the SPF status of the advertisement. | |
Private Types | |
typedef std::list < GlobalRoutingLinkRecord * > | ListOfLinkRecords_t |
typedef std::list< Ipv4Address > | ListOfAttachedRouters_t |
Private Attributes | |
LSType | m_lsType |
Ipv4Address | m_linkStateId |
Ipv4Address | m_advertisingRtr |
ListOfLinkRecords_t | m_linkRecords |
Ipv4Mask | m_networkLSANetworkMask |
ListOfAttachedRouters_t | m_attachedRouters |
SPFStatus | m_status |
a Link State Advertisement (LSA) for a router, used in global routing.
Roughly equivalent to a global incarnation of the OSPF link state header combined with a list of Link Records. Since it's global, there's no need for age or sequence number. See RFC 2328, Appendix A.
Definition at line 249 of file global-router-interface.h.
typedef std::list<Ipv4Address> ns3::GlobalRoutingLSA::ListOfAttachedRouters_t [private] |
A convenience typedef to avoid too much writers cramp.
Definition at line 528 of file global-router-interface.h.
typedef std::list<GlobalRoutingLinkRecord*> ns3::GlobalRoutingLSA::ListOfLinkRecords_t [private] |
A convenience typedef to avoid too much writers cramp.
Definition at line 506 of file global-router-interface.h.
corresponds to LS type field of RFC 2328 OSPF LSA header
Unknown |
Uninitialized Type |
RouterLSA | |
NetworkLSA | |
SummaryLSA | |
SummaryLSA_ASBR | |
ASExternalLSAs |
Definition at line 256 of file global-router-interface.h.
Enumeration of the possible values of the status flag in the Routing Link State Advertisements.
LSA_SPF_NOT_EXPLORED |
New vertex not yet considered |
LSA_SPF_CANDIDATE |
Vertex is in the SPF candidate queue |
LSA_SPF_IN_SPFTREE |
Vertex is in the SPF tree |
Definition at line 269 of file global-router-interface.h.
ns3::GlobalRoutingLSA::GlobalRoutingLSA | ( | ) |
Create a blank Global Routing Link State Advertisement.
On completion Ipv4Address variables initialized to 0.0.0.0 and the list of Link State Records is empty.
Definition at line 135 of file global-router-interface.cc.
References NS_LOG_FUNCTION_NOARGS.
ns3::GlobalRoutingLSA::GlobalRoutingLSA | ( | GlobalRoutingLSA::SPFStatus | status, | |
Ipv4Address | linkStateId, | |||
Ipv4Address | advertisingRtr | |||
) |
Create an initialized Global Routing Link State Advertisement.
On completion the list of Link State Records is empty.
status | The status to of the new LSA. | |
linkStateId | The Ipv4Address for the link state ID field. | |
advertisingRtr | The Ipv4Address for the advertising router field. |
Definition at line 148 of file global-router-interface.cc.
References NS_LOG_FUNCTION.
ns3::GlobalRoutingLSA::GlobalRoutingLSA | ( | GlobalRoutingLSA & | lsa | ) |
Copy constructor for a Global Routing Link State Advertisement.
Takes a piece of memory and constructs a semantically identical copy of the given LSA.
lsa | The existing LSA to be used as the source. |
Definition at line 164 of file global-router-interface.cc.
References CopyLinkRecords(), IsEmpty(), NS_ASSERT_MSG, and NS_LOG_FUNCTION_NOARGS.
ns3::GlobalRoutingLSA::~GlobalRoutingLSA | ( | ) |
Destroy an existing Global Routing Link State Advertisement.
Any Global Routing Link Records present in the list are freed.
Definition at line 214 of file global-router-interface.cc.
References ClearLinkRecords(), and NS_LOG_FUNCTION_NOARGS.
uint32_t ns3::GlobalRoutingLSA::AddAttachedRouter | ( | Ipv4Address | addr | ) |
Add an attached router to the list in the NetworkLSA.
addr | The Ipv4Address of the interface on the network link |
Definition at line 344 of file global-router-interface.cc.
References m_attachedRouters, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs().
uint32_t ns3::GlobalRoutingLSA::AddLinkRecord | ( | GlobalRoutingLinkRecord * | lr | ) |
Add a given Global Routing Link Record to the LSA.
lr | The Global Routing Link Record to be added. |
Definition at line 241 of file global-router-interface.cc.
References m_linkRecords, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::ProcessBridgedBroadcastLink(), ns3::GlobalRouter::ProcessPointToPointLink(), ns3::GlobalRouter::ProcessSingleBroadcastLink(), and ns3::GlobalRouteManagerImplTest::RunTests().
void ns3::GlobalRoutingLSA::ClearLinkRecords | ( | void | ) |
Release all of the Global Routing Link Records present in the Global Routing Link State Advertisement and make the list of link records empty.
Definition at line 221 of file global-router-interface.cc.
References m_linkRecords, NS_LOG_FUNCTION_NOARGS, and NS_LOG_LOGIC.
Referenced by operator=(), and ~GlobalRoutingLSA().
void ns3::GlobalRoutingLSA::CopyLinkRecords | ( | const GlobalRoutingLSA & | lsa | ) |
Copy any Global Routing Link Records in a given Global Routing Link State Advertisement to the current LSA.
Existing Link Records are not deleted -- this is a concatenation of Link Records.
lsa | The LSA to copy the Link Records from. |
Definition at line 192 of file global-router-interface.cc.
References ns3::GlobalRoutingLinkRecord::GetLinkData(), ns3::GlobalRoutingLinkRecord::GetLinkId(), ns3::GlobalRoutingLinkRecord::GetLinkType(), ns3::GlobalRoutingLinkRecord::GetMetric(), m_attachedRouters, m_linkRecords, NS_LOG_FUNCTION_NOARGS, ns3::GlobalRoutingLinkRecord::SetLinkData(), ns3::GlobalRoutingLinkRecord::SetLinkId(), ns3::GlobalRoutingLinkRecord::SetLinkType(), and ns3::GlobalRoutingLinkRecord::SetMetric().
Referenced by GlobalRoutingLSA(), and operator=().
Ipv4Address ns3::GlobalRoutingLSA::GetAdvertisingRouter | ( | void | ) | const |
Get the Advertising Router as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 309 of file global-router-interface.cc.
References m_advertisingRtr, and NS_LOG_FUNCTION_NOARGS.
Ipv4Address ns3::GlobalRoutingLSA::GetAttachedRouter | ( | uint32_t | n | ) | const |
Return an Ipv4Address corresponding to the specified attached router.
n | The attached router number desired (number in the list). |
Definition at line 359 of file global-router-interface.cc.
References m_attachedRouters, NS_ASSERT_MSG, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::SPFNext().
GlobalRoutingLinkRecord * ns3::GlobalRoutingLSA::GetLinkRecord | ( | uint32_t | n | ) | const |
Return a pointer to the specified Global Routing Link Record.
n | The LSA number desired. |
Definition at line 256 of file global-router-interface.cc.
References m_linkRecords, NS_ASSERT_MSG, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerLSDB::GetLSAByLinkData(), ns3::GlobalRouteManagerImpl::SPFGetNextLink(), ns3::GlobalRouteManagerImpl::SPFIntraAddRouter(), ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::GlobalRouteManagerImpl::SPFProcessStubs().
Ipv4Address ns3::GlobalRoutingLSA::GetLinkStateId | ( | void | ) | const |
Get the Link State ID as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 295 of file global-router-interface.cc.
References m_linkStateId, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::BuildGlobalRoutingDatabase(), ns3::GlobalRouteManagerImplTest::RunTests(), ns3::GlobalRouteManagerImpl::SPFIntraAddRouter(), ns3::GlobalRouteManagerImpl::SPFIntraAddTransit(), ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::GlobalRouteManagerImpl::SPFProcessStubs().
GlobalRoutingLSA::LSType ns3::GlobalRoutingLSA::GetLSType | ( | void | ) | const |
Return the LSType field of the LSA.
Definition at line 281 of file global-router-interface.cc.
References m_lsType, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::SPFVertex::SPFVertex().
uint32_t ns3::GlobalRoutingLSA::GetNAttachedRouters | ( | void | ) | const |
Return the number of attached routers listed in the NetworkLSA.
Definition at line 352 of file global-router-interface.cc.
References m_attachedRouters, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::SPFNext().
Ipv4Mask ns3::GlobalRoutingLSA::GetNetworkLSANetworkMask | ( | void | ) | const |
For a Network LSA, get the Network Mask field that precedes the list of attached routers.
Definition at line 330 of file global-router-interface.cc.
References m_networkLSANetworkMask, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::SPFIntraAddTransit().
uint32_t ns3::GlobalRoutingLSA::GetNLinkRecords | ( | void | ) | const |
Return the number of Global Routing Link Records in the LSA.
Definition at line 249 of file global-router-interface.cc.
References m_linkRecords, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerLSDB::GetLSAByLinkData(), ns3::GlobalRouteManagerImpl::SPFGetNextLink(), ns3::GlobalRouteManagerImpl::SPFIntraAddRouter(), ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::GlobalRouteManagerImpl::SPFProcessStubs().
GlobalRoutingLSA::SPFStatus ns3::GlobalRoutingLSA::GetStatus | ( | void | ) | const |
Get the SPF status of the advertisement.
Definition at line 337 of file global-router-interface.cc.
References m_status, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouteManagerImpl::SPFNext().
bool ns3::GlobalRoutingLSA::IsEmpty | ( | void | ) | const |
Check to see if the list of Global Routing Link Records present in the Global Routing Link State Advertisement is empty.
Definition at line 274 of file global-router-interface.cc.
References m_linkRecords, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::GetLSA(), and GlobalRoutingLSA().
GlobalRoutingLSA & ns3::GlobalRoutingLSA::operator= | ( | const GlobalRoutingLSA & | lsa | ) |
Assignment operator for a Global Routing Link State Advertisement.
Takes an existing Global Routing Link State Advertisement and overwrites it to make a semantically identical copy of a given prototype LSA.
If there are any Global Routing Link Records present in the existing LSA, they are freed before the assignment happens.
lsa | The existing LSA to be used as the source. |
Definition at line 177 of file global-router-interface.cc.
References ClearLinkRecords(), CopyLinkRecords(), m_advertisingRtr, m_linkStateId, m_lsType, m_networkLSANetworkMask, m_status, and NS_LOG_FUNCTION_NOARGS.
void ns3::GlobalRoutingLSA::Print | ( | std::ostream & | os | ) | const |
Print the contents of the Global Routing Link State Advertisement and any Global Routing Link Records present in the list. Quite verbose.
Definition at line 384 of file global-router-interface.cc.
References m_advertisingRtr, m_attachedRouters, ns3::GlobalRoutingLinkRecord::m_linkData, ns3::GlobalRoutingLinkRecord::m_linkId, m_linkRecords, m_linkStateId, ns3::GlobalRoutingLinkRecord::m_linkType, m_lsType, ns3::GlobalRoutingLinkRecord::m_metric, m_networkLSANetworkMask, NetworkLSA, NS_ASSERT_MSG, ns3::GlobalRoutingLinkRecord::PointToPoint, RouterLSA, ns3::GlobalRoutingLinkRecord::StubNetwork, and ns3::GlobalRoutingLinkRecord::TransitNetwork.
void ns3::GlobalRoutingLSA::SetAdvertisingRouter | ( | Ipv4Address | rtr | ) |
Set the Advertising Router as defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 316 of file global-router-interface.cc.
References m_advertisingRtr, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs(), ns3::GlobalRouter::DiscoverLSAs(), and ns3::GlobalRouteManagerImplTest::RunTests().
void ns3::GlobalRoutingLSA::SetLinkStateId | ( | Ipv4Address | addr | ) |
Set the Link State ID is defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 302 of file global-router-interface.cc.
References m_linkStateId, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs(), ns3::GlobalRouter::DiscoverLSAs(), and ns3::GlobalRouteManagerImplTest::RunTests().
void ns3::GlobalRoutingLSA::SetLSType | ( | GlobalRoutingLSA::LSType | typ | ) |
Set the LS type field of the LSA.
Definition at line 288 of file global-router-interface.cc.
References m_lsType, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs(), ns3::GlobalRouter::DiscoverLSAs(), and ns3::GlobalRouteManagerImplTest::RunTests().
void ns3::GlobalRoutingLSA::SetNetworkLSANetworkMask | ( | Ipv4Mask | mask | ) |
For a Network LSA, set the Network Mask field that precedes the list of attached routers.
Definition at line 323 of file global-router-interface.cc.
References m_networkLSANetworkMask, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs().
void ns3::GlobalRoutingLSA::SetStatus | ( | GlobalRoutingLSA::SPFStatus | status | ) |
Set the SPF status of the advertisement.
Definition at line 377 of file global-router-interface.cc.
References m_status, and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::GlobalRouter::BuildNetworkLSAs(), ns3::GlobalRouter::DiscoverLSAs(), ns3::GlobalRouteManagerLSDB::Initialize(), and ns3::GlobalRouteManagerImpl::SPFNext().
The Advertising Router is defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 501 of file global-router-interface.h.
Referenced by GetAdvertisingRouter(), operator=(), Print(), and SetAdvertisingRouter().
Each Network LSA contains a list of attached routers
m_attachedRouters is an STL list container to hold the addresses that have been discovered and prepared for the advertisement.
Definition at line 538 of file global-router-interface.h.
Referenced by AddAttachedRouter(), CopyLinkRecords(), GetAttachedRouter(), GetNAttachedRouters(), and Print().
Each Link State Advertisement contains a number of Link Records that describe the kinds of links that are attached to a given node. We consider PointToPoint and StubNetwork links.
m_linkRecords is an STL list container to hold the Link Records that have been discovered and prepared for the advertisement.
Definition at line 518 of file global-router-interface.h.
Referenced by AddLinkRecord(), ClearLinkRecords(), CopyLinkRecords(), GetLinkRecord(), GetNLinkRecords(), IsEmpty(), and Print().
The Link State ID is defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.
Definition at line 492 of file global-router-interface.h.
Referenced by GetLinkStateId(), operator=(), Print(), and SetLinkStateId().
LSType ns3::GlobalRoutingLSA::m_lsType [private] |
The type of the LSA. Each LSA type has a separate advertisement format.
Definition at line 484 of file global-router-interface.h.
Referenced by GetLSType(), operator=(), Print(), and SetLSType().
Each Network LSA contains the network mask of the attached network
Definition at line 523 of file global-router-interface.h.
Referenced by GetNetworkLSANetworkMask(), operator=(), Print(), and SetNetworkLSANetworkMask().
SPFStatus ns3::GlobalRoutingLSA::m_status [private] |
This is a tristate flag used internally in the SPF computation to mark if an SPFVertex (a data structure representing a vertex in the SPF tree -- a router) is new, is a candidate for a shortest path, or is in its proper position in the tree.
Definition at line 546 of file global-router-interface.h.
Referenced by GetStatus(), operator=(), and SetStatus().