From f950bf4362dc4c5a22c3d947a29cbc8db01c366b Mon Sep 17 00:00:00 2001 From: goldsimon Date: Wed, 30 Sep 2015 14:06:44 +0200 Subject: [PATCH] ipaddr_aton(): favour ':' over '.' to decide for IPv6 first (since IPv6 mapped IPv4 addresses might contain both ':' and '.') --- src/core/ipv6/ip6_addr.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/ipv6/ip6_addr.c b/src/core/ipv6/ip6_addr.c index 1717e481..fd754cc4 100644 --- a/src/core/ipv6/ip6_addr.c +++ b/src/core/ipv6/ip6_addr.c @@ -293,18 +293,18 @@ ipaddr_aton(const char *cp, ip_addr_t *addr) if (cp != NULL) { const char* c; for (c = cp; *c != 0; c++) { - if (*c == '.') { - /* contains a dot: IPv4 address */ - if (addr) { - IP_SET_TYPE_VAL(*addr, IPADDR_TYPE_V4); - } - return ip4addr_aton(cp, ip_2_ip4(addr)); - } else if (*c == ':') { + if (*c == ':') { /* contains a colon: IPv6 address */ if (addr) { IP_SET_TYPE_VAL(*addr, IPADDR_TYPE_V6); } return ip6addr_aton(cp, ip_2_ip6(addr)); + } else if (*c == '.') { + /* contains a dot: IPv4 address */ + if (addr) { + IP_SET_TYPE_VAL(*addr, IPADDR_TYPE_V4); + } + return ip4addr_aton(cp, ip_2_ip4(addr)); } } /* nothing found, call ip4addr_aton as fallback */