From 687ea102697b2ec64b503f16c9aaeb46bee5da99 Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 9 Aug 2017 07:08:58 -0400 Subject: [PATCH] common: return iface instead of addr from ipaddr.cc helpers So that we can use the same helper functions to look up interface names that we use to look up addresses. Signed-off-by: John Spray --- src/common/ipaddr.cc | 10 +++++----- src/include/ipaddr.h | 2 +- src/test/test_ipaddr.cc | 34 +++++++++++++++++----------------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/common/ipaddr.cc b/src/common/ipaddr.cc index 41add2de24e61..27b9cdff2b166 100644 --- a/src/common/ipaddr.cc +++ b/src/common/ipaddr.cc @@ -27,7 +27,7 @@ static void netmask_ipv4(const struct in_addr *addr, } -const struct sockaddr *find_ipv4_in_subnet(const struct ifaddrs *addrs, +const struct ifaddrs *find_ipv4_in_subnet(const struct ifaddrs *addrs, const struct sockaddr_in *net, unsigned int prefix_len) { struct in_addr want, temp; @@ -49,7 +49,7 @@ const struct sockaddr *find_ipv4_in_subnet(const struct ifaddrs *addrs, netmask_ipv4(cur, prefix_len, &temp); if (temp.s_addr == want.s_addr) { - return addrs->ifa_addr; + return addrs; } } @@ -71,7 +71,7 @@ static void netmask_ipv6(const struct in6_addr *addr, } -const struct sockaddr *find_ipv6_in_subnet(const struct ifaddrs *addrs, +const struct ifaddrs *find_ipv6_in_subnet(const struct ifaddrs *addrs, const struct sockaddr_in6 *net, unsigned int prefix_len) { struct in6_addr want, temp; @@ -93,14 +93,14 @@ const struct sockaddr *find_ipv6_in_subnet(const struct ifaddrs *addrs, netmask_ipv6(cur, prefix_len, &temp); if (IN6_ARE_ADDR_EQUAL(&temp, &want)) - return addrs->ifa_addr; + return addrs; } return NULL; } -const struct sockaddr *find_ip_in_subnet(const struct ifaddrs *addrs, +const struct ifaddrs *find_ip_in_subnet(const struct ifaddrs *addrs, const struct sockaddr *net, unsigned int prefix_len) { switch (net->sa_family) { diff --git a/src/include/ipaddr.h b/src/include/ipaddr.h index ac0dc620facf5..d9e096886545d 100644 --- a/src/include/ipaddr.h +++ b/src/include/ipaddr.h @@ -7,7 +7,7 @@ If there are multiple matches, the first one is returned; this order is system-dependent and should not be relied on. */ -const struct sockaddr *find_ip_in_subnet(const struct ifaddrs *addrs, +const struct ifaddrs *find_ip_in_subnet(const struct ifaddrs *addrs, const struct sockaddr *net, unsigned int prefix_len); diff --git a/src/test/test_ipaddr.cc b/src/test/test_ipaddr.cc index bf69b90a700a3..6f5a42f8fabc3 100644 --- a/src/test/test_ipaddr.cc +++ b/src/test/test_ipaddr.cc @@ -34,7 +34,7 @@ TEST(CommonIPAddr, TestNotFound) struct sockaddr_in a_one; struct sockaddr_in6 a_two; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -60,7 +60,7 @@ TEST(CommonIPAddr, TestV4_Simple) struct sockaddr_in a_one; struct sockaddr_in6 a_two; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -77,7 +77,7 @@ TEST(CommonIPAddr, TestV4_Simple) ipv4(&net, "10.11.12.42"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 24); - ASSERT_EQ((struct sockaddr*)&a_one, result); + ASSERT_EQ((struct sockaddr*)&a_one, result->ifa_addr); } TEST(CommonIPAddr, TestV4_Prefix25) @@ -86,7 +86,7 @@ TEST(CommonIPAddr, TestV4_Prefix25) struct sockaddr_in a_one; struct sockaddr_in a_two; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -103,7 +103,7 @@ TEST(CommonIPAddr, TestV4_Prefix25) ipv4(&net, "10.11.12.128"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 25); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, TestV4_Prefix16) @@ -112,7 +112,7 @@ TEST(CommonIPAddr, TestV4_Prefix16) struct sockaddr_in a_one; struct sockaddr_in a_two; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -129,7 +129,7 @@ TEST(CommonIPAddr, TestV4_Prefix16) ipv4(&net, "10.2.0.0"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 16); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, TestV4_PrefixTooLong) @@ -137,7 +137,7 @@ TEST(CommonIPAddr, TestV4_PrefixTooLong) struct ifaddrs one; struct sockaddr_in a_one; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -158,7 +158,7 @@ TEST(CommonIPAddr, TestV4_PrefixZero) struct sockaddr_in6 a_one; struct sockaddr_in a_two; struct sockaddr_in net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -175,7 +175,7 @@ TEST(CommonIPAddr, TestV4_PrefixZero) ipv4(&net, "255.0.1.2"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 0); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, TestV6_Simple) @@ -184,7 +184,7 @@ TEST(CommonIPAddr, TestV6_Simple) struct sockaddr_in a_one; struct sockaddr_in6 a_two; struct sockaddr_in6 net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -201,7 +201,7 @@ TEST(CommonIPAddr, TestV6_Simple) ipv6(&net, "2001:1234:5678:90ab::dead:beef"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 64); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, TestV6_Prefix57) @@ -210,7 +210,7 @@ TEST(CommonIPAddr, TestV6_Prefix57) struct sockaddr_in6 a_one; struct sockaddr_in6 a_two; struct sockaddr_in6 net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -227,7 +227,7 @@ TEST(CommonIPAddr, TestV6_Prefix57) ipv6(&net, "2001:1234:5678:90ab::dead:beef"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 57); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, TestV6_PrefixTooLong) @@ -235,7 +235,7 @@ TEST(CommonIPAddr, TestV6_PrefixTooLong) struct ifaddrs one; struct sockaddr_in6 a_one; struct sockaddr_in6 net; - const struct sockaddr *result; + const struct ifaddrs *result; memset(&net, '0', sizeof(net)); @@ -256,7 +256,7 @@ TEST(CommonIPAddr, TestV6_PrefixZero) struct sockaddr_in a_one; struct sockaddr_in6 a_two; struct sockaddr_in6 net; - const struct sockaddr *result; + const struct ifaddrs *result; one.ifa_next = &two; one.ifa_addr = (struct sockaddr*)&a_one; @@ -271,7 +271,7 @@ TEST(CommonIPAddr, TestV6_PrefixZero) ipv6(&net, "ff00::1"); result = find_ip_in_subnet(&one, (struct sockaddr*)&net, 0); - ASSERT_EQ((struct sockaddr*)&a_two, result); + ASSERT_EQ((struct sockaddr*)&a_two, result->ifa_addr); } TEST(CommonIPAddr, ParseNetwork_Empty) -- 2.39.5