aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/duplicheck
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-02-28 14:49:50 +0000
committerMartin Willi <martin@revosec.ch>2011-02-28 15:37:18 +0000
commit0d6d9925894dded418c12477c28fe9812db54ee4 (patch)
tree5b6a709950135303aef2d6320e172cc76b6dc17b /src/libcharon/plugins/duplicheck
parentb85be6907989b2941a1ad3be5d87ed5ec52faf94 (diff)
downloadstrongswan-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.c19
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;
}