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<NetDevice> nd) const = 0;
+ virtual int32_t GetInterfaceForDevice (Ptr<const NetDevice> 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)