A Discrete-Event Network Simulator
API
Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
ns3::Ipv6InterfaceContainer Class Reference

Keep track of a set of IPv6 interfaces. More...

#include "ipv6-interface-container.h"

Public Types

typedef std::vector< std::pair< Ptr< Ipv6 >, uint32_t > >::const_iterator Iterator
 Container Const Iterator for pairs of Ipv6 smart pointer / Interface Index. More...
 

Public Member Functions

 Ipv6InterfaceContainer ()
 Constructor. More...
 
void Add (Ptr< Ipv6 > ipv6, uint32_t interface)
 Add a couple IPv6/interface. More...
 
void Add (const Ipv6InterfaceContainer &c)
 Fusion with another Ipv6InterfaceContainer. More...
 
void Add (std::string ipv6Name, uint32_t interface)
 Add a couple of name/interface. More...
 
Iterator Begin (void) const
 Get an iterator which refers to the first pair in the container. More...
 
Iterator End (void) const
 Get an iterator which indicates past-the-last Node in the container. More...
 
Ipv6Address GetAddress (uint32_t i, uint32_t j) const
 Get the address for the specified index. More...
 
uint32_t GetInterfaceIndex (uint32_t i) const
 Get the interface index for the specified node index. More...
 
Ipv6Address GetLinkLocalAddress (uint32_t i)
 Get the link-local address for the specified index. More...
 
Ipv6Address GetLinkLocalAddress (Ipv6Address address)
 Get the link-local address for the node with the specified global address. More...
 
uint32_t GetN (void) const
 
void SetDefaultRoute (uint32_t i, uint32_t router)
 Set the default route for the specified index. More...
 
void SetDefaultRoute (uint32_t i, Ipv6Address routerAddr)
 Set the default route for the specified index. More...
 
void SetDefaultRouteInAllNodes (uint32_t router)
 Set the default route for all the devices (except the router itself). More...
 
void SetDefaultRouteInAllNodes (Ipv6Address routerAddr)
 Set the default route for all the devices (except the router itself). More...
 
void SetForwarding (uint32_t i, bool state)
 Set the state of the stack (act as a router or as an host) for the specified index. More...
 

Private Types

typedef std::vector< std::pair< Ptr< Ipv6 >, uint32_t > > InterfaceVector
 Container for pairs of Ipv6 smart pointer / Interface Index. More...
 

Private Attributes

InterfaceVector m_interfaces
 List of IPv6 stack and interfaces index. More...
 

Detailed Description

Keep track of a set of IPv6 interfaces.

Definition at line 41 of file ipv6-interface-container.h.

Member Typedef Documentation

◆ InterfaceVector

typedef std::vector<std::pair<Ptr<Ipv6>, uint32_t> > ns3::Ipv6InterfaceContainer::InterfaceVector
private

Container for pairs of Ipv6 smart pointer / Interface Index.

Definition at line 209 of file ipv6-interface-container.h.

◆ Iterator

typedef std::vector<std::pair<Ptr<Ipv6>, uint32_t> >::const_iterator ns3::Ipv6InterfaceContainer::Iterator

Container Const Iterator for pairs of Ipv6 smart pointer / Interface Index.

Definition at line 48 of file ipv6-interface-container.h.

Constructor & Destructor Documentation

◆ Ipv6InterfaceContainer()

ns3::Ipv6InterfaceContainer::Ipv6InterfaceContainer ( )

Constructor.

Definition at line 31 of file ipv6-interface-container.cc.

Member Function Documentation

◆ Add() [1/3]

void ns3::Ipv6InterfaceContainer::Add ( Ptr< Ipv6 ipv6,
uint32_t  interface 
)

◆ Add() [2/3]

void ns3::Ipv6InterfaceContainer::Add ( const Ipv6InterfaceContainer c)

Fusion with another Ipv6InterfaceContainer.

Parameters
ccontainer

