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

Helper class to auto-assign global IPv6 unicast addresses. More...

#include <ipv6-address-helper.h>

Public Member Functions

 Ipv6AddressHelper ()
 Constructor. More...
 
 Ipv6AddressHelper (Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
 Constructor. More...
 
Ipv6InterfaceContainer Assign (const NetDeviceContainer &c)
 Allocate an Ipv6InterfaceContainer with auto-assigned addresses. More...
 
Ipv6InterfaceContainer Assign (const NetDeviceContainer &c, std::vector< bool > withConfiguration)
 Allocate an Ipv6InterfaceContainer, and control whether the interfaces have addresses auto-assigned to them. More...
 
Ipv6InterfaceContainer AssignWithoutAddress (const NetDeviceContainer &c)
 Allocate an Ipv6InterfaceContainer but do not assign any IPv6 addresses. More...
 
Ipv6Address NewAddress (Address addr)
 Allocate a new Ipv6Address. More...
 
Ipv6Address NewAddress (void)
 Allocate a new Ipv6Address with interface ID equal to the next one in the underlying generator. More...
 
void NewNetwork (Ipv6Address network, Ipv6Prefix prefix) NS_DEPRECATED
 Allocate a new network. More...
 
void NewNetwork (void)
 Allocate a new network. More...
 
void SetBase (Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
 Set the base network number, network prefix, and base interface ID. More...
 

Detailed Description

Helper class to auto-assign global IPv6 unicast addresses.

Assign global unicast IPv6 addresses based on RFC 4291 definition.

| n bits | 64-n bits | 64 bits | +----------------------—+--------—+-------------------------—+ | global routing prefix | subnet ID | interface ID | +----------------------—+--------—+-------------------------—+ <----------—network-------------—>

11111111111111111111111111000000000000 <—prefix of length n—>

This class handles the following quantities. 1) The "network" which covers the 64 bit union of the global routing prefix and the subnet ID 2) the "prefix" length "n" which demarcates the global routing prefix and the subnet ID 3) the "base" which is the initial 64-bit interface ID.

The names "network", "prefix" and "base" are chosen to be consistent with a similar address helper for IPv4.

This helper class allows users to set or reset the network and interface components, and call "NewAddress ()" to sequentially increment the interface ID, and call "NewNetwork ()" to allocate a new subnet (until the subnet ID quantity rolls over). A call to NewNetwork () that causes the subnet ID to roll over will trigger an assertion.

By default, the prefix is 32 bits and the network is '2001:db8::/32' (RFC 5156 section 2.6 Documentation prefix). The prefix may range from length 0 to 64, with the value 64 having a special meaning that no subnet ID boundary is enforced (equivalent to value 0).

There are two variants of interface ID supported (RFC 4291, Sec. 2.5.1) The default is a "local" scope, but a "universal" scoped ID may be formed by calling "NewAddress (Address addr)" with a 48-bit MAC address. If this method is called, the addressed returned will include a modified EUI-64-format identifier created from the MAC address as specified in RFC 4291.

BEWARE: the underlying implementation acts as a Singleton. In other terms, two different instances of Ipv6AddressHelper will pick IPv6 numbers from the same pool. Changing the network in one of them will also change the network in the other instances.

Definition at line 82 of file ipv6-address-helper.h.

Constructor & Destructor Documentation

ns3::Ipv6AddressHelper::Ipv6AddressHelper ( )

Constructor.

