aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-11-12 15:58:39 +0100
committerMartin Willi <martin@revosec.ch>2012-11-29 10:22:52 +0100
commit7277e4719e28df4ed3d03d9a7d000f9fc35ed1b6 (patch)
treed9cf3fc939c166d3ae9525fa4d22b8717fb51275 /src
parent98d0fd25a875cde3fd50b6a8392a4b37203e92bf (diff)
downloadstrongswan-7277e4719e28df4ed3d03d9a7d000f9fc35ed1b6.tar.bz2
strongswan-7277e4719e28df4ed3d03d9a7d000f9fc35ed1b6.tar.xz
Consolidated %any(6) host_t parsing
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/networking/host.c18
-rw-r--r--src/libstrongswan/networking/host_resolver.c8
2 files changed, 14 insertions, 12 deletions
diff --git a/src/libstrongswan/networking/host.c b/src/libstrongswan/networking/host.c
index 3270f0c85..ef5c7c04e 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 71aa0b15f..5e244f114 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;