ns-3
ns3::GlobalRouter Class Reference

An interface aggregated to a node to provide global routing info. More...

#include <global-router-interface.h>

Inheritance diagram for ns3::GlobalRouter:
Collaboration diagram for ns3::GlobalRouter:

List of all members.

Public Member Functions

 GlobalRouter ()
 Create a Global Router class.
void SetRoutingProtocol (Ptr< Ipv4GlobalRouting > routing)
Ptr< Ipv4GlobalRoutingGetRoutingProtocol (void)
Ipv4Address GetRouterId (void) const
 Get the Router ID associated with this Global Router.
uint32_t DiscoverLSAs (void)
 Walk the connected channels, discover the adjacent routers and build the associated number of Global Routing Link State Advertisements that this router can export.
uint32_t GetNumLSAs (void) const
 Get the Number of Global Routing Link State Advertisements that this router can export.
bool GetLSA (uint32_t n, GlobalRoutingLSA &lsa) const
 Get a Global Routing Link State Advertisements that this router has said that it can export.
void InjectRoute (Ipv4Address network, Ipv4Mask networkMask)
 Inject a route to be circulated to other routers as an external route.
uint32_t GetNInjectedRoutes (void)
 Get the number of injected routes that have been added to the routing table.
Ipv4RoutingTableEntryGetInjectedRoute (uint32_t i)
 Return the injected route indexed by i.
void RemoveInjectedRoute (uint32_t i)
 Withdraw a route from the global unicast routing table.
bool WithdrawRoute (Ipv4Address network, Ipv4Mask networkMask)
 Withdraw a route from the global unicast routing table.
- Public Member Functions inherited from ns3::Object
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Dispose (void)
void AggregateObject (Ptr< Object > other)
AggregateIterator GetAggregateIterator (void) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
uint32_t GetReferenceCount (void) const
- Public Member Functions inherited from ns3::ObjectBase
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)

Static Public Member Functions

static TypeId GetTypeId (void)
 The Interface ID of the Global Router interface.

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
virtual void NotifyNewAggregate (void)
virtual void DoStart (void)
 Object (const Object &o)

Detailed Description

An interface aggregated to a node to provide global routing info.

An interface aggregated to a node that provides global routing information to a global route manager. The presence of the interface indicates that the node is a router. The interface is the mechanism by which the router advertises its connections to neighboring routers. We're basically allowing the route manager to query for link state advertisements.


Member Function Documentation

uint32_t ns3::GlobalRouter::DiscoverLSAs ( void  )

Walk the connected channels, discover the adjacent routers and build the associated number of Global Routing Link State Advertisements that this router can export.

This is a fairly expensive operation in that every time it is called the current list of LSAs is built by walking connected point-to-point channels and peeking into adjacent IPV4 stacks to get address information. This is done to allow for limited dynamics of the Global Routing environment. By that we mean that you can discover new link state advertisements after a network topology change by calling DiscoverLSAs and then by reading those advertisements.

See also:
GlobalRoutingLSA
GlobalRouter::GetLSA ()
Returns:
The number of Global Routing Link State Advertisements.

References ns3::Node::GetDevice(), ns3::Node::GetId(), ns3::NetDeviceContainer::GetN(), ns3::Node::GetNDevices(), ns3::Ipv4::GetNetDevice(), ns3::Ipv4::GetNInterfaces(), ns3::Object::GetObject(), ns3::NetDevice::IsBroadcast(), ns3::Ipv4::IsForwarding(), ns3::NetDevice::IsPointToPoint(), ns3::Ipv4::IsUp(), ns3::GlobalRoutingLSA::LSA_SPF_NOT_EXPLORED, NS_ABORT_MSG_IF, NS_ABORT_MSG_UNLESS, NS_ASSERT_MSG, NS_LOG_FUNCTION_NOARGS, NS_LOG_LOGIC, ns3::GlobalRoutingLSA::SetAdvertisingRouter(), ns3::GlobalRoutingLSA::SetLinkStateId(), ns3::GlobalRoutingLSA::SetLSType(), ns3::GlobalRoutingLSA::SetNetworkLSANetworkMask(), ns3::GlobalRoutingLSA::SetNode(), and ns3::GlobalRoutingLSA::SetStatus().

