diff options
author | Martin Willi <martin@revosec.ch> | 2011-02-28 14:49:50 +0000 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-02-28 15:37:18 +0000 |
commit | 0d6d9925894dded418c12477c28fe9812db54ee4 (patch) | |
tree | 5b6a709950135303aef2d6320e172cc76b6dc17b /src/libcharon/plugins/duplicheck | |
parent | b85be6907989b2941a1ad3be5d87ed5ec52faf94 (diff) | |
download | strongswan-0d6d9925894dded418c12477c28fe9812db54ee4.tar.bz2 strongswan-0d6d9925894dded418c12477c28fe9812db54ee4.tar.xz |
Update duplicheck entry during IKE rekeying
Diffstat (limited to 'src/libcharon/plugins/duplicheck')
-rw-r--r-- | src/libcharon/plugins/duplicheck/duplicheck_listener.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/libcharon/plugins/duplicheck/duplicheck_listener.c b/src/libcharon/plugins/duplicheck/duplicheck_listener.c index 194208485..226b2bd4e 100644 --- a/src/libcharon/plugins/duplicheck/duplicheck_listener.c +++ b/src/libcharon/plugins/duplicheck/duplicheck_listener.c @@ -91,11 +91,26 @@ static bool equals(identification_t *a, identification_t *b) } METHOD(listener_t, ike_rekey, bool, - private_duplicheck_listener_t *this, ike_sa_t *new, ike_sa_t *old) + private_duplicheck_listener_t *this, ike_sa_t *old, ike_sa_t *new) { + identification_t *id; + ike_sa_id_t *sa; + entry_t *entry; + + sa = new->get_id(new); + id = new->get_other_id(new); + + INIT(entry, + .id = id->clone(id), + .sa = sa->clone(sa), + ); this->mutex->lock(this->mutex); - /* TODO update entires */ + entry = this->active->put(this->active, entry->id, entry); this->mutex->unlock(this->mutex); + if (entry) + { + entry_destroy(entry); + } return TRUE; } |