aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2007-12-19 00:49:32 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2007-12-19 00:49:32 +0000
commitaa1a730bfb438d50f5dd801ab9f885ca403c3571 (patch)
treeba0dd7fb896c8cbc272865c43211745093ccb0e3 /src
parente044510e5a7fa94b558f4f44fdc4aa98d9a99a6f (diff)
downloadstrongswan-aa1a730bfb438d50f5dd801ab9f885ca403c3571.tar.bz2
strongswan-aa1a730bfb438d50f5dd801ab9f885ca403c3571.tar.xz
set nexthop default value to 0::0 in IPv6 connections
Diffstat (limited to 'src')
-rw-r--r--src/starter/confread.c2
-rw-r--r--src/starter/starterwhack.c13
2 files changed, 10 insertions, 5 deletions
diff --git a/src/starter/confread.c b/src/starter/confread.c
index 5dfcf93d6..0c188ee2c 100644
--- a/src/starter/confread.c
+++ b/src/starter/confread.c
@@ -173,7 +173,7 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
goto err;
}
}
- else if (streq(value, "%any"))
+ else if (streq(value, "%any") || streq(value, "%any4"))
{
anyaddr(conn->addr_family, &end->addr);
}
diff --git a/src/starter/starterwhack.c b/src/starter/starterwhack.c
index 20dda7ca0..98fcae6ec 100644
--- a/src/starter/starterwhack.c
+++ b/src/starter/starterwhack.c
@@ -148,17 +148,22 @@ connection_name(starter_conn_t *conn)
}
static void
-set_whack_end(whack_end_t *w, starter_end_t *end)
+set_whack_end(whack_end_t *w, starter_end_t *end, sa_family_t family)
{
w->id = end->id;
w->cert = end->cert;
w->ca = end->ca;
w->groups = end->groups;
w->host_addr = end->addr;
- w->host_nexthop = end->nexthop;
w->host_srcip = end->srcip;
w->has_client = end->has_client;
+ if (family == AF_INET6 && isanyaddr(&end->nexthop))
+ {
+ anyaddr(AF_INET6, &end->nexthop);
+ }
+ w->host_nexthop = end->nexthop;
+
if (w->has_client)
w->client = end->subnet;
else
@@ -246,8 +251,8 @@ starter_whack_add_conn(starter_conn_t *conn)
msg.sa_keying_tries = conn->sa_keying_tries;
msg.policy = conn->policy;
- set_whack_end(&msg.left, &conn->left);
- set_whack_end(&msg.right, &conn->right);
+ set_whack_end(&msg.left, &conn->left, conn->addr_family);
+ set_whack_end(&msg.right, &conn->right, conn->addr_family);
msg.esp = conn->esp;
msg.ike = conn->ike;