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/rtnl_message_unittest.cc b/rtnl_message_unittest.cc
index cae6ae1..f74136a 100644
--- a/rtnl_message_unittest.cc
+++ b/rtnl_message_unittest.cc
@@ -333,7 +333,7 @@
class RTNLMessageTest : public Test {
protected:
void TestParseLink(const ByteString &packet,
- RTNLMessage::MessageMode mode,
+ RTNLMessage::Mode mode,
int interface_index,
unsigned int flags,
unsigned int change,
@@ -345,7 +345,7 @@
RTNLMessage msg;
EXPECT_TRUE(msg.Decode(packet));
- EXPECT_EQ(RTNLMessage::kMessageTypeLink, msg.type());
+ EXPECT_EQ(RTNLMessage::kTypeLink, msg.type());
EXPECT_EQ(mode, msg.mode());
EXPECT_EQ(interface_index, msg.interface_index());
@@ -375,14 +375,14 @@
}
void TestParseAddress(const ByteString &packet,
- RTNLMessage::MessageMode mode,
+ RTNLMessage::Mode mode,
int interface_index,
const IPAddress &address,
unsigned char scope) {
RTNLMessage msg;
EXPECT_TRUE(msg.Decode(packet));
- EXPECT_EQ(RTNLMessage::kMessageTypeAddress, msg.type());
+ EXPECT_EQ(RTNLMessage::kTypeAddress, msg.type());
EXPECT_EQ(mode, msg.mode());
EXPECT_EQ(interface_index, msg.interface_index());
EXPECT_EQ(address.family(), msg.family());
@@ -399,7 +399,7 @@
}
void TestParseRoute(const ByteString &packet,
- RTNLMessage::MessageMode mode,
+ RTNLMessage::Mode mode,
IPAddress::Family family,
int interface_index,
const IPAddress &dst,
@@ -413,7 +413,7 @@
RTNLMessage msg;
EXPECT_TRUE(msg.Decode(packet));
- EXPECT_EQ(RTNLMessage::kMessageTypeRoute, msg.type());
+ EXPECT_EQ(RTNLMessage::kTypeRoute, msg.type());
EXPECT_EQ(0, msg.interface_index());
EXPECT_EQ(family, msg.family());
@@ -465,7 +465,7 @@
TEST_F(RTNLMessageTest, NewLinkWlan0) {
TestParseLink(ByteString(kNewLinkMessageWlan0, sizeof(kNewLinkMessageWlan0)),
- RTNLMessage::kMessageModeAdd,
+ RTNLMessage::kModeAdd,
kNewLinkMessageWlan0InterfaceIndex,
kNewLinkMessageWlan0InterfaceFlags,
kNewLinkMessageWlan0InterfaceFlagsChange,
@@ -478,7 +478,7 @@
TEST_F(RTNLMessageTest, DelLinkEth0) {
TestParseLink(ByteString(kDelLinkMessageEth0, sizeof(kDelLinkMessageEth0)),
- RTNLMessage::kMessageModeDelete,
+ RTNLMessage::kModeDelete,
kDelLinkMessageEth0InterfaceIndex,
kDelLinkMessageEth0InterfaceFlags,
kDelLinkMessageEth0InterfaceFlagsChange,
@@ -495,7 +495,7 @@
EXPECT_TRUE(addr.SetAddressFromString(kNewAddrIPV4Address));
addr.set_prefix(kNewAddrIPV4AddressPrefix);
TestParseAddress(ByteString(kNewAddrIPV4, sizeof(kNewAddrIPV4)),
- RTNLMessage::kMessageModeAdd,
+ RTNLMessage::kModeAdd,
kNewAddrIPV4InterfaceIndex,
addr,
kNewAddrIPV4Scope);
@@ -512,7 +512,7 @@
EXPECT_TRUE(gateway.SetAddressFromString(kDelRouteIPV6Address));
TestParseRoute(ByteString(kDelRouteIPV6, sizeof(kDelRouteIPV6)),
- RTNLMessage::kMessageModeDelete,
+ RTNLMessage::kModeDelete,
IPAddress::kAddressFamilyIPv6,
kDelRouteIPV6InterfaceIndex,
dst,
@@ -535,7 +535,7 @@
EXPECT_TRUE(gateway.SetAddressFromString(kAddRouteIPV4Address));
TestParseRoute(ByteString(kAddRouteIPV4, sizeof(kAddRouteIPV4)),
- RTNLMessage::kMessageModeAdd,
+ RTNLMessage::kModeAdd,
IPAddress::kAddressFamilyIPv4,
kAddRouteIPV4InterfaceIndex,
dst,
@@ -563,8 +563,8 @@
}
TEST_F(RTNLMessageTest, Encode) {
- RTNLMessage msg(RTNLMessage::kMessageTypeRoute,
- RTNLMessage::kMessageModeAdd,
+ RTNLMessage msg(RTNLMessage::kTypeRoute,
+ RTNLMessage::kModeAdd,
0, 1, 2, 0,
IPAddress::kAddressFamilyIPv4);
IPAddress dst(IPAddress::kAddressFamilyIPv4);
@@ -585,7 +585,7 @@
TestParseRoute(msg.Encode(),
- RTNLMessage::kMessageModeAdd,
+ RTNLMessage::kModeAdd,
IPAddress::kAddressFamilyIPv4,
12,
dst,