Definition at line 75 of file ipv6-interface-container.cc.

References m_interfaces.

◆ Add() [3/3]

void ns3::Ipv6InterfaceContainer::Add ( std::string  ipv6Name,
uint32_t  interface 
)

Add a couple of name/interface.

Parameters
ipv6Namename of a node
interfaceinterface index to add

Definition at line 69 of file ipv6-interface-container.cc.

References m_interfaces.

◆ Begin()

Ipv6InterfaceContainer::Iterator ns3::Ipv6InterfaceContainer::Begin ( void  ) const

Get an iterator which refers to the first pair in the container.

Pairs can be retrieved from the container in two ways. First, directly by an index into the container, and second, using an iterator. This method is used in the iterator method and is typically used in a for-loop to run through the pairs

for (i = container.Begin (); i != container.End (); ++i)
{
std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
method (pair.first, pair.second); // use the pair
}
Returns
an iterator which refers to the first pair in the container.

Definition at line 36 of file ipv6-interface-container.cc.

References m_interfaces.

Referenced by ns3::PointToPointDumbbellHelper::AssignIpv6Addresses(), ns3::AsciiTraceHelperForIpv6::EnableAsciiIpv6Impl(), ns3::PcapHelperForIpv6::EnablePcapIpv6(), and UanExperiment::SetupCommunications().

◆ End()

Ipv6InterfaceContainer::Iterator ns3::Ipv6InterfaceContainer::End ( void  ) const

Get an iterator which indicates past-the-last Node in the container.

Nodes can be retrieved from the container in two ways. First, directly by an index into the container, and second, using an iterator. This method is used in the iterator method and is typically used in a for-loop to run through the Nodes

for (i = container.Begin (); i != container.End (); ++i)
{
std::pair<Ptr<Ipv6>, uint32_t> pair = *i;
method (pair.first, pair.second); // use the pair
}
Returns
an iterator which indicates an ending condition for a loop.

Definition at line 42 of file ipv6-interface-container.cc.

References m_interfaces.

Referenced by ns3::AsciiTraceHelperForIpv6::EnableAsciiIpv6Impl(), and ns3::PcapHelperForIpv6::EnablePcapIpv6().

◆ GetAddress()

Ipv6Address ns3::Ipv6InterfaceContainer::GetAddress ( uint32_t  i,
uint32_t  j 
) const

◆ GetInterfaceIndex()

uint32_t ns3::Ipv6InterfaceContainer::GetInterfaceIndex ( uint32_t  i) const

Get the interface index for the specified node index.

Parameters
iindex of the node
Returns
interface index

Definition at line 52 of file ipv6-interface-container.cc.

References m_interfaces.

◆ GetLinkLocalAddress() [1/2]

Ipv6Address ns3::Ipv6InterfaceContainer::GetLinkLocalAddress ( uint32_t  i)

Get the link-local address for the specified index.

Parameters
iindex
Returns
the link-local address, or "::" if the interface has no link local address.

Definition at line 207 of file ipv6-interface-container.cc.

References ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6Address::GetAny(), ns3::Ipv6InterfaceAddress::GetScope(), ns3::Ipv6InterfaceAddress::LINKLOCAL, and m_interfaces.

Referenced by SetDefaultRoute(), and SetDefaultRouteInAllNodes().

◆ GetLinkLocalAddress() [2/2]

Ipv6Address ns3::Ipv6InterfaceContainer::GetLinkLocalAddress ( Ipv6Address  address)

Get the link-local address for the node with the specified global address.

Parameters
addressthe address to find.
Returns
the link-local address, or "::" if the interface has no link local address.

Definition at line 222 of file ipv6-interface-container.cc.

References first::address, ns3::Ipv6InterfaceAddress::GetAddress(), ns3::Ipv6Address::GetAny(), ns3::Ipv6InterfaceAddress::GetScope(), ns3::Ipv6InterfaceAddress::LINKLOCAL, m_interfaces, and NS_ASSERT_MSG().