Ipv4RoutingTableEntry * ns3::GlobalRouter::GetInjectedRoute ( uint32_t  i)

Return the injected route indexed by i.

Parameters:
ithe index of the route
Returns:
a pointer to that Ipv4RoutingTableEntry is returned

References NS_ASSERT, and NS_LOG_FUNCTION.

bool ns3::GlobalRouter::GetLSA ( uint32_t  n,
GlobalRoutingLSA lsa 
) const

Get a Global Routing Link State Advertisements that this router has said that it can export.

This is a fairly inexpensive expensive operation in that the hard work was done in GetNumLSAs. We just copy the indicated Global Routing Link State Advertisement into the requested GlobalRoutingLSA object.

You must call GlobalRouter::GetNumLSAs before calling this method in order to discover the adjacent routers and build the advertisements. GetNumLSAs will return the number of LSAs this router advertises. The parameter n (requested LSA number) must be in the range 0 to GetNumLSAs() - 1.

See also:
GlobalRoutingLSA
GlobalRouting::GetNumLSAs ()
Parameters:
nThe index number of the LSA you want to read.
lsaThe GlobalRoutingLSA class to receive the LSA information.
Returns:
The number of Global Router Link State Advertisements.

References ns3::GlobalRoutingLSA::IsEmpty(), NS_ASSERT_MSG, and NS_LOG_FUNCTION_NOARGS.

uint32_t ns3::GlobalRouter::GetNInjectedRoutes ( void  )

Get the number of injected routes that have been added to the routing table.

Returns:
number of injected routes
uint32_t ns3::GlobalRouter::GetNumLSAs ( void  ) const

Get the Number of Global Routing Link State Advertisements that this router can export.

To get meaningful information you must have previously called DiscoverLSAs. After you know how many LSAs are present in the router, you may call GetLSA () to retrieve the actual advertisement.

See also:
GlobalRouterLSA
GlobalRouting::DiscoverLSAs ()
GlobalRouting::GetLSA ()
Returns:
The number of Global Routing Link State Advertisements.

References NS_LOG_FUNCTION_NOARGS.

Ipv4Address ns3::GlobalRouter::GetRouterId ( void  ) const

Get the Router ID associated with this Global Router.

The Router IDs are allocated in the RoutingEnvironment – one per Router, starting at 0.0.0.1 and incrementing with each instantiation of a router.

See also:
RoutingEnvironment::AllocateRouterId ()
Returns:
The Router ID associated with the Global Router.

References NS_LOG_FUNCTION_NOARGS.

TypeId ns3::GlobalRouter::GetTypeId ( void  )
static

The Interface ID of the Global Router interface.

This method returns the TypeId associated to ns3::GlobalRouter.

See also:
Object::GetObject ()

No Attributes defined for this type.
No TraceSources defined for this type.

Reimplemented from ns3::Object.

References ns3::TypeId::SetParent().

void ns3::GlobalRouter::InjectRoute ( Ipv4Address  network,
Ipv4Mask  networkMask 
)

Inject a route to be circulated to other routers as an external route.

Parameters:
networkThe Network to inject
networkMaskThe Network Mask to inject

References ns3::Ipv4RoutingTableEntry::CreateNetworkRouteTo(), and NS_LOG_FUNCTION.

void ns3::GlobalRouter::RemoveInjectedRoute ( uint32_t  i)

Withdraw a route from the global unicast routing table.

Calling this function will cause all indexed routes numbered above index i to have their index decremented. For instance, it is possible to remove N injected routes by calling RemoveInjectedRoute (0) N times.

Parameters:
iThe index (into the injected routing list) of the route to remove.
See also:
GlobalRouter::WithdrawRoute ()

References NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

bool ns3::GlobalRouter::WithdrawRoute ( Ipv4Address  network,
Ipv4Mask  networkMask 
)

Withdraw a route from the global unicast routing table.

Parameters:
networkThe Network to withdraw
networkMaskThe Network Mask to withdraw
Returns:
whether the operation succeeded (will return false if no such route)
See also:
GlobalRouter::RemoveInjectedRoute ()

References NS_LOG_FUNCTION, and NS_LOG_LOGIC.


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