aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/charon/sa/tasks/ike_mobike.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/charon/sa/tasks/ike_mobike.c b/src/charon/sa/tasks/ike_mobike.c
index 9ed32cdc9..aee75fbdb 100644
--- a/src/charon/sa/tasks/ike_mobike.c
+++ b/src/charon/sa/tasks/ike_mobike.c
@@ -217,6 +217,17 @@ static void update_children(private_ike_mobike_t *this)
{
iterator_t *iterator;
child_sa_t *child_sa;
+ host_t *ip;
+
+ /* additionally, we reinstall the virtual IP as we may have changed
+ * our interface */
+ ip = this->ike_sa->get_virtual_ip(this->ike_sa, TRUE);
+ if (ip)
+ {
+ ip = ip->clone(ip);
+ this->ike_sa->set_virtual_ip(this->ike_sa, TRUE, ip);
+ ip->destroy(ip);
+ }
iterator = this->ike_sa->create_child_sa_iterator(this->ike_sa);
while (iterator->iterate(iterator, (void**)&child_sa))