mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-22 18:19:42 +00:00
IPv6 case to isc_netaddr_masktoprefixlen tests
Unit test for isc_netaddr_masktoprefixlen were missing IPv6 mask cases. Add those and few other IPv4 cases. Also, the test is refactored in order to make it easy to add new cases.
This commit is contained in:
parent
f7161a263a
commit
ad2c3fa4f7
@ -58,43 +58,52 @@ ISC_RUN_TEST_IMPL(netaddr_isnetzero) {
|
||||
|
||||
/* test isc_netaddr_masktoprefixlen() calculates correct prefix lengths */
|
||||
ISC_RUN_TEST_IMPL(netaddr_masktoprefixlen) {
|
||||
struct in_addr na_a;
|
||||
struct in_addr na_b;
|
||||
struct in_addr na_c;
|
||||
struct in_addr na_d;
|
||||
isc_netaddr_t ina_a;
|
||||
isc_netaddr_t ina_b;
|
||||
isc_netaddr_t ina_c;
|
||||
isc_netaddr_t ina_d;
|
||||
struct {
|
||||
int family;
|
||||
const char *addr;
|
||||
unsigned int len;
|
||||
} tests[] = { { AF_INET, "0.0.0.0", 0 },
|
||||
{ AF_INET, "255.255.255.254", 31 },
|
||||
{ AF_INET, "255.255.255.255", 32 },
|
||||
{ AF_INET, "255.255.255.0", 24 },
|
||||
{ AF_INET, "255.128.0.0", 9 },
|
||||
{ AF_INET, "255.192.0.0", 10 },
|
||||
{ AF_INET6, "ffff::", 16 },
|
||||
{ AF_INET6, "ffff:ffff::", 32 },
|
||||
{ AF_INET6, "ffff:ffff:ffff::", 48 },
|
||||
{ AF_INET6, "ffff:ffff:ffff:ffff::", 64 },
|
||||
{ AF_INET6, "ffff:ffff:ffff:ffff:ffff::", 80 } };
|
||||
|
||||
for (size_t i = 0; i < ARRAY_SIZE(tests); i++) {
|
||||
isc_netaddr_t ina;
|
||||
unsigned int plen;
|
||||
isc_result_t result;
|
||||
|
||||
UNUSED(state);
|
||||
switch (tests[i].family) {
|
||||
case AF_INET: {
|
||||
struct in_addr na;
|
||||
|
||||
assert_true(inet_pton(AF_INET, "0.0.0.0", &na_a) >= 0);
|
||||
assert_true(inet_pton(AF_INET, "255.255.255.254", &na_b) >= 0);
|
||||
assert_true(inet_pton(AF_INET, "255.255.255.255", &na_c) >= 0);
|
||||
assert_true(inet_pton(AF_INET, "255.255.255.0", &na_d) >= 0);
|
||||
assert_true(inet_pton(AF_INET, tests[i].addr, &na) >=
|
||||
0);
|
||||
isc_netaddr_fromin(&ina, &na);
|
||||
break;
|
||||
}
|
||||
case AF_INET6: {
|
||||
struct in6_addr na6;
|
||||
|
||||
isc_netaddr_fromin(&ina_a, &na_a);
|
||||
isc_netaddr_fromin(&ina_b, &na_b);
|
||||
isc_netaddr_fromin(&ina_c, &na_c);
|
||||
isc_netaddr_fromin(&ina_d, &na_d);
|
||||
assert_true(inet_pton(AF_INET6, tests[i].addr, &na6) >=
|
||||
0);
|
||||
isc_netaddr_fromin6(&ina, &na6);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert_true(false);
|
||||
}
|
||||
|
||||
assert_int_equal(isc_netaddr_masktoprefixlen(&ina_a, &plen),
|
||||
ISC_R_SUCCESS);
|
||||
assert_int_equal(plen, 0);
|
||||
|
||||
assert_int_equal(isc_netaddr_masktoprefixlen(&ina_b, &plen),
|
||||
ISC_R_SUCCESS);
|
||||
assert_int_equal(plen, 31);
|
||||
|
||||
assert_int_equal(isc_netaddr_masktoprefixlen(&ina_c, &plen),
|
||||
ISC_R_SUCCESS);
|
||||
assert_int_equal(plen, 32);
|
||||
|
||||
assert_int_equal(isc_netaddr_masktoprefixlen(&ina_d, &plen),
|
||||
ISC_R_SUCCESS);
|
||||
assert_int_equal(plen, 24);
|
||||
result = isc_netaddr_masktoprefixlen(&ina, &plen);
|
||||
assert_int_equal(result, ISC_R_SUCCESS);
|
||||
assert_int_equal(plen, tests[i].len);
|
||||
}
|
||||
}
|
||||
|
||||
/* check multicast addresses are detected properly */
|
||||
|
Loading…
x
Reference in New Issue
Block a user