1. Changeset: d99061f1167c Synopsis: -------- - deconflict NetDevice::ifIndex and Ipv4::ifIndex (bug 85) Changed public API (src/node) -------- All function parameters named "ifIndex" that refer to an Ipv4 interface are instead named "interface". - static const uint32_t Ipv4RoutingProtocol::IF_INDEX_ANY = 0xffffffff; + static const uint32_t Ipv4RoutingProtocol::INTERFACE_ANY = 0xffffffff; - bool Ipv4RoutingProtocol::RequestIfIndex (Ipv4Address destination, uint32_t& ifIndex); + bool Ipv4RoutingProtocol::RequestInterface (Ipv4Address destination, uint32_t& interface); (N.B. this particular function will be later renamed to RouteOutput() in the proposed IPv4 routing refactoring) - uint32_t Ipv4::GetIfIndexByAddress (Ipv4Address addr, Ipv4Mask mask); + int_32t Ipv4::GetInterfaceForAddress (Ipv4Address address, Ipv4Mask mask) const; - bool Ipv4::GetIfIndexForDestination (Ipv4Address dest, uint32_t &ifIndex) const; + bool Ipv4::GetInterfaceForDestination (Ipv4Address dest, uint32_t &interface) const; (N.B. this function is not needed in the proposed Ipv4 routing refactoring) New public API or classes (src/node) -------- None. Changed private API (src/internet-node) -------- (similar API changes to the IPv4 implementation classes instantiating the above public API) New private API or classes (src/internet-node) -------- None. ======================================================================== 2. Changeset: e493e80274bd (implementation added in parallel) Changeset: TBD (cut over of client code, remove old code) Synopsis: -------- - allow multiple IPv4 addresses to be assigned to an interface (bug 188) Changed public API: -------- We now have a new class and methods to account for the possibility of having multiple IP addresses on an interface: + virtual uint32_t AddAddress (uint32_t interface, Ipv4InterfaceAddress address) = 0; + virtual Ipv4InterfaceAddress GetAddress (uint32_t interface, uint32_t addressIndex) const = 0; + virtual uint32_t GetNAddresses (uint32_t interface) const = 0; This convenience function was removed: - virtual uint32_t GetIfIndexByAddress (Ipv4Address addr, - Ipv4Mask mask = Ipv4Mask("255.255.255.255")); A few public methods were renamed because they were poorly named: - virtual uint32_t FindInterfaceForAddr (Ipv4Address addr, + virtual int32_t GetInterfaceForAddress (Ipv4Address address, Ipv4Mask mask) const = 0; - virtual int32_t FindInterfaceForDevice(Ptr nd) const = 0; + virtual int32_t GetInterfaceForDevice (Ptr device) const = 0; New public API or classes (src/node) -------- class Ipv4InterfaceAddress: This is a new class to parallel Linux struct in_ifaddr. It holds IP addressing information, including mask, broadcast address, scope, whether primary or secondary, etc. ======================================================================== 3. Changeset: TBD Synopsis: -------- - Remove class Ipv4Impl from src/internet-stack Changed public API: -------- None Changed private API --------- Remove class Ipv4Impl; class Ipv4L3Protocol now inherits from class Ipv4 allow multiple IPv4 addresses to be assigned to an interface (bug 188)