diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/Makefile.am | 4 | ||||
| -rw-r--r-- | tests/check_ipaddrcheck.c | 21 | ||||
| -rwxr-xr-x | tests/integration_tests.sh | 54 |
3 files changed, 66 insertions, 13 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 5c0a09a..f7b824a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,3 +1,5 @@ +AM_CPPFLAGS = $(PCRE2_CFLAGS) + TESTS = check_ipaddrcheck integration_tests.sh TESTS_ENVIRONMENT = top_srcdir=$(top_srcdir) PATH=.:$(top_srcdir)/src:$$PATH @@ -5,4 +7,4 @@ TESTS_ENVIRONMENT = top_srcdir=$(top_srcdir) PATH=.:$(top_srcdir)/src:$$PATH check_PROGRAMS = check_ipaddrcheck check_ipaddrcheck_SOURCES = check_ipaddrcheck.c ../src/ipaddrcheck_functions.c check_ipaddrcheck_CFLAGS = @CHECK_CFLAGS@ -check_ipaddrcheck_LDADD = -lcidr -lpcre @CHECK_LIBS@ +check_ipaddrcheck_LDADD = -lcidr $(PCRE2_LIBS) @CHECK_LIBS@ diff --git a/tests/check_ipaddrcheck.c b/tests/check_ipaddrcheck.c index ebae1e1..fe3876c 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 @@ -408,6 +408,7 @@ START_TEST (test_is_ipv4_range) 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); + ck_assert_int_eq(is_ipv4_range("192.0.2.0-1.8.2.1", 0, 1), RESULT_FAILURE); } END_TEST diff --git a/tests/integration_tests.sh b/tests/integration_tests.sh index 3a1e4ea..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 @@ -56,6 +56,29 @@ ipv4_range_negative=( 192.0.2.-192.0.2.100 192.0.2.0- 192.0.2.200-192.0.2.100 + 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=( @@ -66,6 +89,8 @@ ipv6_range_negative=( 2001:db8:xx-2001:db8::99 2001:db:- 2001:db8::99-2001:db8::1 + 2001::db8::1:1-2001::db8::1::10 + 2001:db8:pqrs::1-2001:db8:uvwx::100 ) ipv6_single_positive=( @@ -108,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" @@ -269,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 \ |
