--- 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