From: Martin Willi Date: Mon, 12 Nov 2012 14:58:39 +0000 (+0100) Subject: Consolidated %any(6) host_t parsing X-Git-Tag: 5.0.2dr4~141 X-Git-Url: https://git.strongswan.org/?p=strongswan.git;a=commitdiff_plain;h=7277e4719e28df4ed3d03d9a7d000f9fc35ed1b6 Consolidated %any(6) host_t parsing --- diff --git a/src/libstrongswan/networking/host.c b/src/libstrongswan/networking/host.c index 3270f0c..ef5c7c0 100644 --- a/src/libstrongswan/networking/host.c +++ b/src/libstrongswan/networking/host.c @@ -367,13 +367,19 @@ host_t *host_create_from_string_and_family(char *string, int family, struct sockaddr_in6 v6; } addr; - if ((family == AF_UNSPEC || family == AF_INET) && streq(string, "%any")) + if (family == AF_UNSPEC || family == AF_INET) { - return host_create_any_port(AF_INET, port); + if (streq(string, "%any") || streq(string, "0.0.0.0")) + { + return host_create_any_port(AF_INET, port); + } } - if ((family == AF_UNSPEC || family == AF_INET6) && streq(string, "%any6")) + if (family == AF_UNSPEC || family == AF_INET6) { - return host_create_any_port(AF_INET6, port); + if (streq(string, "%any6") || streq(string, "::")) + { + return host_create_any_port(AF_INET6, port); + } } switch (family) { @@ -392,6 +398,10 @@ host_t *host_create_from_string_and_family(char *string, int family, addr.sockaddr.sa_family = AF_INET6; return host_create_from_sockaddr(&addr.sockaddr); case AF_INET: + if (strchr(string, ':')) + { /* do not try to convert v6 addresses for v4 family */ + return NULL; + } af_inet: if (inet_pton(AF_INET, string, &addr.v4.sin_addr) != 1) { diff --git a/src/libstrongswan/networking/host_resolver.c b/src/libstrongswan/networking/host_resolver.c index 71aa0b1..5e244f1 100644 --- a/src/libstrongswan/networking/host_resolver.c +++ b/src/libstrongswan/networking/host_resolver.c @@ -234,14 +234,6 @@ METHOD(host_resolver_t, resolve, host_t*, }; host_t *result; - if (streq(name, "%any") || streq(name, "0.0.0.0")) - { - return host_create_any(family ? family : AF_INET); - } - if (streq(name, "%any6") || streq(name, "::")) - { - return host_create_any(family ? family : AF_INET6); - } if (family == AF_INET && strchr(name, ':')) { /* do not try to convert v6 addresses for v4 family */ return NULL;