31 u32 recycle_node_index,
45 ctx_id = ctx - rm->
contexts[cpu_number];
145 u32 n_left_to_next = 0;
146 u32 n_this_frame = 0;
154 u32 feature_node_index = 0;
175 for (i = 0; i < 2; i++)
188 while (n_left_from > 0)
255 "replication-recycle");
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
always_inline vlib_thread_main_t * vlib_get_thread_main()
sll srl srl sll sra u16x4 i
u32 free_list_index
Buffer free list that this buffer was allocated from and will be freed to.
u32 saved_free_list_index
vlib_buffer_main_t * buffer_main
always_inline void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
#define vec_reset_length(v)
Reset vector length to zero NULL-pointer tolerant.
replication_main_t replication_main
void(* buffers_added_to_freelist_function)(struct vlib_main_t *vm, struct vlib_buffer_free_list_t *fl)
vnet_main_t * vnet_get_main(void)
i16 current_data
signed offset in data[], pre_data[] that we are currently processing.
#define vlib_prefetch_buffer_with_index(vm, bi, type)
Prefetch buffer metadata by buffer index The first 64 bytes of buffer contains most header informatio...
#define VLIB_INIT_FUNCTION(x)
always_inline void * vlib_frame_vector_args(vlib_frame_t *f)
#define pool_elt_at_index(p, i)
static void replication_recycle_callback(vlib_main_t *vm, vlib_buffer_free_list_t *fl)
replication_context_t * replication_prep(vlib_main_t *vm, vlib_buffer_t *b0, u32 recycle_node_index, u32 l2_packet)
void vlib_put_frame_to_node(vlib_main_t *vm, u32 to_node_index, vlib_frame_t *f)
u32 vlib_buffer_create_free_list(vlib_main_t *vm, u32 n_data_bytes, char *fmt,...)
#define pool_get_aligned(P, E, A)
#define clib_memcpy(a, b, c)
u32 clone_count
Specifies whether this buffer should be reinitialized when freed.
#define VLIB_BUFFER_IS_TRACED
clib_error_t * replication_init(vlib_main_t *vm)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
always_inline void vlib_buffer_advance(vlib_buffer_t *b, word l)
Advance current data pointer by the supplied (signed!) amount.
vlib_buffer_free_list_t * buffer_free_list_pool
replication_context_t * replication_recycle(vlib_main_t *vm, vlib_buffer_t *b0, u32 is_last)
vlib_frame_t * vlib_get_frame_to_node(vlib_main_t *vm, u32 to_node_index)
#define VLIB_BUFFER_IS_RECYCLED
#define CLIB_CACHE_LINE_BYTES
u32 flags
buffer flags: VLIB_BUFFER_IS_TRACED: trace this buffer.
always_inline vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
replication_context_t ** contexts