src/internet-stack/ipv4-interface.cc
changeset 4373 e493e80274bd
parent 3260 8c0ab08144e6
child 4375 db81fdcb06e7
--- a/src/internet-stack/ipv4-interface.cc	Wed Apr 08 13:35:34 2009 -0700
+++ b/src/internet-stack/ipv4-interface.cc	Wed Apr 08 16:07:34 2009 -0700
@@ -170,5 +170,64 @@
   }
 }
 
+uint32_t
+Ipv4Interface::GetNAddresses (void) const
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  return m_ifaddrs.size();
+}
+
+uint32_t
+Ipv4Interface::AddAddress (Ipv4InterfaceAddress addr)
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  uint32_t index = m_ifaddrs.size ();
+  m_ifaddrs.push_back (addr);
+  return index;
+}
+
+Ipv4InterfaceAddress
+Ipv4Interface::GetAddress (uint32_t index) const
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  if (index < m_ifaddrs.size ())
+    {
+      uint32_t tmp = 0;
+      for (Ipv4InterfaceAddressListCI i = m_ifaddrs.begin (); i!= m_ifaddrs.end (); i++)
+        {
+          if (tmp  == index)
+            {
+              return *i;
+            }
+          ++tmp;
+        }
+    }
+  NS_ASSERT (false);  // Assert if not found
+  Ipv4InterfaceAddress addr;
+  return (addr);  // quiet compiler
+}
+
+void
+Ipv4Interface::RemoveAddress (uint32_t index)
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  if (index >= m_ifaddrs.size ())
+    {
+      NS_ASSERT_MSG (false, "Bug in Ipv4Interface::RemoveAddress");
+    }
+  Ipv4InterfaceAddressListI i = m_ifaddrs.begin ();
+  uint32_t tmp = 0;
+  while (i != m_ifaddrs.end ())
+    {
+      if (tmp  == index)
+        {
+          m_ifaddrs.erase (i);
+          return;
+        }
+       ++tmp;
+    }
+  NS_ASSERT_MSG (false, "Address " << index << " not found");
+}
+
 }; // namespace ns3