diff options
Diffstat (limited to 'src/tests/test-general.c')
| -rw-r--r-- | src/tests/test-general.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/tests/test-general.c b/src/tests/test-general.c index a45357e8..f714deec 100644 --- a/src/tests/test-general.c +++ b/src/tests/test-general.c @@ -1361,6 +1361,124 @@ test_duplicate_decl_specifier (void) v_result[0] = TEST_MAX (v_const[0], nmtst_get_rand_int () % 5) + v2; } +static void +test_reverse_dns_ip4 (void) +{ + guint32 addr; + GPtrArray *domains = g_ptr_array_new_full (8, g_free); + + inet_pton (AF_INET, "7.2.3.0", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 27, domains); + g_assert_cmpuint (domains->len, ==, 32); + g_assert_cmpstr (domains->pdata[0], ==, "0.3.2.7.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[31], ==, "31.3.2.7.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "10.155.16.0", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 22, domains); + g_assert_cmpuint (domains->len, ==, 4); + g_assert_cmpstr (domains->pdata[0], ==, "16.155.10.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "17.155.10.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[2], ==, "18.155.10.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[3], ==, "19.155.10.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "4.5.6.7", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 32, domains); + g_assert_cmpuint (domains->len, ==, 1); + g_assert_cmpstr (domains->pdata[0], ==, "7.6.5.4.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "4.5.6.7", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 8, domains); + g_assert_cmpuint (domains->len, ==, 1); + g_assert_cmpstr (domains->pdata[0], ==, "4.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "4.180.6.7", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 9, domains); + g_assert_cmpuint (domains->len, ==, 128); + g_assert_cmpstr (domains->pdata[0], ==, "128.4.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "129.4.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[127], ==, "255.4.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "172.16.0.0", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 12, domains); + g_assert_cmpuint (domains->len, ==, 16); + g_assert_cmpstr (domains->pdata[0], ==, "16.172.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "17.172.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[14], ==, "30.172.in-addr.arpa"); + g_assert_cmpstr (domains->pdata[15], ==, "31.172.in-addr.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET, "1.2.3.4", &addr); + nm_utils_get_reverse_dns_domains_ip4 (addr, 0, domains); + g_assert_cmpuint (domains->len, ==, 0); + + g_ptr_array_unref (domains); +} + +static void +test_reverse_dns_ip6 (void) +{ + struct in6_addr addr; + GPtrArray *domains = g_ptr_array_new_full (8, g_free); + + inet_pton (AF_INET6, "1234::56", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 16, domains); + g_assert_cmpuint (domains->len, ==, 1); + g_assert_cmpstr (domains->pdata[0], ==, "4.3.2.1.ip6.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET6, "1234::56", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 17, domains); + g_assert_cmpuint (domains->len, ==, 8); + g_assert_cmpstr (domains->pdata[0], ==, "0.4.3.2.1.ip6.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "1.4.3.2.1.ip6.arpa"); + g_assert_cmpstr (domains->pdata[7], ==, "7.4.3.2.1.ip6.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET6, "2001:db8::", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 29, domains); + g_assert_cmpuint (domains->len, ==, 8); + g_assert_cmpstr (domains->pdata[0], ==, "8.b.d.0.1.0.0.2.ip6.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "9.b.d.0.1.0.0.2.ip6.arpa"); + g_assert_cmpstr (domains->pdata[7], ==, "f.b.d.0.1.0.0.2.ip6.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET6, "0123:4567:89ab:cdef::", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 63, domains); + g_assert_cmpuint (domains->len, ==, 2); + g_assert_cmpstr (domains->pdata[0], ==, "e.e.d.c.b.a.9.8.7.6.5.4.3.2.1.0.ip6.arpa"); + g_assert_cmpstr (domains->pdata[1], ==, "f.e.d.c.b.a.9.8.7.6.5.4.3.2.1.0.ip6.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET6, "fec0:1234:5678:9ab0::", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 61, domains); + g_assert_cmpuint (domains->len, ==, 8); + g_assert_cmpstr (domains->pdata[0], ==, "0.b.a.9.8.7.6.5.4.3.2.1.0.c.e.f.ip6.arpa"); + g_assert_cmpstr (domains->pdata[7], ==, "7.b.a.9.8.7.6.5.4.3.2.1.0.c.e.f.ip6.arpa"); + + g_ptr_array_set_size (domains, 0); + + inet_pton (AF_INET6, "0123:4567:89ab:cdee::", &addr); + nm_utils_get_reverse_dns_domains_ip6 (&addr, 0, domains); + g_assert_cmpuint (domains->len, ==, 0); + + g_ptr_array_unref (domains); +} + /*****************************************************************************/ NMTST_DEFINE (); @@ -1397,6 +1515,9 @@ main (int argc, char **argv) g_test_add_func ("/general/nm_match_spec_match_config", test_nm_match_spec_match_config); g_test_add_func ("/general/duplicate_decl_specifier", test_duplicate_decl_specifier); + g_test_add_func ("/general/reverse_dns/ip4", test_reverse_dns_ip4); + g_test_add_func ("/general/reverse_dns/ip6", test_reverse_dns_ip6); + return g_test_run (); } |