diff options
Diffstat (limited to 'src/plugins/acl/acl.h')
-rw-r--r-- | src/plugins/acl/acl.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/plugins/acl/acl.h b/src/plugins/acl/acl.h index 53650916423..229ee057725 100644 --- a/src/plugins/acl/acl.h +++ b/src/plugins/acl/acl.h @@ -27,6 +27,7 @@ #include <vppinfra/bihash_48_8.h> #include <vppinfra/bihash_40_8.h> #include <vppinfra/bihash_16_8.h> +#include <vlib/counter.h> #include "types.h" #include "fa_node.h" @@ -34,7 +35,7 @@ #include "lookup_context.h" #define ACL_PLUGIN_VERSION_MAJOR 1 -#define ACL_PLUGIN_VERSION_MINOR 3 +#define ACL_PLUGIN_VERSION_MINOR 4 #define UDP_SESSION_IDLE_TIMEOUT_SEC 600 #define TCP_SESSION_IDLE_TIMEOUT_SEC (3600*24) @@ -314,6 +315,11 @@ typedef struct { vnet_main_t * vnet_main; /* logging */ vlib_log_class_t log_default; + /* acl counters exposed via stats segment */ + volatile u32 *acl_counter_lock; + vlib_combined_counter_main_t *combined_acl_counters; + /* enable/disable ACL counters for interface processing */ + u32 interface_acl_counters_enabled; } acl_main_t; #define acl_log_err(...) \ @@ -326,6 +332,21 @@ typedef struct { vlib_log(VLIB_LOG_LEVEL_INFO, acl_main.log_default, __VA_ARGS__) +static inline void +acl_plugin_counter_lock (acl_main_t * am) +{ + if (am->acl_counter_lock) + while (clib_atomic_test_and_set (am->acl_counter_lock)) + /* zzzz */ ; +} + +static inline void +acl_plugin_counter_unlock (acl_main_t * am) +{ + if (am->acl_counter_lock) + clib_atomic_release (am->acl_counter_lock); +} + #define foreach_acl_eh \ _(HOPBYHOP , 0 , "IPv6ExtHdrHopByHop") \ |