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

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.

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

See Also
Object::GetObject ()

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

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: