#include <net/if.h>
#endif
+using namespace std;
+
static void ipv4(struct sockaddr_in *addr, const char *s) {
int err;
struct sockaddr_in a_three;
one.ifa_next = &two;
+ one.ifa_flags &= ~IFF_UP;
one.ifa_addr = (struct sockaddr*)&a_one;
one.ifa_name = lo;
find_ip_in_subnet_list(nullptr, (struct ifaddrs*)&one,
CEPH_PICK_ADDRESS_IPV4 | CEPH_PICK_ADDRESS_IPV6,
"", "");
- ASSERT_EQ((struct sockaddr*)&a_three, result);
+ ASSERT_EQ(three.ifa_addr, result);
// the subnet criteria leaves us no choice but the UP loopback address
result =
find_ip_in_subnet_list(nullptr, (struct ifaddrs*)&one,
CEPH_PICK_ADDRESS_IPV4 | CEPH_PICK_ADDRESS_IPV6,
"127.0.0.0/8", "");
- ASSERT_EQ((struct sockaddr*)&a_two, result);
+ ASSERT_EQ(two.ifa_addr, result);
}
TEST(CommonIPAddr, TestV6_Simple)
struct sockaddr_in6 a_three;
one.ifa_next = &two;
+ one.ifa_flags &= ~IFF_UP;
ipv6(&a_one, "::1");
one.ifa_addr = (struct sockaddr*)&a_one;
one.ifa_name = lo;
find_ip_in_subnet_list(nullptr, (struct ifaddrs*)&one,
CEPH_PICK_ADDRESS_IPV4 | CEPH_PICK_ADDRESS_IPV6,
"", "");
- ASSERT_EQ((struct sockaddr*)&a_three, result);
+ ASSERT_EQ(three.ifa_addr, result);
// the subnet criteria leaves us no choice but the UP loopback address
result =
find_ip_in_subnet_list(nullptr, (struct ifaddrs*)&one,
CEPH_PICK_ADDRESS_IPV4 | CEPH_PICK_ADDRESS_IPV6,
"::1/128", "");
- ASSERT_EQ((struct sockaddr*)&a_two, result);
+ ASSERT_EQ(two.ifa_addr, result);
}
TEST(CommonIPAddr, ParseNetwork_Empty)
CEPH_PICK_ADDRESS_IPV4,
"10.1.0.0/16",
"eth0");
- ASSERT_EQ((struct sockaddr*)&a_one, result);
+ ASSERT_EQ(one.ifa_addr, result);
result = find_ip_in_subnet_list(
cct.get(),
CEPH_PICK_ADDRESS_IPV4,
"10.2.0.0/16",
"eth1");
- ASSERT_EQ((struct sockaddr*)&a_two, result);
+ ASSERT_EQ(two.ifa_addr, result);
// match by eth name
result = find_ip_in_subnet_list(
CEPH_PICK_ADDRESS_IPV4,
"10.0.0.0/8",
"eth0");
- ASSERT_EQ((struct sockaddr*)&a_one, result);
+ ASSERT_EQ(one.ifa_addr, result);
result = find_ip_in_subnet_list(
cct.get(),
CEPH_PICK_ADDRESS_IPV4,
"10.0.0.0/8",
"eth1");
- ASSERT_EQ((struct sockaddr*)&a_two, result);
+ ASSERT_EQ(two.ifa_addr, result);
result = find_ip_in_subnet_list(
cct.get(),
CEPH_PICK_ADDRESS_IPV6,
"2001::/16",
"eth1");
- ASSERT_EQ((struct sockaddr*)&a_three, result);
+ ASSERT_EQ(three.ifa_addr, result);
}
TEST(pick_address, filtering)
CEPH_PICK_ADDRESS_IPV4 |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v1:0.0.0.0:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV6 |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v1:[::]:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV4 |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v1:10.2.1.123:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV4 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v2:10.2.1.123:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV4 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v2:10.2.1.123:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV4 |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v1:10.1.1.2:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV6 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(1u, av.v.size());
ASSERT_EQ(string("v2:[2001:1234:5678:90ab::cdef]:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_IPV6 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(2u, av.v.size());
ASSERT_EQ(string("v2:[2001:1234:5678:90ab::cdef]:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_MSGR1 |
CEPH_PICK_ADDRESS_PREFER_IPV4,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(2u, av.v.size());
ASSERT_EQ(string("v1:10.2.1.123:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_MSGR1 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(2u, av.v.size());
ASSERT_EQ(string("v2:[2001:1234:5678:90ab::cdef]:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_MSGR1 |
CEPH_PICK_ADDRESS_MSGR2,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(0, r);
ASSERT_EQ(2u, av.v.size());
ASSERT_EQ(string("v2:0.0.0.0:0/0"), stringify(av.v[0]));
CEPH_PICK_ADDRESS_PUBLIC |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(-1, r);
}
}
CEPH_PICK_ADDRESS_PUBLIC |
CEPH_PICK_ADDRESS_MSGR1,
&one, &av);
- cout << av << std::endl;
ASSERT_EQ(-1, r);
}
}