summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSimon Goldschmidt <[email protected]>2018-06-12 21:48:32 +0200
committerSimon Goldschmidt <[email protected]>2018-06-12 21:48:32 +0200
commit0c5133d7cf5d5fab0ba3473dc8858ee473dcbc23 (patch)
tree13f8c1566ee5d97adf503f54418b70f8b5faf203 /test
parenteb91fdd86141bc78c142a41994fce0a70ad11230 (diff)
fix ip6addr_aton for non-shortened ipv4 mapped addresses
Diffstat (limited to 'test')
-rw-r--r--test/unit/ip6/test_ip6.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/test/unit/ip6/test_ip6.c b/test/unit/ip6/test_ip6.c
index 7eaa78a6..7e8e0ea2 100644
--- a/test/unit/ip6/test_ip6.c
+++ b/test/unit/ip6/test_ip6.c
@@ -156,46 +156,60 @@ START_TEST(test_ip6_aton_ipv4mapped)
ip_addr_t addr;
ip6_addr_t addr6;
const ip_addr_t addr_expected = IPADDR6_INIT_HOST(0, 0, 0xFFFF, 0xD4CC65D2);
+ const char *full_ipv6_addr = "0:0:0:0:0:FFFF:D4CC:65D2";
+ const char *shortened_ipv6_addr = "::FFFF:D4CC:65D2";
+ const char *full_ipv4_mapped_addr = "0:0:0:0:0:FFFF:212.204.101.210";
+ const char *shortened_ipv4_mapped_addr = "::FFFF:212.204.101.210";
+ const char *bogus_ipv4_mapped_addr = "::FFFF:212.204.101.2101";
LWIP_UNUSED_ARG(_i);
/* check IPv6 representation */
memset(&addr6, 0, sizeof(addr6));
- ret = ip6addr_aton("0:0:0:0:0:FFFF:D4CC:65D2", &addr6);
+ ret = ip6addr_aton(full_ipv6_addr, &addr6);
fail_unless(ret == 1);
fail_unless(memcmp(&addr6, &addr_expected, 16) == 0);
memset(&addr, 0, sizeof(addr));
- ret = ipaddr_aton("0:0:0:0:0:FFFF:D4CC:65D2", &addr);
+ ret = ipaddr_aton(full_ipv6_addr, &addr);
fail_unless(ret == 1);
fail_unless(memcmp(&addr, &addr_expected, 16) == 0);
/* check shortened IPv6 representation */
memset(&addr6, 0, sizeof(addr6));
- ret = ip6addr_aton("::FFFF:D4CC:65D2", &addr6);
+ ret = ip6addr_aton(shortened_ipv6_addr, &addr6);
fail_unless(ret == 1);
fail_unless(memcmp(&addr6, &addr_expected, 16) == 0);
memset(&addr, 0, sizeof(addr));
- ret = ipaddr_aton("::FFFF:D4CC:65D2", &addr);
+ ret = ipaddr_aton(shortened_ipv6_addr, &addr);
+ fail_unless(ret == 1);
+ fail_unless(memcmp(&addr, &addr_expected, 16) == 0);
+
+ /* checked shortened mixed representation */
+ memset(&addr6, 0, sizeof(addr6));
+ ret = ip6addr_aton(shortened_ipv4_mapped_addr, &addr6);
+ fail_unless(ret == 1);
+ fail_unless(memcmp(&addr6, &addr_expected, 16) == 0);
+ memset(&addr, 0, sizeof(addr));
+ ret = ipaddr_aton(shortened_ipv4_mapped_addr, &addr);
fail_unless(ret == 1);
fail_unless(memcmp(&addr, &addr_expected, 16) == 0);
/* checked mixed representation */
memset(&addr6, 0, sizeof(addr6));
- ret = ip6addr_aton("::FFFF:212.204.101.210", &addr6);
+ ret = ip6addr_aton(full_ipv4_mapped_addr, &addr6);
fail_unless(ret == 1);
fail_unless(memcmp(&addr6, &addr_expected, 16) == 0);
memset(&addr, 0, sizeof(addr));
- ret = ipaddr_aton("::FFFF:212.204.101.210", &addr);
+ ret = ipaddr_aton(full_ipv4_mapped_addr, &addr);
fail_unless(ret == 1);
fail_unless(memcmp(&addr, &addr_expected, 16) == 0);
/* checked bogus mixed representation */
memset(&addr6, 0, sizeof(addr6));
- ret = ip6addr_aton("::FFFF:212.204.101.2101", &addr6);
+ ret = ip6addr_aton(bogus_ipv4_mapped_addr, &addr6);
fail_unless(ret == 0);
memset(&addr, 0, sizeof(addr));
- ret = ipaddr_aton("::FFFF:212.204.101.2101", &addr);
+ ret = ipaddr_aton(bogus_ipv4_mapped_addr, &addr);
fail_unless(ret == 0);
-
}
END_TEST