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

Static routing protocol for IP version 6 stack. More...

#include <introspected-doxygen.h>

+ Inheritance diagram for ns3::Ipv6StaticRouting:

Public Member Functions

 Ipv6StaticRouting ()
 Constructor.
 
virtual ~Ipv6StaticRouting ()
 Destructor.
 
void AddHostRouteTo (Ipv6Address dest, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse=Ipv6Address("::"), uint32_t metric=0)
 Add route to host. More...
 
void AddHostRouteTo (Ipv6Address dest, uint32_t interface, uint32_t metric=0)
 Add route to host. More...
 
void AddMulticastRoute (Ipv6Address origin, Ipv6Address group, uint32_t inputInterface, std::vector< uint32_t > outputInterfaces)
 Add a multicast route for a given multicast source and group. More...
 
void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, uint32_t metric=0)
 Add route to network. More...
 
void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse, uint32_t metric=0)
 Add route to network. More...
 
void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface, uint32_t metric=0)
 Add route to network. More...
 
Ipv6RoutingTableEntry GetDefaultRoute ()
 Get the default route. More...
 
uint32_t GetMetric (uint32_t index) const
 Get a metric for route from the static unicast routing table. More...
 
Ipv6MulticastRoutingTableEntry GetMulticastRoute (uint32_t i) const
 Get the specified multicast route. More...
 
uint32_t GetNMulticastRoutes () const
 Get the number of entries in the multicast routing table. More...
 
uint32_t GetNRoutes () const
 Get the number or entries in the routing table. More...
 
Ipv6RoutingTableEntry GetRoute (uint32_t i) const
 Get a specified route. More...
 
bool HasNetworkDest (Ipv6Address dest, uint32_t interfaceIndex)
 If the destination is already present in network destination list. More...
 
virtual void NotifyAddAddress (uint32_t interface, Ipv6InterfaceAddress address)
 Notify when specified interface add an address. More...
 
virtual void NotifyAddRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse=Ipv6Address::GetZero())
 Notify a new route. More...
 
virtual void NotifyInterfaceDown (uint32_t interface)
 Notify when specified interface goes DOWN. More...
 
virtual void NotifyInterfaceUp (uint32_t interface)
 Notify when specified interface goes UP. More...
 
virtual void NotifyRemoveAddress (uint32_t interface, Ipv6InterfaceAddress address)
 Notify when specified interface add an address. More...
 
virtual void NotifyRemoveRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse=Ipv6Address::GetZero())
 Notify route removing. More...
 
virtual void PrintRoutingTable (Ptr< OutputStreamWrapper > stream) const
 Print the Routing Table entries. More...
 
bool RemoveMulticastRoute (Ipv6Address origin, Ipv6Address group, uint32_t inputInterface)
 Remove a static multicast route. More...
 
void RemoveMulticastRoute (uint32_t i)
 Remove a multicast route. More...
 
void RemoveRoute (uint32_t i)
 Remove a route from the routing table. More...
 
void RemoveRoute (Ipv6Address network, Ipv6Prefix prefix, uint32_t ifIndex, Ipv6Address prefixToUse)
 Remove a route from the routing table. More...
 
virtual bool RouteInput (Ptr< const Packet > p, const Ipv6Header &header, Ptr< const NetDevice > idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb)
 Route an input packet (to be forwarded or locally delivered) More...
 
virtual Ptr< Ipv6RouteRouteOutput (Ptr< Packet > p, const Ipv6Header &header, Ptr< NetDevice > oif, Socket::SocketErrno &sockerr)
 Query routing cache for an existing route, for an outbound packet. More...
 
void SetDefaultMulticastRoute (uint32_t outputInterface)
 Set the default multicast route. More...
 
void SetDefaultRoute (Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse=Ipv6Address("::"), uint32_t metric=0)
 Set the default route. More...
 
virtual void SetIpv6 (Ptr< Ipv6 > ipv6)
 Typically, invoked directly or indirectly from ns3::Ipv6::SetRoutingProtocol. More...
 
- Public Member Functions inherited from ns3::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 Initialize (void)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 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
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 ()
 The interface Id associated with this class. More...
 
