21 #include "ns3/assert.h"
25 #include "ns3/net-device.h"
26 #include "ns3/mac16-address.h"
27 #include "ns3/mac48-address.h"
28 #include "ns3/mac64-address.h"
30 #include "ns3/ipv6-address-generator.h"
88 NS_FATAL_ERROR (
"Did not pass in a valid Mac Address (16, 48 or 64 bits)");
124 for (uint32_t i = 0; i < c.
GetN (); ++i)
129 NS_ASSERT_MSG (node,
"Ipv6AddressHelper::Allocate (): Bad node");
132 NS_ASSERT_MSG (ipv6,
"Ipv6AddressHelper::Allocate (): Bad ipv6");
135 ifIndex = ipv6->GetInterfaceForDevice (device);
138 ifIndex = ipv6->AddInterface (device);
140 NS_ASSERT_MSG (ifIndex >= 0,
"Ipv6AddressHelper::Allocate (): "
141 "Interface index not found");
144 ipv6->SetMetric (ifIndex, 1);
145 ipv6->AddAddress (ifIndex, ipv6Addr);
146 ipv6->SetUp (ifIndex);
148 retval.
Add (ipv6, ifIndex);
157 for (uint32_t i = 0; i < c.
GetN (); ++i)
162 NS_ASSERT_MSG (node,
"Ipv6AddressHelper::Allocate (): Bad node");
165 NS_ASSERT_MSG (ipv6,
"Ipv6AddressHelper::Allocate (): Bad ipv6");
167 int32_t ifIndex = ipv6->GetInterfaceForDevice (device);
170 ifIndex = ipv6->AddInterface (device);
172 NS_ASSERT_MSG (ifIndex >= 0,
"Ipv6AddressHelper::Allocate (): "
173 "Interface index not found");
175 ipv6->SetMetric (ifIndex, 1);
177 if (withConfiguration.at (i))
180 ipv6->AddAddress (ifIndex, ipv6Addr);
183 ipv6->SetUp (ifIndex);
184 retval.
Add (ipv6, ifIndex);
193 std::vector<bool> withConfiguration;
194 for (uint32_t i = 0; i < c.
GetN (); ++i)
196 withConfiguration.push_back (
false);
198 return Assign (c, withConfiguration);
static bool IsMatchingType(const Address &address)
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
Keep track of a set of IPv6 interfaces.
Access to the IPv6 forwarding table, interfaces, and configuration.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
static Mac16Address ConvertFrom(const Address &address)
static bool IsMatchingType(const Address &address)
void Add(Ptr< Ipv6 > ipv6, uint32_t interface)
Add a couple IPv6/interface.
static Ipv6Address MakeAutoconfiguredAddress(Mac16Address addr, Ipv6Address prefix)
Make the autoconfigured IPv6 address with Mac16Address.
IPv6 address associated with an interface.
static Ipv6Address NextNetwork(const Ipv6Prefix prefix)
Get the next network acoording to the given Ipv6Prefix.
void SetBase(Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
Set the base network number, network prefix, and base interface ID.
#define NS_FATAL_ERROR(msg)
fatal error handling
a polymophic address class
Ipv6InterfaceContainer Assign(const NetDeviceContainer &c)
Allocate an Ipv6InterfaceContainer with auto-assigned addresses.
uint32_t GetN(void) const
Get the number of Ptr<NetDevice> stored in this container.
static void Init(const Ipv6Address net, const Ipv6Prefix prefix, const Ipv6Address interfaceId="::1")
Initialise the base network and interfaceId for the generator.
holds a vector of ns3::NetDevice pointers
static Mac48Address ConvertFrom(const Address &address)
#define NS_ASSERT_MSG(condition, message)
Describes an IPv6 address.
NS_LOG_COMPONENT_DEFINE("PacketLossCounter")
static Mac64Address ConvertFrom(const Address &address)
Describes an IPv6 prefix. It is just a bitmask like Ipv4Mask.
static bool AddAllocated(const Ipv6Address addr)
Add the Ipv6Address to the list of IPv6 entries.
static bool IsMatchingType(const Address &address)
Ipv6InterfaceContainer AssignWithoutAddress(const NetDeviceContainer &c)
Allocate an Ipv6InterfaceContainer but do not assign any IPv6 addresses.
Ptr< T > GetObject(void) const
static Ipv6Address NextAddress(const Ipv6Prefix prefix)
Allocate the next Ipv6Address for the configured network and prefix.
Ipv6AddressHelper()
Constructor.
void NewNetwork(void)
Allocate a new network.
static Ipv6Address GetNetwork(const Ipv6Prefix prefix)
Get the current network of the given Ipv6Prefix.
Ipv6Address NewAddress(void)
Allocate a new Ipv6Address with interface ID equal to the next one in the underlying generator...