From 251b740712a034a20f70da2cdfd3e5ea02f61e81 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 10 Dec 2012 17:04:26 +0100 Subject: Migrate cache and fire lookip events for unique_id change during IKE_SA rekey --- src/libcharon/plugins/lookip/lookip_listener.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/libcharon/plugins') diff --git a/src/libcharon/plugins/lookip/lookip_listener.c b/src/libcharon/plugins/lookip/lookip_listener.c index 3a67eae08..f1f630f37 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, -- cgit v1.2.3