aboutsummaryrefslogtreecommitdiffstats
path: root/src/starter/confread.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2006-10-25 08:40:34 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2006-10-25 08:40:34 +0000
commit0e4d1d05ad29ea86f29d94741ec9d7f24fcdf955 (patch)
tree441e862a875fb4219d8c6e24e0c3e7c9ea3da19e /src/starter/confread.c
parentb701b7895b280eb1f6949eb4bc9a45b89e6e9976 (diff)
downloadstrongswan-0e4d1d05ad29ea86f29d94741ec9d7f24fcdf955.tar.bz2
strongswan-0e4d1d05ad29ea86f29d94741ec9d7f24fcdf955.tar.xz
added 'modeconfig=pull|push' and 'left|rightnatip' keywords
Diffstat (limited to 'src/starter/confread.c')
-rw-r--r--src/starter/confread.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/starter/confread.c b/src/starter/confread.c
index 2389154ec..93b8beeb3 100644
--- a/src/starter/confread.c
+++ b/src/starter/confread.c
@@ -247,6 +247,11 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
end->has_port_wildcard = has_port_wildcard;
break;
case KW_SOURCEIP:
+ if (end->has_natip)
+ {
+ plog("# natip and sourceip cannot be defined at the same time");
+ goto err;
+ }
if (streq(value, "%modeconfig") || streq(value, "%modecfg"))
{
end->modecfg = TRUE;
@@ -264,6 +269,22 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
}
conn->policy |= POLICY_TUNNEL;
break;
+ case KW_NATIP:
+ if (end->has_srcip)
+ {
+ plog("# natip and sourceip cannot be defined at the same time");
+ goto err;
+ }
+ conn->tunnel_addr_family = ip_version(value);
+ ugh = ttoaddr(value, 0, conn->tunnel_addr_family, &end->srcip);
+ if (ugh != NULL)
+ {
+ plog("# bad addr: %s=%s [%s]", name, value, ugh);
+ goto err;
+ }
+ end->has_natip = TRUE;
+ conn->policy |= POLICY_TUNNEL;
+ break;
default:
break;
}
@@ -422,6 +443,9 @@ load_conn(starter_conn_t *conn, kw_list_t *kw, starter_config_t *cfg)
case KW_REKEY:
KW_POLICY_FLAG("no", "yes", POLICY_DONT_REKEY)
break;
+ case KW_MODECONFIG:
+ KW_POLICY_FLAG("push", "pull", POLICY_MODECFG_PUSH)
+ break;
default:
break;
}