about summary refs log tree commit diff
path: root/src/tests/test-general.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/test-general.c')
-rw-r--r--src/tests/test-general.c121
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 ();
 }