session: guard session lookup table allocs
[vpp.git] / src / vnet / session / session_lookup.h
index 4e80566..f9ffc15 100644 (file)
@@ -29,6 +29,11 @@ typedef enum session_lookup_result_
   SESSION_LOOKUP_RESULT_FILTERED
 } session_lookup_result_t;
 
+typedef struct session_lookup_main_
+{
+  clib_spinlock_t st_alloc_lock;
+} session_lookup_main_t;
+
 session_t *session_lookup_safe4 (u32 fib_index, ip4_address_t * lcl,
                                 ip4_address_t * rmt, u16 lcl_port,
                                 u16 rmt_port, u8 proto);
@@ -92,6 +97,7 @@ transport_connection_t *session_lookup_half_open_connection (u64 handle,
                                                             u8 proto,
                                                             u8 is_ip4);
 u32 session_lookup_get_index_for_fib (u32 fib_proto, u32 fib_index);
+u32 session_lookup_get_or_alloc_index_for_fib (u32 fib_proto, u32 fib_index);
 
 void session_lookup_show_table_entries (vlib_main_t * vm,
                                        session_table_t * table, u8 type,
@@ -129,7 +135,7 @@ typedef struct _session_rule_add_del_args
   u8 transport_proto;
 } session_rule_add_del_args_t;
 
-int vnet_session_rule_add_del (session_rule_add_del_args_t * args);
+session_error_t vnet_session_rule_add_del (session_rule_add_del_args_t *args);
 void session_lookup_set_tables_appns (app_namespace_t * app_ns);
 
 void session_lookup_init (void);