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 }
 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.
Ptr< NodeGetNode (void) const
 Get the Node pointer of the node that originated this LSA.
void SetNode (Ptr< Node > node)
 Set the Node pointer of the node that originated this LSA.

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.


Member Typedef Documentation

A convenience typedef to avoid too much writers cramp.

A convenience typedef to avoid too much writers cramp.


Member Enumeration Documentation

corresponds to LS type field of RFC 2328 OSPF LSA header

Enumerator:
Unknown  Uninitialized Type

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


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.

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

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.

ns3::GlobalRoutingLSA::~GlobalRoutingLSA (  ) 

Destroy an existing Global Routing Link State Advertisement.

Any Global Routing Link Records present in the list are freed.


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.

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.

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.

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.

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

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.

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.

uint32_t ns3::GlobalRoutingLSA::GetNAttachedRouters ( void   )  const

Return the number of attached routers listed in the NetworkLSA.

Returns:
The number of attached routers.

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

uint32_t ns3::GlobalRoutingLSA::GetNLinkRecords ( void   )  const

Return the number of Global Routing Link Records in the LSA.

Returns:
The number of link records in the list.

Ptr<Node> ns3::GlobalRoutingLSA::GetNode ( void   )  const

Get the Node pointer of the node that originated this LSA.

Returns:
Node pointer

SPFStatus ns3::GlobalRoutingLSA::GetStatus ( void   )  const

Get the SPF status of the advertisement.

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

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.

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.

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

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

void ns3::GlobalRoutingLSA::SetNode ( Ptr< Node node  ) 

Set the Node pointer of the node that originated this LSA.

Parameters:
node Node pointer

void ns3::GlobalRoutingLSA::SetStatus ( SPFStatus  status  ) 

Set the SPF status of the advertisement.

See also:
SPFStatus


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

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

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

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

The type of the LSA. Each LSA type has a separate advertisement format.

Each Network LSA contains the network mask of the attached network

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.


The documentation for this class was generated from the following file:

Generated on Fri Apr 9 15:01:11 2010 for NS-3 by  doxygen 1.5.8