- Static Public Member Functions inherited from ns3::Ipv6RoutingProtocol
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

Protected Member Functions

virtual void DoDispose ()
 Dispose this object.
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 

Private Types

typedef std::list
< Ipv6MulticastRoutingTableEntry * > 
MulticastRoutes
 
typedef std::list
< Ipv6MulticastRoutingTableEntry * >
::const_iterator 
MulticastRoutesCI
 
typedef std::list
< Ipv6MulticastRoutingTableEntry * >
::iterator 
MulticastRoutesI
 
typedef std::list< std::pair
< Ipv6RoutingTableEntry
*, uint32_t > > 
NetworkRoutes
 
typedef std::list< std::pair
< Ipv6RoutingTableEntry
*, uint32_t >
>::const_iterator 
NetworkRoutesCI
 
typedef std::list< std::pair
< Ipv6RoutingTableEntry
*, uint32_t > >::iterator 
NetworkRoutesI
 

Private Member Functions

Ptr< Ipv6RouteLookupStatic (Ipv6Address dest, Ptr< NetDevice >=0)
 Lookup in the forwarding table for destination. More...
 
Ptr< Ipv6MulticastRouteLookupStatic (Ipv6Address origin, Ipv6Address group, uint32_t ifIndex)
 Lookup in the multicast forwarding table for destination. More...
 
Ipv6Address SourceAddressSelection (uint32_t interface, Ipv6Address dest)
 Choose the source address to use with destination address. More...
 

Private Attributes

Ptr< Ipv6m_ipv6
 Ipv6 reference.
 
MulticastRoutes m_multicastRoutes
 the forwarding table for multicast.
 
NetworkRoutes m_networkRoutes
 the forwarding table for network.
 

Additional Inherited Members

- Public Types inherited from ns3::Ipv6RoutingProtocol
typedef Callback< void, Ptr
< const Packet >, const
Ipv6Header
&, Socket::SocketErrno > 
ErrorCallback
 
typedef Callback< void, Ptr
< const Packet >, const
Ipv6Header &, uint32_t > 
LocalDeliverCallback
 
typedef Callback< void, Ptr
< Ipv6MulticastRoute >, Ptr
< const Packet >, const
Ipv6Header & > 
MulticastForwardCallback
 
typedef Callback< void, Ptr
< Ipv6Route >, Ptr< const
Packet >, const Ipv6Header & > 
UnicastForwardCallback
 

Detailed Description

Static routing protocol for IP version 6 stack.

Doxygen introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.

See Also
Ipv6RoutingProtocol
Ipv6ListRouting

Definition at line 55 of file ipv6-static-routing.h.

Member Function Documentation

void ns3::Ipv6StaticRouting::AddHostRouteTo ( Ipv6Address  dest,
Ipv6Address  nextHop,
uint32_t  interface,
Ipv6Address  prefixToUse = Ipv6Address ("::"),
uint32_t  metric = 0 
)

Add route to host.

Parameters
destdestination address
nextHopnext hop address to route the packet
interfaceinterface index
prefixToUseprefix that should be used for source address for this destination
metricmetric of route in case of multiple routes to same destination

Definition at line 97 of file ipv6-static-routing.cc.

References AddNetworkRouteTo(), ns3::Ipv6Prefix::GetOnes(), and NS_LOG_FUNCTION.

Referenced by NotifyInterfaceUp().

void ns3::Ipv6StaticRouting::AddHostRouteTo ( Ipv6Address  dest,
uint32_t  interface,
uint32_t  metric = 0 
)

Add route to host.

Parameters
destdestination address.
interfaceinterface index
metricmetric of route in case of multiple routes to same destination

Definition at line 103 of file ipv6-static-routing.cc.

References AddNetworkRouteTo(), ns3::Ipv6Prefix::GetOnes(), and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::AddMulticastRoute ( Ipv6Address  origin,
Ipv6Address  group,
uint32_t  inputInterface,
std::vector< uint32_t >  outputInterfaces 
)

Add a multicast route for a given multicast source and group.

Parameters
originIPv6 address of the source
groupthe multicast group address.
inputInterfacethe interface index
outputInterfacesthe list of output interface indices over which the packet should be sent (excluding the inputInterface).