◆ GetN()

uint32_t ns3::Ipv6InterfaceContainer::GetN ( void  ) const
Returns
the number of Ptr<Ipv6> and interface pairs stored in this Ipv4InterfaceContainer.

Pairs can be retrieved from the container in two ways. First, directly by an index into the container, and second, using an iterator. This method is used in the direct method and is typically used to define an ending condition in a for-loop that runs through the stored Nodes

uint32_t nNodes = container.GetN ();
for (uint32_t i = 0 i < nNodes; ++i)
{
std::pair<Ptr<Ipv6>, uint32_t> pair = container.Get (i);
method (pair.first, pair.second); // use the pair
}

Definition at line 47 of file ipv6-interface-container.cc.

References m_interfaces.

Referenced by ThreeGppHttpObjectTestCase::CreateSimpleInternetNode().

◆ SetDefaultRoute() [1/2]

void ns3::Ipv6InterfaceContainer::SetDefaultRoute ( uint32_t  i,
uint32_t  router 
)

Set the default route for the specified index.

Parameters
iindex
routerthe default router

Definition at line 152 of file ipv6-interface-container.cc.

References ns3::Ipv6Address::GetAny(), GetLinkLocalAddress(), ns3::Ipv6StaticRoutingHelper::GetStaticRouting(), m_interfaces, and NS_ASSERT_MSG().

◆ SetDefaultRoute() [2/2]

void ns3::Ipv6InterfaceContainer::SetDefaultRoute ( uint32_t  i,
Ipv6Address  routerAddr 
)

Set the default route for the specified index.

Note that the route will be set to the link-local address of the node with the specified address.

Parameters
iindex
routerAddrthe default router address

Definition at line 170 of file ipv6-interface-container.cc.

References GetLinkLocalAddress(), ns3::Ipv6StaticRoutingHelper::GetStaticRouting(), m_interfaces, and NS_ASSERT_MSG().

◆ SetDefaultRouteInAllNodes() [1/2]

void ns3::Ipv6InterfaceContainer::SetDefaultRouteInAllNodes ( uint32_t  router)

◆ SetDefaultRouteInAllNodes() [2/2]

void ns3::Ipv6InterfaceContainer::SetDefaultRouteInAllNodes ( Ipv6Address  routerAddr)

Set the default route for all the devices (except the router itself).

Note that the route will be set to the link-local address of the node with the specified address.

Parameters
routerAddrthe default router address

Definition at line 112 of file ipv6-interface-container.cc.

References ns3::Ipv6StaticRoutingHelper::GetStaticRouting(), m_interfaces, and NS_ASSERT_MSG().

◆ SetForwarding()

void ns3::Ipv6InterfaceContainer::SetForwarding ( uint32_t  i,
bool  state 
)

Set the state of the stack (act as a router or as an host) for the specified index.

This automatically sets all the node's interfaces to the same forwarding state.

Parameters
iindex
statetrue : is a router, false : is an host

Definition at line 83 of file ipv6-interface-container.cc.

References m_interfaces.

Referenced by ns3::EmuEpcHelper::DoInitialize(), Ipv6RipngTest::DoRun(), LteIpv6RoutingTestCase::DoRun(), Ipv6RipngCountToInfinityTest::DoRun(), Ipv6RipngSplitHorizonStrategyTest::DoRun(), and ns3::PointToPointEpcHelper::PointToPointEpcHelper().

Member Data Documentation

◆ m_interfaces

InterfaceVector ns3::Ipv6InterfaceContainer::m_interfaces
private

List of IPv6 stack and interfaces index.

Definition at line 214 of file ipv6-interface-container.h.

Referenced by Add(), Begin(), End(), GetAddress(), GetInterfaceIndex(), GetLinkLocalAddress(), GetN(), SetDefaultRoute(), SetDefaultRouteInAllNodes(), and SetForwarding().


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