A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::Ipv4NixVectorRouting Class Reference

#include <ipv4-nix-vector-routing.h>

+ Inheritance diagram for ns3::Ipv4NixVectorRouting:
+ Collaboration diagram for ns3::Ipv4NixVectorRouting:

Public Member Functions

 Ipv4NixVectorRouting ()
 ~Ipv4NixVectorRouting ()
void FlushGlobalNixRoutingCache (void)
 Called when run-time link topology change occurs which iterates through the node list and flushes any nix vector caches.
void SetNode (Ptr< Node > node)
 Set the Node pointer of the node for which this routing protocol is to be placed.
- Public Member Functions inherited from ns3::Ipv4RoutingProtocol
virtual void NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address)=0
virtual void NotifyInterfaceDown (uint32_t interface)=0
virtual void NotifyInterfaceUp (uint32_t interface)=0
virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address)=0
virtual void PrintRoutingTable (Ptr< OutputStreamWrapper > stream) const =0
 Print the Routing Table entries.
virtual bool RouteInput (Ptr< const Packet > p, const Ipv4Header &header, Ptr< const NetDevice > idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb)=0
 Route an input packet (to be forwarded or locally delivered)
virtual Ptr< Ipv4RouteRouteOutput (Ptr< Packet > p, const Ipv4Header &header, Ptr< NetDevice > oif, Socket::SocketErrno &sockerr)=0
 Query routing cache for an existing route, for an outbound packet.
virtual void SetIpv4 (Ptr< Ipv4 > ipv4)=0
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~Object ()
void AggregateObject (Ptr< Object > other)
void Dispose (void)
AggregateIterator GetAggregateIterator (void) const
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 SimpleRefCount (const SimpleRefCount &o)
uint32_t GetReferenceCount (void) const
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
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.

Private Member Functions

bool BFS (uint32_t numberOfNodes, Ptr< Node > source, Ptr< Node > dest, std::vector< Ptr< Node > > &parentVector, Ptr< NetDevice > oif)
bool BuildNixVector (const std::vector< Ptr< Node > > &parentVector, uint32_t source, uint32_t dest, Ptr< NixVector > nixVector)
bool BuildNixVectorLocal (Ptr< NixVector > nixVector)
void DoDispose (void)
uint32_t FindNetDeviceForNixIndex (uint32_t nodeIndex, Ipv4Address &gatewayIp)
uint32_t FindTotalNeighbors (void)
void FlushIpv4RouteCache (void)
void FlushNixCache (void)
void GetAdjacentNetDevices (Ptr< NetDevice >, Ptr< Channel >, NetDeviceContainer &)
Ptr< Ipv4RouteGetIpv4RouteInCache (Ipv4Address)
Ptr< NixVectorGetNixVector (Ptr< Node >, Ipv4Address, Ptr< NetDevice >)
Ptr< NixVectorGetNixVectorInCache (Ipv4Address)
Ptr< NodeGetNodeByIp (Ipv4Address)
Ptr< BridgeNetDeviceNetDeviceIsBridged (Ptr< NetDevice > nd) const
virtual void NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address)
virtual void NotifyInterfaceDown (uint32_t interface)
virtual void NotifyInterfaceUp (uint32_t interface)
virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address)
virtual void PrintRoutingTable (Ptr< OutputStreamWrapper > stream) const
void ResetTotalNeighbors (void)
virtual bool RouteInput (Ptr< const Packet > p, const Ipv4Header &header, Ptr< const NetDevice > idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb)
virtual Ptr< Ipv4RouteRouteOutput (Ptr< Packet > p, const Ipv4Header &header, Ptr< NetDevice > oif, Socket::SocketErrno &sockerr)
virtual void SetIpv4 (Ptr< Ipv4 > ipv4)

Private Attributes

Ptr< Ipv4m_ipv4
Ipv4RouteMap_t m_ipv4RouteCache
NixMap_t m_nixCache
Ptr< Nodem_node
uint32_t m_totalNeighbors

Additional Inherited Members

- Public Types inherited from ns3::Ipv4RoutingProtocol
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header
&, Socket::SocketErrno
ErrorCallback
typedef Callback< void, Ptr
< const Packet >, const
Ipv4Header &, uint32_t > 
LocalDeliverCallback
typedef Callback< void, Ptr
< Ipv4MulticastRoute >, Ptr
< const Packet >, const
Ipv4Header & > 
MulticastForwardCallback
typedef Callback< void, Ptr
< Ipv4Route >, Ptr< const
Packet >, const Ipv4Header & > 
UnicastForwardCallback
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoDispose (void)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)

