From 23e0eda853a9bfa42a2fa0d50b31eea874a01a9c Mon Sep 17 00:00:00 2001 From: Daniil Baturin Date: Thu, 4 Jan 2024 13:38:37 -0500 Subject: Add --range-prefix-length option to require the range boundaries to lie within the same subnet of a given size --- tests/check_ipaddrcheck.c | 26 ++++++++++++++++++++------ tests/integration_tests.sh | 6 ++++++ 2 files changed, 26 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/check_ipaddrcheck.c b/tests/check_ipaddrcheck.c index 3b260c2..ebae1e1 100644 --- a/tests/check_ipaddrcheck.c +++ b/tests/check_ipaddrcheck.c @@ -405,17 +405,31 @@ END_TEST START_TEST (test_is_ipv4_range) { - ck_assert_int_eq(is_ipv4_range("192.0.2.0-192.0.2.10", 0), RESULT_SUCCESS); - ck_assert_int_eq(is_ipv4_range("192.0.2.-", 0), RESULT_FAILURE); - ck_assert_int_eq(is_ipv4_range("192.0.2.99-192.0.2.11", 0), RESULT_FAILURE); + ck_assert_int_eq(is_ipv4_range("192.0.2.0-192.0.2.10", 0, 1), RESULT_SUCCESS); + ck_assert_int_eq(is_ipv4_range("192.0.2.-", 0, 1), RESULT_FAILURE); + ck_assert_int_eq(is_ipv4_range("192.0.2.99-192.0.2.11", 0, 1), RESULT_FAILURE); +} +END_TEST + +START_TEST (test_is_ipv4_range_prefix) +{ + ck_assert_int_eq(is_ipv4_range("192.0.2.0-192.0.2.10", 24, 1), RESULT_SUCCESS); + ck_assert_int_eq(is_ipv4_range("10.0.1.1-10.0.2.1", 24, 1), RESULT_FAILURE); } END_TEST START_TEST (test_is_ipv6_range) { - ck_assert_int_eq(is_ipv6_range("2001:db8::1-2001:db8::20", 0), RESULT_SUCCESS); - ck_assert_int_eq(is_ipv6_range("2001:-", 0), RESULT_FAILURE); - ck_assert_int_eq(is_ipv6_range("2001:db8::99-2001:db8:1", 0), RESULT_FAILURE); + ck_assert_int_eq(is_ipv6_range("2001:db8::1-2001:db8::20", 0, 1), RESULT_SUCCESS); + ck_assert_int_eq(is_ipv6_range("2001:-", 0, 1), RESULT_FAILURE); + ck_assert_int_eq(is_ipv6_range("2001:db8::99-2001:db8:1", 0, 1), RESULT_FAILURE); +} +END_TEST + +START_TEST (test_is_ipv6_range_prefix) +{ + ck_assert_int_eq(is_ipv6_range("2001:db8::1-2001:db8::20", 64, 1), RESULT_SUCCESS); + ck_assert_int_eq(is_ipv6_range("2001:db8:aaaa::1-2001:db8:bbbb::1", 64, 1), RESULT_FAILURE); } END_TEST diff --git a/tests/integration_tests.sh b/tests/integration_tests.sh index 8264960..3a1e4ea 100755 --- a/tests/integration_tests.sh +++ b/tests/integration_tests.sh @@ -284,6 +284,9 @@ do assert_raises "$IPADDRCHECK --is-ipv4-range $range" 1 done +assert_raises "$IPADDRCHECK --range-prefix-length 24 --is-ipv4-range 10.0.0.1-10.0.0.10" 0 +assert_raises "$IPADDRCHECK --range-prefix-length 29 --is-ipv4-range 10.0.0.1-10.0.0.10" 1 + # --is-ipv6-range for range in \ ${ipv6_range_positive[*]} @@ -297,4 +300,7 @@ do assert_raises "$IPADDRCHECK --is-ipv6-range $range" 1 done +assert_raises "$IPADDRCHECK --range-prefix-length 64 --is-ipv6-range 2001:db8::1-2001:db8::100" 0 +assert_raises "$IPADDRCHECK --range-prefix-length 64 --is-ipv6-range 2001:db8:aaaa::1-2001:db8:bbbb::1" 1 + assert_end ipaddrcheck_integration -- cgit v1.2.3