shill: Add IP Address tracking to DeviceInfo
Subscribe to IP Address messages in DeviceInfo, and create a
per-device list of assigned IP Addresses. Provide a method
to flush all globally scoped addresses from a device.
As a result, we can now flush assigned IP addresses when a
Connection is terminated. There is also some incidental cleanup
in RTNLHandler to remove some vestiges of hand-baked RTNL
message encoding.
BUG=chromium-os:19744
TEST=Run new unit tests. Test using ethernet on a netbook to make sure
addresses are added and removed correctly.
Change-Id: I63fd09088e71c43cb1f11a89a8ef15e11074976c
Reviewed-on: http://gerrit.chromium.org/gerrit/7180
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/mock_rtnl_handler.h b/mock_rtnl_handler.h
index b4b124b..de96ff8 100644
--- a/mock_rtnl_handler.h
+++ b/mock_rtnl_handler.h
@@ -23,10 +23,11 @@
MOCK_METHOD3(SetInterfaceFlags, void(int interface_index,
unsigned int flags,
unsigned int change));
- MOCK_METHOD2(AddInterfaceAddress, bool(int interface_index,
- const IPConfig &config));
+ MOCK_METHOD3(AddInterfaceAddress, bool(int interface_index,
+ const IPAddress &local,
+ const IPAddress &broadcast));
MOCK_METHOD2(RemoveInterfaceAddress, bool(int interface_index,
- const IPConfig &config));
+ const IPAddress &local));
MOCK_METHOD1(RequestDump, void(int request_flags));
MOCK_METHOD1(GetInterfaceIndex, int(const std::string &interface_name));
MOCK_METHOD1(SendMessage, bool(RTNLMessage *message));