Definition at line 139 of file ipv6-static-routing.cc.

References ns3::Ipv6MulticastRoutingTableEntry::CreateMulticastRoute(), m_multicastRoutes, and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::AddNetworkRouteTo ( Ipv6Address  network,
Ipv6Prefix  networkPrefix,
Ipv6Address  nextHop,
uint32_t  interface,
uint32_t  metric = 0 
)

Add route to network.

Parameters
networknetwork address
networkPrefixnetwork prefix*
nextHopnext hop address to route the packet
interfaceinterface index
metricmetric of route in case of multiple routes to same destination

Definition at line 109 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::CreateNetworkRouteTo(), m_networkRoutes, and NS_LOG_FUNCTION.

Referenced by AddHostRouteTo(), NotifyAddAddress(), NotifyAddRoute(), NotifyInterfaceUp(), and SetDefaultRoute().

void ns3::Ipv6StaticRouting::AddNetworkRouteTo ( Ipv6Address  network,
Ipv6Prefix  networkPrefix,
Ipv6Address  nextHop,
uint32_t  interface,
Ipv6Address  prefixToUse,
uint32_t  metric = 0 
)

Add route to network.

Parameters
networknetwork address
networkPrefixnetwork prefix*
nextHopnext hop address to route the packet
interfaceinterface index
prefixToUseprefix that should be used for source address for this destination
metricmetric of route in case of multiple routes to same destination

Definition at line 117 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::CreateNetworkRouteTo(), m_networkRoutes, and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::AddNetworkRouteTo ( Ipv6Address  network,
Ipv6Prefix  networkPrefix,
uint32_t  interface,
uint32_t  metric = 0 
)

Add route to network.

Parameters
networknetwork address
networkPrefixnetwork prefix
interfaceinterface index
metricmetric of route in case of multiple routes to same destination

Definition at line 125 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::CreateNetworkRouteTo(), m_networkRoutes, and NS_LOG_FUNCTION.

Ipv6RoutingTableEntry ns3::Ipv6StaticRouting::GetDefaultRoute ( void  )

Get the default route.

If multiple default routes exist, the one with lowest metric is returned.

Returns
default Ipv6Route

Definition at line 400 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::GetDestNetwork(), ns3::Ipv6RoutingTableEntry::GetDestNetworkPrefix(), ns3::Ipv6Prefix::GetPrefixLength(), m_networkRoutes, and NS_LOG_FUNCTION_NOARGS.

uint32_t ns3::Ipv6StaticRouting::GetMetric ( uint32_t  index) const

Get a metric for route from the static unicast routing table.

Parameters
indexThe index (into the routing table) of the route to retrieve.
Returns
If route is set, the metric is returned. If not, an infinity metric (0xffffffff) is returned

Definition at line 456 of file ipv6-static-routing.cc.

References m_networkRoutes, NS_ASSERT, and NS_LOG_FUNCTION_NOARGS.

Ipv6MulticastRoutingTableEntry ns3::Ipv6StaticRouting::GetMulticastRoute ( uint32_t  i) const

Get the specified multicast route.

Parameters
iindex
Returns
the route whose index is i

Definition at line 163 of file ipv6-static-routing.cc.

References m_multicastRoutes, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

uint32_t ns3::Ipv6StaticRouting::GetNMulticastRoutes ( void  ) const

Get the number of entries in the multicast routing table.

Returns
number of entries

Definition at line 157 of file ipv6-static-routing.cc.

References m_multicastRoutes, and NS_LOG_FUNCTION_NOARGS.

uint32_t ns3::Ipv6StaticRouting::GetNRoutes ( void  ) const

Get the number or entries in the routing table.

Returns
number of entries

Definition at line 395 of file ipv6-static-routing.cc.

References m_networkRoutes.

Referenced by NotifyInterfaceDown(), NotifyRemoveAddress(), and PrintRoutingTable().

Ipv6RoutingTableEntry ns3::Ipv6StaticRouting::GetRoute ( uint32_t  i) const

Get a specified route.

Parameters
iindex
Returns
the route whose index is i

Definition at line 438 of file ipv6-static-routing.cc.

