]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Define stroke counter types to implement
authorMartin Willi <martin@revosec.ch>
Mon, 8 Oct 2012 09:03:08 +0000 (11:03 +0200)
committerMartin Willi <martin@revosec.ch>
Wed, 24 Oct 2012 09:34:11 +0000 (11:34 +0200)
src/libcharon/plugins/stroke/stroke_counter.c
src/libcharon/plugins/stroke/stroke_counter.h

index db0c4d9a14e7d232b695e996adedf1e57f525ef2..fb8a47a161317e9dbfef236856b61a21b43343c4 100644 (file)
 
 #include "stroke_counter.h"
 
+#include <threading/spinlock.h>
+
+ENUM(stroke_counter_type_names,
+       COUNTER_INIT_IKE_SA_REKEY, COUNTER_OUT_INFORMATIONAL_RSP,
+       "ikeInitRekey",
+       "ikeRspRekey",
+       "ikeChildSaRekey",
+       "ikeInInvalid",
+       "ikeInInvalidSpi",
+       "ikeInInitReq",
+       "ikeInInitRsp",
+       "ikeOutInitReq",
+       "ikeOutInitRsp",
+       "ikeInAuthReq",
+       "ikeInAuthRsp",
+       "ikeOutAuthReq",
+       "ikeOutAuthRsp",
+       "ikeInCrChildReq",
+       "ikeInCrChildRsp",
+       "ikeOutCrChildReq",
+       "ikeOutCrChildRsp",
+       "ikeInInfoReq",
+       "ikeInInfoRsp",
+       "ikeOutInfoReq",
+       "ikeOutInfoRsp",
+);
+
 typedef struct private_stroke_counter_t private_stroke_counter_t;
 
 /**
@@ -27,11 +54,21 @@ struct private_stroke_counter_t {
         */
        stroke_counter_t public;
 
+       /**
+        * Counter values
+        */
+       u_int64_t counter[COUNTER_MAX];
+
+       /**
+        * Lock for counter values
+        */
+       spinlock_t *lock;
 };
 
 METHOD(stroke_counter_t, destroy, void,
        private_stroke_counter_t *this)
 {
+       this->lock->destroy(this->lock);
        free(this);
 }
 
@@ -46,6 +83,7 @@ stroke_counter_t *stroke_counter_create()
                .public = {
                        .destroy = _destroy,
                },
+               .lock = spinlock_create(),
        );
 
        return &this->public;
index 1f95553c4229b419f26f3980bfee8b99765154be..fecdce4fad431b0a53065514fdaa72b0802650e9 100644 (file)
 #include <bus/listeners/listener.h>
 
 typedef struct stroke_counter_t stroke_counter_t;
+typedef enum stroke_counter_type_t stroke_counter_type_t;
+
+enum stroke_counter_type_t {
+       /** initiated IKE_SA rekeyings */
+       COUNTER_INIT_IKE_SA_REKEY,
+       /** responded IKE_SA rekeyings */
+       COUNTER_RESP_IKE_SA_REKEY,
+       /** completed CHILD_SA rekeyings */
+       COUNTER_CHILD_SA_REKEY,
+       /** messages with invalid types, length, or a value out of range */
+       COUNTER_IN_INVALID,
+       /** messages with an invalid IKE SPI */
+       COUNTER_IN_INVALID_IKE_SPI,
+       /** received IKE_SA_INIT requests */
+       COUNTER_IN_IKE_SA_INIT_REQ,
+       /** received IKE_SA_INIT responses */
+       COUNTER_IN_IKE_SA_INIT_RSP,
+       /** sent IKE_SA_INIT requests */
+       COUNTER_OUT_IKE_SA_INIT_REQ,
+       /** sent IKE_SA_INIT responses */
+       COUNTER_OUT_IKE_SA_INIT_RES,
+       /** received IKE_AUTH requests */
+       COUNTER_IN_IKE_AUTH_REQ,
+       /** received IKE_AUTH responses */
+       COUNTER_IN_IKE_AUTH_RSP,
+       /** sent IKE_AUTH requests */
+       COUNTER_OUT_IKE_AUTH_REQ,
+       /** sent IKE_AUTH responses */
+       COUNTER_OUT_IKE_AUTH_RSP,
+       /** received CREATE_CHILD_SA requests */
+       COUNTER_IN_CREATE_CHILD_SA_REQ,
+       /** received CREATE_CHILD_SA responses */
+       COUNTER_IN_CREATE_CHILD_SA_RSP,
+       /** sent CREATE_CHILD_SA requests */
+       COUNTER_OUT_CREATE_CHILD_SA_REQ,
+       /** sent CREATE_CHILD_SA responses */
+       COUNTER_OUT_CREATE_CHILD_SA_RSP,
+       /** received INFORMATIONAL requests */
+       COUNTER_IN_INFORMATIONAL_REQ,
+       /** received INFORMATIONAL responses */
+       COUNTER_IN_INFORMATIONAL_RSP,
+       /** sent INFORMATIONAL requests */
+       COUNTER_OUT_INFORMATIONAL_REQ,
+       /** sent INFORMATIONAL responses */
+       COUNTER_OUT_INFORMATIONAL_RSP,
+       /** number of counter types */
+       COUNTER_MAX
+};
 
 /**
  * Collection of counter values for different IKE events.