aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-04-16 11:55:07 +0200
committerTobias Brunner <tobias@strongswan.org>2012-04-16 14:09:51 +0200
commit7fd6c078b67ee4e5061379599b6a814bba22b8c6 (patch)
tree46653441661d7d4e0366e4ac0342f49d4ac82016 /src
parentb241a374117f32be724d3f6ad13cf4b7d42445b4 (diff)
downloadstrongswan-7fd6c078b67ee4e5061379599b6a814bba22b8c6.tar.bz2
strongswan-7fd6c078b67ee4e5061379599b6a814bba22b8c6.tar.xz
Use IP address as ID as responder if not configured or no IDr received.
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/tasks/ike_auth.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libcharon/sa/tasks/ike_auth.c b/src/libcharon/sa/tasks/ike_auth.c
index 389465d1a..7552097f9 100644
--- a/src/libcharon/sa/tasks/ike_auth.c
+++ b/src/libcharon/sa/tasks/ike_auth.c
@@ -695,9 +695,17 @@ METHOD(task_t, build_r, status_t,
if (id->get_type(id) == ID_ANY)
{ /* no IDr received, apply configured ID */
if (!id_cfg || id_cfg->contains_wildcards(id_cfg))
- {
- DBG1(DBG_CFG, "IDr not configured and negotiation failed");
- goto peer_auth_failed;
+ { /* no ID configured, use local IP address */
+ host_t *me;
+
+ DBG1(DBG_CFG, "no IDr configured, fall back on IP address");
+ me = this->ike_sa->get_my_host(this->ike_sa);
+ id_cfg = identification_create_from_sockaddr(
+ me->get_sockaddr(me));
+ if (!cfg->replace_value(cfg, AUTH_RULE_IDENTITY, id_cfg))
+ {
+ cfg->add(cfg, AUTH_RULE_IDENTITY, id_cfg);
+ }
}
this->ike_sa->set_my_id(this->ike_sa, id_cfg->clone(id_cfg));
id = id_cfg;