X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=test%2Funit%2Ftest_netutl.c;fp=test%2Funit%2Ftest_netutl.c;h=32bb6283ef6f06ed4f3f2f16bcdfcc80de62feda;hp=a3486fcd8fbba376b48e3013cf177deb289b0965;hb=ce4d55b72fd4290d4710f10e755f6dd9ed039d88;hpb=021293e0d03de8d29b22104a8f9bef625b135640 diff --git a/test/unit/test_netutl.c b/test/unit/test_netutl.c index a3486fcd..32bb6283 100644 --- a/test/unit/test_netutl.c +++ b/test/unit/test_netutl.c @@ -19,10 +19,60 @@ static void test_service_to_port_valid(void **state) { assert_int_equal(1234, service_to_port("1234")); } +static void test_is_local_connection_ipv4(void **state) { + (void)state; + + sockaddr_t sa; + + assert_true(inet_pton(AF_INET, "127.0.0.0", &sa.in.sin_addr)); + sa.sa.sa_family = AF_INET; + assert_true(is_local_connection(&sa)); + + assert_true(inet_pton(AF_INET, "127.42.13.5", &sa.in.sin_addr)); + sa.sa.sa_family = AF_INET; + assert_true(is_local_connection(&sa)); + + assert_true(inet_pton(AF_INET, "127.255.255.255", &sa.in.sin_addr)); + sa.sa.sa_family = AF_INET; + assert_true(is_local_connection(&sa)); + + assert_true(inet_pton(AF_INET, "128.0.0.1", &sa.in.sin_addr)); + sa.sa.sa_family = AF_INET; + assert_false(is_local_connection(&sa)); +} + +static void test_is_local_connection_ipv6(void **state) { + (void)state; + + sockaddr_t sa; + + assert_true(inet_pton(AF_INET6, "::1", &sa.in6.sin6_addr)); + sa.sa.sa_family = AF_INET6; + assert_true(is_local_connection(&sa)); + + assert_true(inet_pton(AF_INET6, "::1:1", &sa.in6.sin6_addr)); + sa.sa.sa_family = AF_INET6; + assert_false(is_local_connection(&sa)); + + assert_true(inet_pton(AF_INET6, "fe80::", &sa.in6.sin6_addr)); + sa.sa.sa_family = AF_INET6; + assert_false(is_local_connection(&sa)); +} + +static void test_is_local_connection_unix(void **state) { + (void)state; + + sockaddr_t sa = {.sa.sa_family = AF_UNIX}; + assert_true(is_local_connection(&sa)); +} + int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(test_service_to_port_invalid), cmocka_unit_test(test_service_to_port_valid), + cmocka_unit_test(test_is_local_connection_ipv4), + cmocka_unit_test(test_is_local_connection_ipv6), + cmocka_unit_test(test_is_local_connection_unix), }; return cmocka_run_group_tests(tests, NULL, NULL); }