48 if (b0->
flags & VLIB_BUFFER_IS_TRACED)
89 .vector_size =
sizeof (
u32),
107 .vector_size =
sizeof (
u32),
124 .name =
"mpls-not-enabled",
125 .vector_size =
sizeof (
u32),
136 .arc_name =
"mpls-input",
138 .last_in_arc =
"mpls-lookup",
143 .arc_name =
"mpls-input",
144 .node_name =
"mpls-not-enabled",
149 .arc_name =
"mpls-input",
150 .node_name =
"mpls-lookup",
156 .arc_name =
"mpls-output",
157 .start_nodes =
VNET_FEATURES (
"mpls-output",
"mpls-midchain"),
158 .last_in_arc =
"interface-output",
164 .arc_name =
"mpls-output",
165 .node_name =
"interface-output",
u32 flags
buffer flags: VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index, VLIB_BUFFER_IS_TRACED: trace this buffer.
vlib_node_registration_t mpls_drop_node
(constructor) VLIB_REGISTER_NODE (mpls_drop_node)
vlib_node_registration_t mpls_not_enabled_node
(constructor) VLIB_REGISTER_NODE (mpls_not_enabled_node)
u8 input_feature_arc_index
u32 * fib_index_by_sw_if_index
VNET_FEATURE_INIT(mpls_not_enabled, static)
VNET_SW_INTERFACE_ADD_DEL_FUNCTION(mpls_sw_interface_add_del)
#define VLIB_NODE_FN(node)
static void mpls_drop_trace(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
u8 * mpls_enabled_by_sw_if_index
static uword mpls_terminate(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int error_code)
vl_api_interface_index_t sw_if_index
static u8 * format_mpls_drop_trace(u8 *s, va_list *args)
vlib_node_registration_t mpls_punt_node
(constructor) VLIB_REGISTER_NODE (mpls_punt_node)
u8 output_feature_arc_index
static clib_error_t * mpls_sw_interface_add_del(vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
uword vlib_error_drop_buffers(vlib_main_t *vm, vlib_node_runtime_t *node, u32 *buffers, u32 next_buffer_stride, u32 n_buffers, u32 next_index, u32 drop_error_node, u32 drop_error_code)
vlib_node_registration_t mpls_input_node
(constructor) VLIB_REGISTER_NODE (mpls_input_node)
VNET_FEATURE_ARC_INIT(mpls_input, static)
#define VLIB_REGISTER_NODE(x,...)
vlib_main_t vlib_node_runtime_t * node
#define VNET_FEATURES(...)
static void * vlib_add_trace(vlib_main_t *vm, vlib_node_runtime_t *r, vlib_buffer_t *b, u32 n_data_bytes)
VLIB buffer representation.
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
vlib_main_t vlib_node_runtime_t vlib_frame_t * frame
u16 flags
Copy of main node flags.
#define VLIB_NODE_FLAG_TRACE
#define vec_validate_init_empty(V, I, INIT)
Make sure vector is long enough for given index and initialize empty space (no header, unspecified alignment)
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
int vnet_feature_enable_disable(const char *arc_name, const char *node_name, u32 sw_if_index, int enable_disable, void *feature_config, u32 n_feature_config_bytes)