acl-plugin: introduce a format function for l4 session key
[vpp.git] / src / plugins / acl / fa_node.h
index 102922c..57e1027 100644 (file)
@@ -5,6 +5,8 @@
 #include <vppinfra/bihash_16_8.h>
 #include <vppinfra/bihash_40_8.h>
 
+#include <plugins/acl/exported_types.h>
+
 // #define FA_NODE_VERBOSE_DEBUG 3
 
 #define TCP_FLAG_FIN    0x01
@@ -77,10 +79,16 @@ typedef union {
   };
 } fa_5tuple_t;
 
-typedef struct {
-  u8 opaque[sizeof(fa_5tuple_t)];
-} fa_5tuple_opaque_t;
+static_always_inline u8 *
+format_fa_session_l4_key(u8 * s, va_list * args)
+{
+  fa_session_l4_key_t *l4 = va_arg (*args, fa_session_l4_key_t *);
 
+  return (format (s, "l4 lsb_of_sw_if_index %d proto %d l4_is_input %d l4_slow_path %d reserved0 0x%02x port %d -> %d",
+                  l4->lsb_of_sw_if_index,
+                  l4->proto, l4->is_input, l4->is_slowpath,
+                  l4->reserved0, l4->port[0], l4->port[1]));
+}
 
 typedef struct {
   fa_5tuple_t info; /* (5+1)*8 = 48 bytes */
@@ -139,6 +147,8 @@ CT_ASSERT_EQUAL(fa_session_t_size_is_128, sizeof(fa_session_t), 128);
 
 /* Session ID MUST be the same as u64 */
 CT_ASSERT_EQUAL(fa_full_session_id_size_is_64, sizeof(fa_full_session_id_t), sizeof(u64));
+
+CT_ASSERT_EQUAL(fa_5tuple_opaque_t_must_match_5tuple, sizeof(fa_5tuple_opaque_t), sizeof(fa_5tuple_t));
 #undef CT_ASSERT_EQUAL
 
 #define FA_SESSION_BOGUS_INDEX ~0
@@ -146,6 +156,12 @@ CT_ASSERT_EQUAL(fa_full_session_id_size_is_64, sizeof(fa_full_session_id_t), siz
 typedef struct {
   /* The pool of sessions managed by this worker */
   fa_session_t *fa_sessions_pool;
+  /* incoming session change requests from other workers */
+  clib_spinlock_t pending_session_change_request_lock;
+  u64 *pending_session_change_requests;
+  u64 *wip_session_change_requests;
+  u64 rcvd_session_change_requests;
+  u64 sent_session_change_requests;
   /* per-worker ACL_N_TIMEOUTS of conn lists */
   u32 *fa_conn_list_head;
   u32 *fa_conn_list_tail;