summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-12-05 17:59:28 +0200
committerGitHub <noreply@github.com>2025-12-05 17:59:28 +0200
commite358b4e345d96a488aa2f53aa93566a75aa6f875 (patch)
treee4366cdc7d5814bdc62bd5841f207b9fd77de7a3 /tests
parentc34294b7a18072c7bd4eaf8ec0f433bb374fad5c (diff)
parent779b5be2a5d096eff2db3313c4ee502a3b593db8 (diff)
downloadipaddrcheck-e358b4e345d96a488aa2f53aa93566a75aa6f875.tar.gz
ipaddrcheck-e358b4e345d96a488aa2f53aa93566a75aa6f875.zip
Merge pull request #19 from dmbaturin/T7973-allow-all-zero-ipv6-hosts
T7973: do not disallow all-zero host part IPv6 host addresses
Diffstat (limited to 'tests')
-rw-r--r--tests/check_ipaddrcheck.c20
-rwxr-xr-xtests/integration_tests.sh51
2 files changed, 59 insertions, 12 deletions
diff --git a/tests/check_ipaddrcheck.c b/tests/check_ipaddrcheck.c
index ebae1e1..c4be8b1 100644
--- a/tests/check_ipaddrcheck.c
+++ b/tests/check_ipaddrcheck.c
@@ -2,7 +2,7 @@
* check_ipaddrcheck.c: ipaddrcheck unit tests
*
* Copyright (C) 2013 Daniil Baturin
- * Copyright (C) 2018-2024 VyOS maintainers and contributors
+ * Copyright (C) 2018-2025 VyOS maintainers and contributors
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 or later as
@@ -289,11 +289,6 @@ START_TEST (test_is_ipv6_host)
CIDR* good_address_cidr = cidr_from_str(good_address_str_cidr);
ck_assert_int_eq(is_ipv6_host(good_address_cidr), RESULT_SUCCESS);
cidr_free(good_address_cidr);
-
- char* bad_address_str = "2001:db8:f::/48";
- CIDR* bad_address = cidr_from_str(bad_address_str);
- ck_assert_int_eq(is_ipv6_host(bad_address), RESULT_FAILURE);
- cidr_free(bad_address);
}
END_TEST
@@ -367,15 +362,20 @@ START_TEST (test_is_any_host)
ck_assert_int_eq(is_any_host(good_address_v6), RESULT_SUCCESS);
cidr_free(good_address_v6);
+ char* good_address_str_v6_all_zero = "2001:db8::/32";
+ CIDR* good_address_v6_all_zero = cidr_from_str(good_address_str_v6_all_zero);
+ ck_assert_int_eq(is_any_host(good_address_v6_all_zero), RESULT_SUCCESS);
+ cidr_free(good_address_v6_all_zero);
+
char* bad_address_str_v4 = "192.0.2.0/24";
CIDR* bad_address_v4 = cidr_from_str(bad_address_str_v4);
ck_assert_int_eq(is_any_host(bad_address_v4), RESULT_FAILURE);
cidr_free(bad_address_v4);
- char* bad_address_str_v6 = "2001:db8::/32";
- CIDR* bad_address_v6 = cidr_from_str(bad_address_str_v6);
- ck_assert_int_eq(is_any_host(bad_address_v6), RESULT_FAILURE);
- cidr_free(bad_address_v6);
+ char* bad_address_str_v6_unspec = "::/0";
+ CIDR* bad_address_v6_unspec = cidr_from_str(bad_address_str_v6_unspec);
+ ck_assert_int_eq(is_any_host(bad_address_v6_unspec), RESULT_FAILURE);
+ cidr_free(bad_address_v6_unspec);
}
END_TEST
diff --git a/tests/integration_tests.sh b/tests/integration_tests.sh
index 2c2c72b..9c937df 100755
--- a/tests/integration_tests.sh
+++ b/tests/integration_tests.sh
@@ -3,7 +3,7 @@
# integration_tests.sh: ipaddrcheck integration tests
#
# Copyright (C) 2013 Daniil Baturin
-# Copyright (C) 2018-2024 VyOS maintainers and contributors
+# Copyright (C) 2018-2025 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -59,6 +59,28 @@ ipv4_range_negative=(
192.0.2.1-192.0.2.500
)
+ipv4_interface_address_positive=(
+ 192.0.2.1/24
+ 192.168.1.0/23
+)
+
+ipv4_interface_address_negative=(
+ 192.0.2.0/24 # Network address
+ 192.0.2.255/24 # Broadcast
+ 224.0.0.1/24 # Multicast
+ 0.0.0.0/0 # Unspecified
+)
+
+ipv6_interface_address_positive=(
+ 2001:db8::1/64
+ 2001:db8::/64
+)
+
+ipv6_interface_address_negative=(
+ ff02::1:2 # Multicast
+ ::/0 # Unspecified
+)
+
ipv6_range_positive=(
2001:db8::1-2001:db8::99
)
@@ -111,10 +133,11 @@ ipv4_host_negative=(
ipv6_host_positive=(
2001:db8:1::1/64
2001:db8:1::1/127
+ 2001:db8:1::/64 # All-zero IPv6 addresses are valid host addresses
)
ipv6_host_negative=(
- 2001:db8::/32
+ ::/0
)
string="garbage"
@@ -272,7 +295,31 @@ done
# --is-ipv6-net
# --is-ipv6-multicast
# --is-ipv6-link-local
+
# --is-valid-intf-address
+for address in \
+ ${ipv4_interface_address_positive[*]}
+do
+ assert_raises "$IPADDRCHECK --is-valid-intf-address $address" 0
+done
+
+for address in \
+ ${ipv4_interface_address_negative[*]}
+do
+ assert_raises "$IPADDRCHECK --is-valid-intf-address $address" 1
+done
+
+for address in \
+ ${ipv6_interface_address_positive[*]}
+do
+ assert_raises "$IPADDRCHECK --is-valid-intf-address $address" 0
+done
+
+for address in \
+ ${ipv6_interface_address_negative[*]}
+do
+ assert_raises "$IPADDRCHECK --is-valid-intf-address $address" 1
+done
# --is-ipv4-range
for range in \