ns3::GlobalRoutingLSA Class Reference

a Link State Advertisement (LSA) for a router, used in global routing. More...

#include <global-router-interface.h>

Collaboration diagram for ns3::GlobalRoutingLSA:
Collaboration graph
[legend]

List of all members.

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.
GlobalRoutingLSAoperator= (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.
GlobalRoutingLinkRecordGetLinkRecord (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< Ipv4AddressListOfAttachedRouters_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

Detailed Description

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.


Member Typedef Documentation

A convenience typedef to avoid too much writers cramp.

Definition at line 528 of file global-router-interface.h.

A convenience typedef to avoid too much writers cramp.

Definition at line 506 of file global-router-interface.h.


Member Enumeration Documentation

corresponds to LS type field of RFC 2328 OSPF LSA header

Enumerator:
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.

Enumerator:
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.


Constructor & Destructor Documentation

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.

Parameters:
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.

Parameters:
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.


Member Function Documentation

uint32_t ns3::GlobalRoutingLSA::AddAttachedRouter ( Ipv4Address  addr  ) 

Add an attached router to the list in the NetworkLSA.

Parameters:
addr The Ipv4Address of the interface on the network link
Returns:
The number of addresses in the list.

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.

Parameters:
lr The Global Routing Link Record to be added.
Returns:
The number of link records in the list.

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.

See also:
ClearLinkRecords ()
Parameters:
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.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()
Returns:
The Ipv4Address stored as the advetising router.

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.

Parameters:
n The attached router number desired (number in the list).
Returns:
The Ipv4Address of the requested router

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.

Parameters:
n The LSA number desired.
Returns:
The number of link records in the list.

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.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()
Returns:
The Ipv4Address stored as the link state ID.

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.

Returns:
The number of attached routers.

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.

Returns:
the NetworkLSANetworkMask

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
GlobalRoutingLSA::SPFStatus ns3::GlobalRoutingLSA::GetStatus ( void   )  const

Get the SPF status of the advertisement.

See also:
SPFStatus
Returns:
The SPFStatus of the LSA.

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.

Returns:
True if the list is empty, false otherwise.

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.

Parameters:
lsa The existing LSA to be used as the source.
Returns:
Reference to the overwritten LSA.

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
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.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()

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.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()

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  ) 
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  ) 

Member Data Documentation

The Advertising Router is defined by the OSPF spec. We always set it to the router ID of the router making the advertisement.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()

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.

See also:
GlobalRouting::DiscoverLSAs ()

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.

See also:
GlobalRouting::DiscoverLSAs ()

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.

See also:
RoutingEnvironment::AllocateRouterId ()
GlobalRouting::GetRouterId ()

Definition at line 492 of file global-router-interface.h.

Referenced by GetLinkStateId(), operator=(), Print(), and SetLinkStateId().

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().

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().


The documentation for this class was generated from the following files:
Generated on Thu Dec 3 14:12:11 2009 for NS-3 by  doxygen 1.6.3