From: Martin Willi Date: Mon, 10 Dec 2012 16:04:26 +0000 (+0100) Subject: Migrate cache and fire lookip events for unique_id change during IKE_SA rekey X-Git-Tag: 5.0.2dr4~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=251b740712a034a20f70da2cdfd3e5ea02f61e81;p=thirdparty%2Fstrongswan.git Migrate cache and fire lookip events for unique_id change during IKE_SA rekey --- diff --git a/src/libcharon/plugins/lookip/lookip_listener.c b/src/libcharon/plugins/lookip/lookip_listener.c index 3a67eae083..f1f630f37d 100644 --- a/src/libcharon/plugins/lookip/lookip_listener.c +++ b/src/libcharon/plugins/lookip/lookip_listener.c @@ -227,6 +227,18 @@ METHOD(listener_t, ike_updown, bool, return TRUE; } +METHOD(listener_t, ike_rekey, bool, + private_lookip_listener_t *this, ike_sa_t *old, ike_sa_t *new) +{ + /* During IKE_SA rekey, the unique identifier changes. Fire update events + * and update the cached entry. During the invocation of this hook, the + * virutal IPs have been migrated to new, hence remove that entry. */ + remove_entry(this, new); + add_entry(this, new); + + return TRUE; +} + METHOD(lookip_listener_t, lookup, int, private_lookip_listener_t *this, host_t *vip, lookip_callback_t cb, void *user) @@ -299,6 +311,7 @@ lookip_listener_t *lookip_listener_create() .listener = { .message = _message_hook, .ike_updown = _ike_updown, + .ike_rekey = _ike_rekey, }, .lookup = _lookup, .add_listener = _add_listener,