aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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",