aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/sa/ike_sa.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2010-10-05 17:55:32 +0200
committerTobias Brunner <tobias@strongswan.org>2010-10-12 11:11:05 +0200
commit261b2572d1c5bc7e6a4445536dcd76a06d48b2bc (patch)
tree77706d40372c94e40e3196e737104a4a998100e3 /src/libcharon/sa/ike_sa.c
parentbab56a4abbe2aeec2eb7500e08025f8b0a98a9ef (diff)
downloadstrongswan-261b2572d1c5bc7e6a4445536dcd76a06d48b2bc.tar.bz2
strongswan-261b2572d1c5bc7e6a4445536dcd76a06d48b2bc.tar.xz
Send list of additional addresses even if current path is still valid.
Diffstat (limited to 'src/libcharon/sa/ike_sa.c')
-rw-r--r--src/libcharon/sa/ike_sa.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c
index c654e9ebd..6234ea213 100644
--- a/src/libcharon/sa/ike_sa.c
+++ b/src/libcharon/sa/ike_sa.c
@@ -1809,8 +1809,19 @@ METHOD(ike_sa_t, roam, status_t,
DBG2(DBG_IKE, "keeping connection path %H - %H",
this->my_host, this->other_host);
set_condition(this, COND_STALE, FALSE);
+
+ if (supports_extension(this, EXT_MOBIKE) && address)
+ { /* if any addresses changed, send an updated list */
+ DBG1(DBG_IKE, "sending address list update using MOBIKE");
+ mobike = ike_mobike_create(&this->public, TRUE);
+ mobike->addresses(mobike);
+ this->task_manager->queue_task(this->task_manager,
+ (task_t*)mobike);
+ return this->task_manager->initiate(this->task_manager);
+ }
return SUCCESS;
}
+
if (!is_any_path_valid(this))
{
DBG1(DBG_IKE, "no route found to reach %H, MOBIKE update deferred",