Detailed Description

Nix-vector routing protocol

This type is not accessible from the Config system.
No Attributes are defined for this type.
No TraceSources are defined for this type.

Definition at line 49 of file ipv4-nix-vector-routing.h.

Constructor & Destructor Documentation

ns3::Ipv4NixVectorRouting::Ipv4NixVectorRouting ( )

Definition at line 47 of file ipv4-nix-vector-routing.cc.

References NS_LOG_FUNCTION_NOARGS.

ns3::Ipv4NixVectorRouting::~Ipv4NixVectorRouting ( )

Definition at line 53 of file ipv4-nix-vector-routing.cc.

References NS_LOG_FUNCTION_NOARGS.

Member Function Documentation

bool ns3::Ipv4NixVectorRouting::BFS ( uint32_t  numberOfNodes,
Ptr< Node source,
Ptr< Node dest,
std::vector< Ptr< Node > > &  parentVector,
Ptr< NetDevice oif 
)
private
bool ns3::Ipv4NixVectorRouting::BuildNixVector ( const std::vector< Ptr< Node > > &  parentVector,
uint32_t  source,
uint32_t  dest,
Ptr< NixVector nixVector 
)
private
bool ns3::Ipv4NixVectorRouting::BuildNixVectorLocal ( Ptr< NixVector nixVector)
private
void ns3::Ipv4NixVectorRouting::DoDispose ( void  )
private

Definition at line 69 of file ipv4-nix-vector-routing.cc.

References m_ipv4, m_node, and NS_LOG_FUNCTION_NOARGS.

uint32_t ns3::Ipv4NixVectorRouting::FindNetDeviceForNixIndex ( uint32_t  nodeIndex,
Ipv4Address gatewayIp 
)
private
uint32_t ns3::Ipv4NixVectorRouting::FindTotalNeighbors ( void  )
private

Definition at line 366 of file ipv4-nix-vector-routing.cc.

References GetAdjacentNetDevices(), ns3::NetDevice::GetChannel(), ns3::Node::GetDevice(), ns3::NetDeviceContainer::GetN(), ns3::Node::GetNDevices(), and m_node.

Referenced by RouteInput(), and RouteOutput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv4NixVectorRouting::FlushGlobalNixRoutingCache ( void  )

Called when run-time link topology change occurs which iterates through the node list and flushes any nix vector caches.

Definition at line 89 of file ipv4-nix-vector-routing.cc.

References ns3::NodeList::Begin(), ns3::NodeList::End(), ns3::Object::GetObject(), NS_LOG_FUNCTION_NOARGS, and NS_LOG_LOGIC.

Referenced by NotifyAddAddress(), NotifyInterfaceDown(), NotifyInterfaceUp(), and NotifyRemoveAddress().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv4NixVectorRouting::FlushIpv4RouteCache ( void  )
private

Definition at line 115 of file ipv4-nix-vector-routing.cc.

References m_ipv4RouteCache, and NS_LOG_FUNCTION_NOARGS.

void ns3::Ipv4NixVectorRouting::FlushNixCache ( void  )
private

Definition at line 108 of file ipv4-nix-vector-routing.cc.

References m_nixCache, and NS_LOG_FUNCTION_NOARGS.

void ns3::Ipv4NixVectorRouting::GetAdjacentNetDevices ( Ptr< NetDevice netDevice,
Ptr< Channel channel,
NetDeviceContainer netDeviceContainer 
)
private
Ptr< Ipv4Route > ns3::Ipv4NixVectorRouting::GetIpv4RouteInCache ( Ipv4Address  address)
private

Definition at line 182 of file ipv4-nix-vector-routing.cc.

References m_ipv4RouteCache, NS_LOG_FUNCTION_NOARGS, and NS_LOG_LOGIC.

Referenced by RouteInput(), and RouteOutput().

+ Here is the caller graph for this function:

Ptr< NixVector > ns3::Ipv4NixVectorRouting::GetNixVector ( Ptr< Node source,
Ipv4Address  dest,
Ptr< NetDevice oif 
)
private

Definition at line 122 of file ipv4-nix-vector-routing.cc.

References BFS(), BuildNixVector(), ns3::Node::GetId(), ns3::NodeList::GetNNodes(), GetNodeByIp(), NS_LOG_DEBUG, NS_LOG_ERROR, and NS_LOG_FUNCTION_NOARGS.

