51 .vector_size =
sizeof (
u32),
72 .vector_size =
sizeof (
u32),
92 .name =
"mpls-not-enabled",
93 .vector_size =
sizeof (
u32),
104 .node_name =
"mpls-lookup",
110 .node_name =
"mpls-not-enabled",
117 .node_name =
"interface-output",
212 #define foreach_af_cast \ 213 _(VNET_IP_RX_UNICAST_FEAT, "mpls input") \ 214 _(VNET_IP_TX_FEAT, "mpls output") \ vnet_config_main_t config_main
vlib_node_registration_t mpls_drop_node
(constructor) VLIB_REGISTER_NODE (mpls_drop_node)
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)
VNET_MPLS_TX_FEATURE_INIT(interface_output, static)
vlib_node_registration_t mpls_not_enabled_node
(constructor) VLIB_REGISTER_NODE (mpls_not_enabled_node)
static char * rx_feature_start_nodes[]
VNET_MPLS_FEATURE_INIT(mpls_lookup, static)
u32 mpls_rx_feature_not_enabled
u32 * fib_index_by_sw_if_index
u32 vnet_config_del_feature(vlib_main_t *vm, vnet_config_main_t *cm, u32 config_string_heap_index, u32 feature_index, void *feature_config, u32 n_feature_config_bytes)
u32 * config_index_by_sw_if_index
u32 mpls_tx_feature_interface_output
VNET_SW_INTERFACE_ADD_DEL_FUNCTION(mpls_sw_interface_add_del)
clib_error_t * mpls_feature_init(vlib_main_t *vm)
vnet_feature_config_main_t feature_config_mains[VNET_N_IP_FEAT]
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)
vlib_node_registration_t mpls_punt_node
(constructor) VLIB_REGISTER_NODE (mpls_punt_node)
static uword mpls_lookup(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
static clib_error_t * mpls_sw_interface_add_del(vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
#define ORDER_CONSTRAINTS
clib_error_t * vnet_feature_arc_init(vlib_main_t *vm, vnet_config_main_t *vcm, char **feature_start_nodes, int num_feature_start_nodes, vnet_feature_registration_t *first_reg, char ***feature_nodes)
Initialize a feature graph arc.
vlib_node_registration_t mpls_input_node
(constructor) VLIB_REGISTER_NODE (mpls_input_node)
u32 vnet_config_add_feature(vlib_main_t *vm, vnet_config_main_t *cm, u32 config_string_heap_index, u32 feature_index, void *feature_config, u32 n_feature_config_bytes)
vnet_feature_registration_t * next_feature[VNET_N_IP_FEAT]
char ** feature_nodes[VNET_N_IP_FEAT]
static uword mpls_punt(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
static uword mpls_drop(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
#define VLIB_NODE_FUNCTION_MULTIARCH(node, fn)
#define VLIB_REGISTER_NODE(x,...)
static char * tx_feature_start_nodes[]
#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 uword mpls_not_enabled(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
u32 mpls_rx_feature_lookup