]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add testcases of filtering on dumping addresses 19716/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 24 May 2021 23:15:36 +0000 (08:15 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 24 May 2021 23:26:00 +0000 (08:26 +0900)
src/test/test-local-addresses.c

index 7b75132e1826febc9b5874993362c45ebc5e2a9d..1063aeb7e1cdc0b423ac6b61de10c53fe713be24 100644 (file)
@@ -15,35 +15,67 @@ static void print_local_addresses(struct local_address *a, unsigned n) {
                 _cleanup_free_ char *b = NULL;
 
                 assert_se(in_addr_to_string(a[i].family, &a[i].address, &b) >= 0);
-                printf("%s if%i scope=%i metric=%u address=%s\n", af_to_name(a[i].family), a[i].ifindex, a[i].scope, a[i].metric, b);
+                log_debug("%s if%i scope=%i metric=%u address=%s", af_to_name(a[i].family), a[i].ifindex, a[i].scope, a[i].metric, b);
         }
 }
 
 int main(int argc, char *argv[]) {
-        struct local_address *a;
-        int n;
+        struct local_address *a = NULL;
+        int n, n_ipv4, n_ipv6;
 
         test_setup_logging(LOG_DEBUG);
 
-        a = NULL;
+        n = local_addresses(NULL, 0, AF_INET, &a);
+        assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:0, AF_INET) */");
+        print_local_addresses(a, (unsigned) n);
+        a = mfree(a);
+        n_ipv4 = n;
+
+        n = local_addresses(NULL, 0, AF_INET6, &a);
+        assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:0, AF_INET6) */");
+        print_local_addresses(a, (unsigned) n);
+        a = mfree(a);
+        n_ipv6 = n;
+
         n = local_addresses(NULL, 0, AF_UNSPEC, &a);
         assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:0, AF_UNSPEC) */");
+        print_local_addresses(a, (unsigned) n);
+        a = mfree(a);
+        assert_se(n == n_ipv4 + n_ipv6);
 
-        printf("Local Addresses:\n");
+        n = local_addresses(NULL, 1, AF_INET, &a);
+        assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:1, AF_INET) */");
         print_local_addresses(a, (unsigned) n);
         a = mfree(a);
+        n_ipv4 = n;
 
-        n = local_gateways(NULL, 0, AF_UNSPEC, &a);
+        n = local_addresses(NULL, 1, AF_INET6, &a);
         assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:1, AF_INET6) */");
+        print_local_addresses(a, (unsigned) n);
+        a = mfree(a);
+        n_ipv6 = n;
 
-        printf("Local Gateways:\n");
+        n = local_addresses(NULL, 1, AF_UNSPEC, &a);
+        assert_se(n >= 0);
+        log_debug("/* Local Addresses(ifindex:1, AF_UNSPEC) */");
         print_local_addresses(a, (unsigned) n);
-        free(a);
+        a = mfree(a);
+        assert_se(n == n_ipv4 + n_ipv6);
 
-        n = local_outbounds(NULL, 0, AF_UNSPEC, &a);
+        n = local_gateways(NULL, 0, AF_UNSPEC, &a);
         assert_se(n >= 0);
+        log_debug("/* Local Gateways */");
+        print_local_addresses(a, (unsigned) n);
+        a = mfree(a);
 
-        printf("Local Outbounds:\n");
+        n = local_outbounds(NULL, 0, AF_UNSPEC, &a);
+        assert_se(n >= 0);
+        log_debug("/* Local Outbounds */");
         print_local_addresses(a, (unsigned) n);
         free(a);