From: Martin Willi Date: Fri, 20 Jan 2012 10:36:26 +0000 (+0100) Subject: Sync remote virtual IP for IKEv1 SAs X-Git-Tag: 5.0.0~338^2~9^2~39 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b226fd300d0f15023c80150e28dd1dd9aa9b741e;p=thirdparty%2Fstrongswan.git Sync remote virtual IP for IKEv1 SAs --- diff --git a/src/libcharon/plugins/ha/ha_ike.c b/src/libcharon/plugins/ha/ha_ike.c index ce3131b0b5..09899a8f69 100644 --- a/src/libcharon/plugins/ha/ha_ike.c +++ b/src/libcharon/plugins/ha/ha_ike.c @@ -296,6 +296,7 @@ METHOD(listener_t, message_hook, bool, keymat_v1_t *keymat; u_int32_t mid; chunk_t iv; + host_t *vip; mid = message->get_message_id(message); if (mid == 0) @@ -309,6 +310,18 @@ METHOD(listener_t, message_hook, bool, this->socket->push(this->socket, m); this->cache->cache(this->cache, ike_sa, m); } + if (!incoming && message->get_exchange_type(message) == TRANSACTION) + { + vip = ike_sa->get_virtual_ip(ike_sa, FALSE); + if (vip) + { + m = ha_message_create(HA_IKE_UPDATE); + m->add_attribute(m, HA_IKE_ID, ike_sa->get_id(ike_sa)); + m->add_attribute(m, HA_REMOTE_VIP, vip); + this->socket->push(this->socket, m); + this->cache->cache(this->cache, ike_sa, m); + } + } } return TRUE; }