Add stroke CHILD_SA rekeying counter
[strongswan.git] / src / libcharon / plugins / stroke / stroke_counter.c
index fb8a47a..ab2882e 100644 (file)
@@ -65,6 +65,40 @@ struct private_stroke_counter_t {
        spinlock_t *lock;
 };
 
+METHOD(listener_t, ike_rekey, bool,
+       private_stroke_counter_t *this, ike_sa_t *old, ike_sa_t *new)
+{
+       stroke_counter_type_t type;
+       ike_sa_id_t *id;
+
+       id = new->get_id(new);
+       if (id->is_initiator(id))
+       {
+               type = COUNTER_INIT_IKE_SA_REKEY;
+       }
+       else
+       {
+               type = COUNTER_RESP_IKE_SA_REKEY;
+       }
+
+       this->lock->lock(this->lock);
+       this->counter[type]++;
+       this->lock->unlock(this->lock);
+
+       return TRUE;
+}
+
+METHOD(listener_t, child_rekey, bool,
+       private_stroke_counter_t *this, ike_sa_t *ike_sa,
+       child_sa_t *old, child_sa_t *new)
+{
+       this->lock->lock(this->lock);
+       this->counter[COUNTER_CHILD_SA_REKEY]++;
+       this->lock->unlock(this->lock);
+
+       return TRUE;
+}
+
 METHOD(stroke_counter_t, destroy, void,
        private_stroke_counter_t *this)
 {
@@ -81,6 +115,10 @@ stroke_counter_t *stroke_counter_create()
 
        INIT(this,
                .public = {
+                       .listener = {
+                               .ike_rekey = _ike_rekey,
+                               .child_rekey = _child_rekey,
+                       },
                        .destroy = _destroy,
                },
                .lock = spinlock_create(),