References m_networkRoutes, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by NotifyInterfaceDown(), NotifyRemoveAddress(), and PrintRoutingTable().

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

The interface Id associated with this class.

Returns
type identifier

Definition at line 37 of file ipv6-static-routing.cc.

References ns3::TypeId::SetParent().

bool ns3::Ipv6StaticRouting::HasNetworkDest ( Ipv6Address  dest,
uint32_t  interfaceIndex 
)

If the destination is already present in network destination list.

Parameters
destdestination address
interfaceIndexinterface index
Returns
true if dest is already in list, false otherwise

Definition at line 218 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::GetDestNetwork(), ns3::Ipv6RoutingTableEntry::GetDestNetworkPrefix(), ns3::Ipv6RoutingTableEntry::GetInterface(), ns3::Ipv6Prefix::IsMatch(), m_networkRoutes, and NS_LOG_FUNCTION.

Ptr< Ipv6MulticastRoute > ns3::Ipv6StaticRouting::LookupStatic ( Ipv6Address  origin,
Ipv6Address  group,
uint32_t  ifIndex 
)
private
void ns3::Ipv6StaticRouting::NotifyAddAddress ( uint32_t  interface,
Ipv6InterfaceAddress  address 
)
virtual

Notify when specified interface add an address.

Protocols are expected to implement this method to be notified whenever a new address is added to an interface. Typically used to add a 'network route' on an interface. Can be invoked on an up or down interface.

Parameters
interfacethe index of the interface we are being notified about
addressa new address being added to an interface

Implements ns3::Ipv6RoutingProtocol.

Definition at line 663 of file ipv6-static-routing.cc.

References AddNetworkRouteTo(), ns3::Ipv6Address::CombinePrefix(), ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6InterfaceAddress::GetPrefix(), and m_ipv6.

void ns3::Ipv6StaticRouting::NotifyAddRoute ( Ipv6Address  dst,
Ipv6Prefix  mask,
Ipv6Address  nextHop,
uint32_t  interface,
Ipv6Address  prefixToUse = Ipv6Address::GetZero() 
)
virtual

Notify a new route.

Typically this is used to add another route from IPv6 stack (i.e. ICMPv6 redirect case, ...).

Parameters
dstdestination address
maskdestination mask
nextHopnextHop for this destination
interfaceoutput interface
prefixToUseprefix to use as source with this route

Implements ns3::Ipv6RoutingProtocol.

Definition at line 705 of file ipv6-static-routing.cc.

References AddNetworkRouteTo(), ns3::Ipv6Address::GetZero(), NS_LOG_INFO, and SetDefaultRoute().

void ns3::Ipv6StaticRouting::NotifyInterfaceDown ( uint32_t  interface)
virtual

Notify when specified interface goes DOWN.

Protocols are expected to implement this method to be notified of the state change of an interface in a node.

Parameters
interfacethe index of the interface we are being notified about

Implements ns3::Ipv6RoutingProtocol.

Definition at line 641 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::GetInterface(), GetNRoutes(), GetRoute(), NS_LOG_FUNCTION, and RemoveRoute().

Referenced by SetIpv6().

void ns3::Ipv6StaticRouting::NotifyInterfaceUp ( uint32_t  interface)
virtual

Notify when specified interface goes UP.

Protocols are expected to implement this method to be notified of the state change of an interface in a node.

Parameters
interfacethe index of the interface we are being notified about

Implements ns3::Ipv6RoutingProtocol.

Definition at line 620 of file ipv6-static-routing.cc.

References AddHostRouteTo(), AddNetworkRouteTo(), and m_ipv6.

Referenced by SetIpv6().

void ns3::Ipv6StaticRouting::NotifyRemoveAddress ( uint32_t  interface,
Ipv6InterfaceAddress  address 
)
virtual

Notify when specified interface add an address.

Protocols are expected to implement this method to be notified whenever a new address is removed from an interface. Typically used to remove the 'network route' of an interface. Can be invoked on an up or down interface.

Parameters
interfacethe index of the interface we are being notified about
addressa new address being added to an interface

Implements ns3::Ipv6RoutingProtocol.

Definition at line 679 of file ipv6-static-routing.cc.

