chiark / gitweb /
networkd: refactor socket activation a bit
[elogind.git] / src / resolve / test-dns-domain.c
index bd53402be89de3757825f449c5ab0b44c0896dfd..ebc8d98fcefc9635f2f6eaf137f9757c2bf74a68 100644 (file)
@@ -20,6 +20,7 @@
  ***/
 
 #include "log.h"
+#include "macro.h"
 #include "resolved-dns-domain.h"
 
 static void test_dns_label_unescape_one(const char *what, const char *expect, size_t buffer_sz, int ret) {
@@ -55,7 +56,7 @@ static void test_dns_label_escape_one(const char *what, size_t l, const char *ex
         int r;
 
         r = dns_label_escape(what, l, &t);
-        assert(r == ret);
+        assert_se(r == ret);
 
         if (r < 0)
                 return;
@@ -159,6 +160,24 @@ static void test_dns_name_single_label(void) {
         assert_se(dns_name_single_label("xx.yy") == false);
 }
 
+static void test_dns_name_reverse_one(const char *address, const char *name) {
+        _cleanup_free_ char *p = NULL;
+        union in_addr_union a, b;
+        int familya, familyb;
+
+        assert_se(in_addr_from_string_auto(address, &familya, &a) >= 0);
+        assert_se(dns_name_reverse(familya, &a, &p) >= 0);
+        assert_se(streq(p, name));
+        assert_se(dns_name_address(p, &familyb, &b) > 0);
+        assert_se(familya == familyb);
+        assert_se(in_addr_equal(familya, &a, &b));
+}
+
+static void test_dns_name_reverse(void) {
+        test_dns_name_reverse_one("47.11.8.15", "15.8.11.47.in-addr.arpa");
+        test_dns_name_reverse_one("fe80::47", "7.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa");
+}
+
 int main(int argc, char *argv[]) {
 
         test_dns_label_unescape();
@@ -168,6 +187,7 @@ int main(int argc, char *argv[]) {
         test_dns_name_endswith();
         test_dns_name_root();
         test_dns_name_single_label();
+        test_dns_name_reverse();
 
         return 0;
 }