#include <vnet/ipsec/ipsec_spd_policy.h>
#include <vnet/ipsec/ipsec_sa.h>
#include <vnet/ipsec/ipsec_if.h>
-#include <vnet/ipsec/ipsec_io.h>
typedef clib_error_t *(*add_del_sa_sess_cb_t) (u32 sa_index, u8 is_add);
typedef clib_error_t *(*check_support_cb_t) (ipsec_sa_t * sa);
/* pool of tunnel interfaces */
ipsec_tunnel_if_t *tunnel_interfaces;
- u32 *free_tunnel_if_indices;
-
- u32 **empty_buffers;
uword *tunnel_index_by_key;
vlib_main_t *vlib_main;
vnet_main_t *vnet_main;
- /* next node indices */
- u32 feature_next_node_index[32];
-
/* hashes */
uword *spd_index_by_spd_id;
uword *spd_index_by_sw_if_index;
* inline functions
*/
-always_inline void
-ipsec_alloc_empty_buffers (vlib_main_t * vm, ipsec_main_t * im)
-{
- u32 thread_index = vm->thread_index;
- uword l = vec_len (im->empty_buffers[thread_index]);
- uword n_alloc = 0;
-
- if (PREDICT_FALSE (l < VLIB_FRAME_SIZE))
- {
- if (!im->empty_buffers[thread_index])
- {
- vec_alloc (im->empty_buffers[thread_index], 2 * VLIB_FRAME_SIZE);
- }
-
- n_alloc = vlib_buffer_alloc (vm, im->empty_buffers[thread_index] + l,
- 2 * VLIB_FRAME_SIZE - l);
-
- _vec_len (im->empty_buffers[thread_index]) = l + n_alloc;
- }
-}
-
static_always_inline u32
get_next_output_feature_node_index (vlib_buffer_t * b,
vlib_node_runtime_t * nr)