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"
89 NS_FATAL_ERROR (
"Did not pass in a valid Mac Address (16, 48 or 64 bits)");
125 for (uint32_t i = 0; i < c.
GetN (); ++i)
130 NS_ASSERT_MSG (node,
"Ipv6AddressHelper::Allocate (): Bad node");
133 NS_ASSERT_MSG (ipv6,
"Ipv6AddressHelper::Allocate (): Bad ipv6");
136 ifIndex = ipv6->GetInterfaceForDevice (device);
139 ifIndex = ipv6->AddInterface (device);
141 NS_ASSERT_MSG (ifIndex >= 0,
"Ipv6AddressHelper::Allocate (): "
142 "Interface index not found");
145 ipv6->SetMetric (ifIndex, 1);
146 ipv6->AddAddress (ifIndex, ipv6Addr);
147 ipv6->SetUp (ifIndex);
149 retval.
Add (ipv6, ifIndex);
158 for (uint32_t i = 0; i < c.
GetN (); ++i)
163 NS_ASSERT_MSG (node,
"Ipv6AddressHelper::Allocate (): Bad node");
166 NS_ASSERT_MSG (ipv6,
"Ipv6AddressHelper::Allocate (): Bad ipv6");
168 int32_t ifIndex = ipv6->GetInterfaceForDevice (device);
171 ifIndex = ipv6->AddInterface (device);
173 NS_ASSERT_MSG (ifIndex >= 0,
"Ipv6AddressHelper::Allocate (): "
174 "Interface index not found");
176 ipv6->SetMetric (ifIndex, 1);
178 if (withConfiguration.at (i))
181 ipv6->AddAddress (ifIndex, ipv6Addr);
184 ipv6->SetUp (ifIndex);
185 retval.
Add (ipv6, ifIndex);
194 std::vector<bool> withConfiguration;
195 for (uint32_t i = 0; i < c.
GetN (); ++i)
197 withConfiguration.push_back (
false);
199 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.
NS_LOG_COMPONENT_DEFINE("GrantedTimeWindowMpiInterface")
Access to the IPv6 forwarding table, interfaces, and configuration.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr 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 according 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 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.
static Mac64Address ConvertFrom(const Address &address)
Describes an IPv6 prefix.
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...