References ns3::Ipv6Address::CombinePrefix(), ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6RoutingTableEntry::GetDestNetwork(), ns3::Ipv6RoutingTableEntry::GetDestNetworkPrefix(), ns3::Ipv6RoutingTableEntry::GetInterface(), GetNRoutes(), ns3::Ipv6InterfaceAddress::GetPrefix(), GetRoute(), ns3::Ipv6RoutingTableEntry::IsNetwork(), m_ipv6, and RemoveRoute().

void ns3::Ipv6StaticRouting::NotifyRemoveRoute ( Ipv6Address  dst,
Ipv6Prefix  mask,
Ipv6Address  nextHop,
uint32_t  interface,
Ipv6Address  prefixToUse = Ipv6Address::GetZero() 
)
virtual

Notify route removing.

Parameters
dstdestination address
maskdestination mask
nextHopnextHop for this destination
interfaceoutput interface
prefixToUseprefix to use as source with this route

Implements ns3::Ipv6RoutingProtocol.

Definition at line 726 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::GetDestNetwork(), ns3::Ipv6RoutingTableEntry::GetDestNetworkPrefix(), ns3::Ipv6RoutingTableEntry::GetInterface(), ns3::Ipv6Address::GetZero(), m_networkRoutes, NS_LOG_FUNCTION, and RemoveRoute().

void ns3::Ipv6StaticRouting::PrintRoutingTable ( Ptr< OutputStreamWrapper stream) const
virtual

Print the Routing Table entries.

Parameters
streamthe ostream the Routing table is printed to

Implements ns3::Ipv6RoutingProtocol.

Definition at line 79 of file ipv6-static-routing.cc.

References GetNRoutes(), GetRoute(), ns3::Time::GetSeconds(), ns3::OutputStreamWrapper::GetStream(), m_ipv6, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

bool ns3::Ipv6StaticRouting::RemoveMulticastRoute ( Ipv6Address  origin,
Ipv6Address  group,
uint32_t  inputInterface 
)

Remove a static multicast route.

Parameters
originIPv6 address of the source
groupthe multicast group address.
inputInterfacethe input interface index

Definition at line 183 of file ipv6-static-routing.cc.

References ns3::Ipv6MulticastRoutingTableEntry::GetGroup(), ns3::Ipv6MulticastRoutingTableEntry::GetInputInterface(), ns3::Ipv6MulticastRoutingTableEntry::GetOrigin(), m_multicastRoutes, and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::RemoveMulticastRoute ( uint32_t  i)

Remove a multicast route.

Parameters
iindex of route to remove

Definition at line 201 of file ipv6-static-routing.cc.

References m_multicastRoutes, and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::RemoveRoute ( uint32_t  i)

Remove a route from the routing table.

Parameters
iindex

Definition at line 474 of file ipv6-static-routing.cc.

References m_networkRoutes, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by NotifyInterfaceDown(), NotifyRemoveAddress(), and NotifyRemoveRoute().

void ns3::Ipv6StaticRouting::RemoveRoute ( Ipv6Address  network,
Ipv6Prefix  prefix,
uint32_t  ifIndex,
Ipv6Address  prefixToUse 
)

Remove a route from the routing table.

Parameters
networkIPv6 network
prefixIPv6 prefix
ifIndexinterface index
prefixToUseIPv6 prefix to use with this route (multihoming)

Definition at line 492 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::GetDest(), ns3::Ipv6RoutingTableEntry::GetInterface(), ns3::Ipv6RoutingTableEntry::GetPrefixToUse(), m_networkRoutes, and NS_LOG_FUNCTION.

bool ns3::Ipv6StaticRouting::RouteInput ( Ptr< const Packet p,
const Ipv6Header header,
Ptr< const NetDevice idev,
UnicastForwardCallback  ucb,
MulticastForwardCallback  mcb,
LocalDeliverCallback  lcb,
ErrorCallback  ecb 
)
virtual

Route an input packet (to be forwarded or locally delivered)

This lookup is used in the forwarding process. The packet is handed over to the Ipv6RoutingProtocol, and will get forwarded onward by one of the callbacks. The Linux equivalent is ip_route_input (). There are four valid outcomes, and a matching callbacks to handle each.