Definition at line 39 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::Init(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

ns3::Ipv6AddressHelper::Ipv6AddressHelper ( Ipv6Address  network,
Ipv6Prefix  prefix,
Ipv6Address  base = Ipv6Address ("::1") 
)

Constructor.

Parameters
networkThe IPv6 network
prefixThe prefix
baseThe base interface ID

Definition at line 45 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::Init(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Member Function Documentation

Ipv6InterfaceContainer ns3::Ipv6AddressHelper::Assign ( const NetDeviceContainer c,
std::vector< bool >  withConfiguration 
)

Allocate an Ipv6InterfaceContainer, and control whether the interfaces have addresses auto-assigned to them.

Parameters
cnetdevice container
withConfigurationa vector of values for which, for a given device, true : interface automatically addressed, false : no automatic address
Returns
newly created Ipv6InterfaceContainer

Definition at line 153 of file ipv6-address-helper.cc.

References ns3::Ipv6InterfaceContainer::Add(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), ns3::Object::GetObject(), NewAddress(), NS_ASSERT_MSG, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Ipv6InterfaceContainer ns3::Ipv6AddressHelper::AssignWithoutAddress ( const NetDeviceContainer c)

Allocate an Ipv6InterfaceContainer but do not assign any IPv6 addresses.

This method is used when IPv6 address assignment may occur later (such as dynamic address assignment)

Equivalent to AssignWithoutAddress (c, std::vector<bool> of false);

Parameters
cnetdevice container
Returns
newly created Ipv6InterfaceContainer

Definition at line 190 of file ipv6-address-helper.cc.

References Assign(), ns3::NetDeviceContainer::GetN(), and NS_LOG_FUNCTION.

Referenced by Ipv6RipngTest::DoRun(), Ipv6RipngCountToInfinityTest::DoRun(), Ipv6RipngSplitHorizonStrategyTest::DoRun(), and main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ipv6Address ns3::Ipv6AddressHelper::NewAddress ( Address  addr)

Allocate a new Ipv6Address.

If a Mac48Address is passed in, an Ipv6 autoconfigured address according to the current subnet prefix is returned. If something other than Mac48 address is passed in, the program will terminate.

Parameters
addraddress used to generate the interface ID of the IPv6 address
Returns
newly created Ipv6Address

Definition at line 62 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::AddAllocated(), first::address, ns3::Mac16Address::ConvertFrom(), ns3::Mac64Address::ConvertFrom(), ns3::Mac48Address::ConvertFrom(), ns3::Ipv6AddressGenerator::GetNetwork(), ns3::Mac16Address::IsMatchingType(), ns3::Mac64Address::IsMatchingType(), ns3::Mac48Address::IsMatchingType(), ns3::Ipv6Address::MakeAutoconfiguredAddress(), NS_FATAL_ERROR, and NS_LOG_FUNCTION.

Referenced by IpAddressHelperTestCasev6::DoRun(), and main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ipv6Address ns3::Ipv6AddressHelper::NewAddress ( void  )

Allocate a new Ipv6Address with interface ID equal to the next one in the underlying generator.

Returns
newly created Ipv6Address

Definition at line 94 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::NextAddress(), and NS_LOG_FUNCTION.

Referenced by Assign().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv6AddressHelper::NewNetwork ( Ipv6Address  network,
Ipv6Prefix  prefix 
)

Allocate a new network.

This method will reset the network for future network IDs, and resets the interface ID to the previously used base.

Parameters
networkThe IPv6 network
prefixThe prefix
Deprecated:

Definition at line 107 of file ipv6-address-helper.cc.

References NS_LOG_FUNCTION, and SetBase().

Referenced by ns3::BriteTopologyHelper::AssignIpv6Addresses(), and IpAddressHelperTestCasev6::DoRun().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv6AddressHelper::NewNetwork ( void  )

Allocate a new network.

This method will cause the subnet prefix to increment, for future network IDs, and resets the interface ID to the previously used base.

Definition at line 113 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::NextNetwork(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::Ipv6AddressHelper::SetBase ( Ipv6Address  network,
Ipv6Prefix  prefix,
Ipv6Address  base = Ipv6Address ("::1") 
)

Set the base network number, network prefix, and base interface ID.

Parameters
networkThe IPv6 network
prefixThe prefix
baseThe base interface ID
Todo:
for now we do not enforce the prefix because the underlying Ipv6AddressGenerator does not handle prefixes well that are not 64 bits

Definition at line 52 of file ipv6-address-helper.cc.

References ns3::Ipv6AddressGenerator::Init(), and NS_LOG_FUNCTION.

Referenced by ns3::PointToPointStarHelper::AssignIpv6Addresses(), ns3::PointToPointGridHelper::AssignIpv6Addresses(), ns3::CsmaStarHelper::AssignIpv6Addresses(), ns3::PointToPointDumbbellHelper::AssignIpv6Addresses(), IpAddressHelperTestCasev6::DoRun(), Ipv6RipngTest::DoRun(), Ipv6RipngCountToInfinityTest::DoRun(), Ipv6RipngSplitHorizonStrategyTest::DoRun(), main(), and NewNetwork().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


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