]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
e9140aff | 2 | |
ca78ad1d ZJS |
3 | #include <stdio.h> |
4 | ||
cf0fbc49 | 5 | #include "af-list.h" |
b5efdb8a | 6 | #include "alloc-util.h" |
e9140aff LP |
7 | #include "in-addr-util.h" |
8 | #include "local-addresses.h" | |
6d7c4033 | 9 | #include "tests.h" |
e9140aff LP |
10 | |
11 | static void print_local_addresses(struct local_address *a, unsigned n) { | |
12 | unsigned i; | |
13 | ||
14 | for (i = 0; i < n; i++) { | |
15 | _cleanup_free_ char *b = NULL; | |
16 | ||
17 | assert_se(in_addr_to_string(a[i].family, &a[i].address, &b) >= 0); | |
922a6530 | 18 | 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); |
e9140aff LP |
19 | } |
20 | } | |
21 | ||
4f7452a8 | 22 | TEST(local_addresses) { |
922a6530 YW |
23 | struct local_address *a = NULL; |
24 | int n, n_ipv4, n_ipv6; | |
e9140aff | 25 | |
922a6530 YW |
26 | n = local_addresses(NULL, 0, AF_INET, &a); |
27 | assert_se(n >= 0); | |
28 | log_debug("/* Local Addresses(ifindex:0, AF_INET) */"); | |
29 | print_local_addresses(a, (unsigned) n); | |
30 | a = mfree(a); | |
31 | n_ipv4 = n; | |
32 | ||
33 | n = local_addresses(NULL, 0, AF_INET6, &a); | |
34 | assert_se(n >= 0); | |
35 | log_debug("/* Local Addresses(ifindex:0, AF_INET6) */"); | |
36 | print_local_addresses(a, (unsigned) n); | |
37 | a = mfree(a); | |
38 | n_ipv6 = n; | |
39 | ||
1d050e1e | 40 | n = local_addresses(NULL, 0, AF_UNSPEC, &a); |
e9140aff | 41 | assert_se(n >= 0); |
922a6530 YW |
42 | log_debug("/* Local Addresses(ifindex:0, AF_UNSPEC) */"); |
43 | print_local_addresses(a, (unsigned) n); | |
44 | a = mfree(a); | |
45 | assert_se(n == n_ipv4 + n_ipv6); | |
e9140aff | 46 | |
922a6530 YW |
47 | n = local_addresses(NULL, 1, AF_INET, &a); |
48 | assert_se(n >= 0); | |
49 | log_debug("/* Local Addresses(ifindex:1, AF_INET) */"); | |
e9140aff | 50 | print_local_addresses(a, (unsigned) n); |
97b11eed | 51 | a = mfree(a); |
922a6530 | 52 | n_ipv4 = n; |
e9140aff | 53 | |
922a6530 | 54 | n = local_addresses(NULL, 1, AF_INET6, &a); |
e9140aff | 55 | assert_se(n >= 0); |
922a6530 YW |
56 | log_debug("/* Local Addresses(ifindex:1, AF_INET6) */"); |
57 | print_local_addresses(a, (unsigned) n); | |
58 | a = mfree(a); | |
59 | n_ipv6 = n; | |
e9140aff | 60 | |
922a6530 YW |
61 | n = local_addresses(NULL, 1, AF_UNSPEC, &a); |
62 | assert_se(n >= 0); | |
63 | log_debug("/* Local Addresses(ifindex:1, AF_UNSPEC) */"); | |
e9140aff | 64 | print_local_addresses(a, (unsigned) n); |
922a6530 YW |
65 | a = mfree(a); |
66 | assert_se(n == n_ipv4 + n_ipv6); | |
e9140aff | 67 | |
922a6530 | 68 | n = local_gateways(NULL, 0, AF_UNSPEC, &a); |
54e6f97b | 69 | assert_se(n >= 0); |
922a6530 YW |
70 | log_debug("/* Local Gateways */"); |
71 | print_local_addresses(a, (unsigned) n); | |
72 | a = mfree(a); | |
54e6f97b | 73 | |
922a6530 YW |
74 | n = local_outbounds(NULL, 0, AF_UNSPEC, &a); |
75 | assert_se(n >= 0); | |
76 | log_debug("/* Local Outbounds */"); | |
54e6f97b LP |
77 | print_local_addresses(a, (unsigned) n); |
78 | free(a); | |
e9140aff | 79 | } |
4f7452a8 JJ |
80 | |
81 | DEFINE_TEST_MAIN(LOG_DEBUG); |