diff options
Diffstat (limited to 'tests/ip-utils.c')
-rw-r--r-- | tests/ip-utils.c | 88 |
1 files changed, 47 insertions, 41 deletions
diff --git a/tests/ip-utils.c b/tests/ip-utils.c index 5718953f86..3d05470bc2 100644 --- a/tests/ip-utils.c +++ b/tests/ip-utils.c @@ -32,28 +32,29 @@ #include <gnutls/x509.h> #ifndef _WIN32 -# include <cmocka.h> -# include <sys/socket.h> +#include <cmocka.h> +#include <sys/socket.h> -# define BUILD_IN_TESTS -# include "../lib/x509/ip-in-cidr.h" +#define BUILD_IN_TESTS +#include "../lib/x509/ip-in-cidr.h" -# define _MATCH_FUNC(fname, CIDR, IP, status) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - const char ip[] = IP; \ - char xip[4]; \ - gnutls_datum_t dip = {(unsigned char*)xip, sizeof(xip)}; \ - assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ - assert_int_equal(inet_pton(AF_INET, ip, xip), 1); \ - assert_int_equal(ip_in_cidr(&dip, &dcidr), status); \ - gnutls_free(dcidr.data); \ -} +#define _MATCH_FUNC(fname, CIDR, IP, status) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + const char ip[] = IP; \ + char xip[4]; \ + gnutls_datum_t dip = { (unsigned char *)xip, sizeof(xip) }; \ + assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), \ + 0); \ + assert_int_equal(inet_pton(AF_INET, ip, xip), 1); \ + assert_int_equal(ip_in_cidr(&dip, &dcidr), status); \ + gnutls_free(dcidr.data); \ + } -# define MATCH_FUNC_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 1) -# define MATCH_FUNC_NOT_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 0) +#define MATCH_FUNC_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 1) +#define MATCH_FUNC_NOT_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 0) MATCH_FUNC_OK(check_ip1_match, "192.168.1.0/24", "192.168.1.128"); MATCH_FUNC_OK(check_ip2_match, "192.168.1.0/24", "192.168.1.1"); @@ -69,34 +70,39 @@ MATCH_FUNC_NOT_OK(check_ip5_not_match, "192.168.1.0/28", "192.168.1.64"); MATCH_FUNC_NOT_OK(check_ip6_not_match, "192.168.1.0/24", "10.0.0.0"); MATCH_FUNC_NOT_OK(check_ip7_not_match, "192.168.1.0/24", "192.169.1.0"); -# define CIDR_MATCH(fname, CIDR, EXPECTED) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ - assert_memory_equal(EXPECTED, dcidr.data, dcidr.size); \ - gnutls_free(dcidr.data); \ -} +#define CIDR_MATCH(fname, CIDR, EXPECTED) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), \ + 0); \ + assert_memory_equal(EXPECTED, dcidr.data, dcidr.size); \ + gnutls_free(dcidr.data); \ + } -# define CIDR_FAIL(fname, CIDR) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - assert_int_not_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ -} +#define CIDR_FAIL(fname, CIDR) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + assert_int_not_equal( \ + gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ + } CIDR_MATCH(check_cidr_ok1, "0.0.0.0/32", "\x00\x00\x00\x00\xff\xff\xff\xff"); CIDR_MATCH(check_cidr_ok2, "192.168.1.1/12", "\xc0\xa0\x00\x00\xff\xf0\x00\x00"); CIDR_MATCH(check_cidr_ok3, "192.168.1.1/0", "\x00\x00\x00\x00\x00\x00\x00\x00"); -CIDR_MATCH(check_cidr_ok4, "::/19", - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); -CIDR_MATCH(check_cidr_ok5, "::1/128", - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"); -CIDR_MATCH(check_cidr_ok6, "2001:db8::/48", - "\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); +CIDR_MATCH( + check_cidr_ok4, "::/19", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); +CIDR_MATCH( + check_cidr_ok5, "::1/128", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"); +CIDR_MATCH( + check_cidr_ok6, "2001:db8::/48", + "\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); CIDR_FAIL(check_cidr_fail1, "0.0.0.0/100"); CIDR_FAIL(check_cidr_fail2, "1.2.3.4/-1"); |