Ipv4InterfaceContainer Ipv4AddressHelper::Assign (const NetDeviceContainer &c) { NS_LOG_FUNCTION_NOARGS (); Ipv4InterfaceContainer retval; for (uint32_t i = 0; i < c.GetN (); ++i) { Ptr<NetDevice> device = c.Get (i); Ptr<Node> node = device->GetNode (); NS_ASSERT_MSG (node, "Ipv4AddressHelper::Assign(): NetDevice is not not associated " "with any node -> fail"); Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> (); NS_ASSERT_MSG (ipv4, "Ipv4AddressHelper::Assign(): NetDevice is associated" " with a node without IPv4 stack installed -> fail " "(maybe need to use InternetStackHelper?)"); int32_t interface = ipv4->GetInterfaceForDevice (device); if (interface == -1) { interface = ipv4->AddInterface (device); } NS_ASSERT_MSG (interface >= 0, "Ipv4AddressHelper::Assign(): " "Interface index not found"); Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (NewAddress (), m_mask); ipv4->AddAddress (interface, ipv4Addr); ipv4->SetMetric (interface, 1); ipv4->SetUp (interface); retval.Add (ipv4, interface); } return retval; }