Referenced by RouteOutput().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< NixVector > ns3::Ipv4NixVectorRouting::GetNixVectorInCache ( Ipv4Address  address)
private

Definition at line 166 of file ipv4-nix-vector-routing.cc.

References m_nixCache, NS_LOG_FUNCTION_NOARGS, and NS_LOG_LOGIC.

Referenced by RouteOutput().

+ Here is the caller graph for this function:

Ptr< Node > ns3::Ipv4NixVectorRouting::GetNodeByIp ( Ipv4Address  dest)
private

Definition at line 338 of file ipv4-nix-vector-routing.cc.

References ns3::NodeContainer::Begin(), ns3::NodeContainer::End(), ns3::NodeContainer::GetGlobal(), ns3::Ipv4::GetInterfaceForAddress(), ns3::Object::GetObject(), NS_LOG_ERROR, and NS_LOG_FUNCTION_NOARGS.

Referenced by GetNixVector().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

The Interface ID of the Global Router interface.

See Also
Object::GetObject ()

Reimplemented from ns3::Ipv4RoutingProtocol.

Definition at line 38 of file ipv4-nix-vector-routing.cc.

References ns3::TypeId::SetParent().

+ Here is the call graph for this function:

Ptr< BridgeNetDevice > ns3::Ipv4NixVectorRouting::NetDeviceIsBridged ( Ptr< NetDevice nd) const
private

Definition at line 397 of file ipv4-nix-vector-routing.cc.

References ns3::Node::GetDevice(), ns3::Node::GetNDevices(), ns3::NetDevice::GetNode(), ns3::Object::GetObject(), ns3::NetDevice::IsBridge(), NS_ABORT_MSG_UNLESS, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by GetAdjacentNetDevices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv4NixVectorRouting::NotifyAddAddress ( uint32_t  interface,
Ipv4InterfaceAddress  address 
)
privatevirtual

Definition at line 717 of file ipv4-nix-vector-routing.cc.

References FlushGlobalNixRoutingCache().

+ Here is the call graph for this function:

void ns3::Ipv4NixVectorRouting::NotifyInterfaceDown ( uint32_t  interface)
privatevirtual

Definition at line 712 of file ipv4-nix-vector-routing.cc.

References FlushGlobalNixRoutingCache().

+ Here is the call graph for this function:

void ns3::Ipv4NixVectorRouting::NotifyInterfaceUp ( uint32_t  interface)
privatevirtual

Definition at line 707 of file ipv4-nix-vector-routing.cc.

References FlushGlobalNixRoutingCache().

+ Here is the call graph for this function:

void ns3::Ipv4NixVectorRouting::NotifyRemoveAddress ( uint32_t  interface,
Ipv4InterfaceAddress  address 
)
privatevirtual

Definition at line 722 of file ipv4-nix-vector-routing.cc.

References FlushGlobalNixRoutingCache().

+ Here is the call graph for this function:

void ns3::Ipv4NixVectorRouting::PrintRoutingTable ( Ptr< OutputStreamWrapper stream) const
privatevirtual

Definition at line 662 of file ipv4-nix-vector-routing.cc.

References ns3::Names::FindName(), ns3::OutputStreamWrapper::GetStream(), m_ipv4RouteCache, and m_nixCache.

+ Here is the call graph for this function:

void ns3::Ipv4NixVectorRouting::ResetTotalNeighbors ( void  )
private
void ns3::Ipv4NixVectorRouting::SetIpv4 ( Ptr< Ipv4 ipv4)
privatevirtual

Definition at line 59 of file ipv4-nix-vector-routing.cc.

References m_ipv4, NS_ASSERT, and NS_LOG_DEBUG.

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

Set the Node pointer of the node for which this routing protocol is to be placed.

Parameters
nodeNode pointer

Definition at line 81 of file ipv4-nix-vector-routing.cc.

References m_node, and NS_LOG_FUNCTION_NOARGS.

Member Data Documentation

Ptr<Ipv4> ns3::Ipv4NixVectorRouting::m_ipv4
private
Ipv4RouteMap_t ns3::Ipv4NixVectorRouting::m_ipv4RouteCache
private
NixMap_t ns3::Ipv4NixVectorRouting::m_nixCache
private
Ptr<Node> ns3::Ipv4NixVectorRouting::m_node
private
uint32_t ns3::Ipv4NixVectorRouting::m_totalNeighbors
private

Definition at line 167 of file ipv4-nix-vector-routing.h.

Referenced by RouteInput(), and RouteOutput().


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