aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_addr.c
diff options
context:
space:
mode:
authorNeel Chauhan <neel@neelc.org>2019-03-02 21:25:35 -0500
committerteor <teor@torproject.org>2019-03-08 12:19:12 +1000
commit63b404911441a7691949c475a374569d668a1b32 (patch)
treec61394b4bc9c418317f91834e74b06bedcce5bc7 /src/test/test_addr.c
parent2e74edb53ef9ac417d8424a0785af839f83791ca (diff)
downloadtor-63b404911441a7691949c475a374569d668a1b32.tar.gz
tor-63b404911441a7691949c475a374569d668a1b32.zip
Make tor_addr_is_internal_() RFC6598 (Carrier Grade NAT) aware
Fixes 28525.
Diffstat (limited to 'src/test/test_addr.c')
-rw-r--r--src/test/test_addr.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index be440a0925..5c4b6449cd 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -1063,6 +1063,23 @@ test_addr_make_null(void *data)
tor_free(zeros);
}
+#define TEST_ADDR_INTERNAL(a, for_listening, rv) STMT_BEGIN \
+ tor_addr_t t; \
+ tt_int_op(tor_inet_pton(AF_INET, a, &t.addr.in_addr), OP_EQ, 1); \
+ t.family = AF_INET; \
+ tt_int_op(tor_addr_is_internal(&t, for_listening), OP_EQ, rv); \
+ STMT_END;
+
+static void
+test_addr_rfc6598(void *arg)
+{
+ (void)arg;
+ TEST_ADDR_INTERNAL("100.64.0.1", 0, 1);
+ TEST_ADDR_INTERNAL("100.64.0.1", 1, 0);
+ done:
+ ;
+}
+
#define ADDR_LEGACY(name) \
{ #name, test_addr_ ## name , 0, NULL, NULL }
@@ -1076,6 +1093,7 @@ struct testcase_t addr_tests[] = {
{ "sockaddr_to_str", test_addr_sockaddr_to_str, 0, NULL, NULL },
{ "is_loopback", test_addr_is_loopback, 0, NULL, NULL },
{ "make_null", test_addr_make_null, 0, NULL, NULL },
+ { "rfc6598", test_addr_rfc6598, 0, NULL, NULL },
END_OF_TESTCASES
};