Parameters
preceived packet
headerinput parameter used to form a search key for a route
idevPointer to ingress network device
ucbCallback for the case in which the packet is to be forwarded as unicast
mcbCallback for the case in which the packet is to be forwarded as multicast
lcbCallback for the case in which the packet is to be locally delivered
ecbCallback to call if there is an error in forwarding
Returns
true if the Ipv6RoutingProtocol takes responsibility for forwarding or delivering the packet, false otherwise

Implements ns3::Ipv6RoutingProtocol.

Definition at line 538 of file ipv6-static-routing.cc.

References ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6Header::GetDestinationAddress(), ns3::Ipv6Header::GetSourceAddress(), ns3::Ipv6Address::IsEqual(), ns3::Ipv6Address::IsMulticast(), LookupStatic(), m_ipv6, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Ptr< Ipv6Route > ns3::Ipv6StaticRouting::RouteOutput ( Ptr< Packet p,
const Ipv6Header header,
Ptr< NetDevice oif,
Socket::SocketErrno &  sockerr 
)
virtual

Query routing cache for an existing route, for an outbound packet.

This lookup is used by transport protocols. It does not cause any packet to be forwarded, and is synchronous. Can be used for multicast or unicast. The Linux equivalent is ip_route_output ()

Parameters
ppacket to be routed. Note that this method may modify the packet. Callers may also pass in a null pointer.
headerinput parameter (used to form key to search for the route)
oifOutput interface device. May be zero, or may be bound via socket options to a particular output interface.
sockerrOutput parameter; socket errno
Returns
a code that indicates what happened in the lookup

Implements ns3::Ipv6RoutingProtocol.

Definition at line 509 of file ipv6-static-routing.cc.

References ns3::Ipv6Header::GetDestinationAddress(), ns3::Ipv6Address::IsMulticast(), LookupStatic(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.

void ns3::Ipv6StaticRouting::SetDefaultMulticastRoute ( uint32_t  outputInterface)

Set the default multicast route.

Parameters
outputInterfacedefault output interface

Definition at line 147 of file ipv6-static-routing.cc.

References ns3::Ipv6RoutingTableEntry::CreateNetworkRouteTo(), m_networkRoutes, and NS_LOG_FUNCTION.

void ns3::Ipv6StaticRouting::SetDefaultRoute ( Ipv6Address  nextHop,
uint32_t  interface,
Ipv6Address  prefixToUse = Ipv6Address ("::"),
uint32_t  metric = 0 
)

Set the default route.

Parameters
nextHopnext hop address to route the packet
interfaceinterface index
prefixToUseprefix to use (i.e for multihoming)
metricmetric of route in case of multiple routes to same destination

Definition at line 133 of file ipv6-static-routing.cc.

References AddNetworkRouteTo(), ns3::Ipv6Prefix::GetZero(), and NS_LOG_FUNCTION.

Referenced by NotifyAddRoute().

void ns3::Ipv6StaticRouting::SetIpv6 ( Ptr< Ipv6 ipv6)
virtual

Typically, invoked directly or indirectly from ns3::Ipv6::SetRoutingProtocol.

Parameters
ipv6the ipv6 object this routing protocol is being associated with

Implements ns3::Ipv6RoutingProtocol.

Definition at line 57 of file ipv6-static-routing.cc.

References m_ipv6, NotifyInterfaceDown(), NotifyInterfaceUp(), NS_ASSERT, and NS_LOG_FUNCTION.

Ipv6Address ns3::Ipv6StaticRouting::SourceAddressSelection ( uint32_t  interface,
Ipv6Address  dest 
)
private

Choose the source address to use with destination address.

Parameters
interfaceinterface index
destIPv6 destination address
Returns
IPv6 source address to use

Definition at line 751 of file ipv6-static-routing.cc.

References ns3::Ipv6Address::CombinePrefix(), ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6Address::GetAllHostsMulticast(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::Ipv6Address::GetAllRoutersMulticast(), ns3::Ipv6InterfaceAddress::GetPrefix(), m_ipv6, and NS_LOG_FUNCTION.

Referenced by LookupStatic().


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