FD.io VPP  v18.07.1-19-g511ce25
Vector Packet Processing
mpls_label_dpo.c File Reference
+ Include dependency graph for mpls_label_dpo.c:

Go to the source code of this file.

Data Structures

struct  mpls_label_imposition_trace_t_
 A struct to hold tracing information for the MPLS label imposition node. More...
 

Typedefs

typedef struct mpls_label_imposition_trace_t_ mpls_label_imposition_trace_t
 A struct to hold tracing information for the MPLS label imposition node. More...
 

Functions

static mpls_label_dpo_tmpls_label_dpo_alloc (void)
 
static index_t mpls_label_dpo_get_index (mpls_label_dpo_t *mld)
 
void mpls_label_dpo_create (fib_mpls_label_t *label_stack, mpls_eos_bit_t eos, dpo_proto_t payload_proto, mpls_label_dpo_flags_t flags, const dpo_id_t *parent, dpo_id_t *dpo)
 Create an MPLS label object. More...
 
u8format_mpls_label_dpo_flags (u8 *s, va_list *args)
 Format the flags variable. More...
 
u8format_mpls_label_dpo (u8 *s, va_list *args)
 
static void mpls_label_dpo_lock (dpo_id_t *dpo)
 
static void mpls_label_dpo_unlock (dpo_id_t *dpo)
 
static mpls_unicast_header_tmpls_label_paint (vlib_buffer_t *b0, mpls_label_dpo_t *mld0)
 
static mpls_unicast_header_tmpls_label_paint_w_ttl (vlib_buffer_t *b0, mpls_label_dpo_t *mld0, u8 ttl0)
 Paint on an MPLS label and fixup the TTL. More...
 
static mpls_unicast_header_tmpls_label_paint_w_ttl_exp (vlib_buffer_t *b0, mpls_label_dpo_t *mld0, u8 ttl0, u8 exp0)
 Paint on an MPLS label and fixup the TTL and EXP bits. More...
 
static mpls_unicast_header_tmpls_label_paint_w_ttl_mpls_exp (vlib_buffer_t *b0, mpls_label_dpo_t *mld0, u8 ttl0, u8 exp0)
 Paint on an MPLS label and fixup the TTL and EXP bits When the EXP bits are already bit shift to the correct place in in the 2nd byte (i.e. More...
 
static uword mpls_label_imposition_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, const dpo_proto_t dproto, const mpls_label_dpo_flags_t flags)
 
static u8format_mpls_label_imposition_trace (u8 *s, va_list *args)
 
static uword mpls_mpls_label_imposition_pipe (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (mpls_mpls_label_imposition_pipe_node, mpls_mpls_label_imposition_pipe)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_pipe_node, ip4_mpls_label_imposition_pipe)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_pipe_node, ip6_mpls_label_imposition_pipe)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ethernet_mpls_label_imposition_pipe_node, ethernet_mpls_label_imposition_pipe)
 
 VLIB_NODE_FUNCTION_MULTIARCH (mpls_mpls_label_imposition_uniform_node, mpls_mpls_label_imposition_uniform)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_uniform_node, ip4_mpls_label_imposition_uniform)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_uniform_node, ip6_mpls_label_imposition_uniform)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ethernet_mpls_label_imposition_uniform_node, ethernet_mpls_label_imposition_uniform)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node, ip4_mpls_label_imposition_pipe_no_ip_ttl_decr)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node, ip6_mpls_label_imposition_pipe_no_ip_ttl_decr)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node, ip4_mpls_label_imposition_uniform_no_ip_ttl_decr)
 
 VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node, ip6_mpls_label_imposition_uniform_no_ip_ttl_decr)
 
static void mpls_label_interpose (const dpo_id_t *original, const dpo_id_t *parent, dpo_id_t *clone)
 Interpose a label DPO. More...
 
void mpls_label_dpo_module_init (void)
 
dpo_type_t mpls_label_dpo_get_type (mpls_label_dpo_flags_t flags)
 

Variables

mpls_label_dpo_tmpls_label_dpo_pool
 
const char * mpls_label_dpo_attr_names [] = MPLS_LABEL_DPO_ATTR_NAMES
 Strings for the flags. More...
 
static dpo_type_t mpls_label_dpo_types [1<< MPLS_LABEL_DPO_ATTR_MAX]
 registered DPO types for each of the label sub-types. More...
 
vlib_node_registration_t mpls_mpls_label_imposition_pipe_node
 (constructor) VLIB_REGISTER_NODE (mpls_mpls_label_imposition_pipe_node) More...
 
vlib_node_registration_t ip4_mpls_label_imposition_pipe_node
 (constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_node) More...
 
vlib_node_registration_t ip6_mpls_label_imposition_pipe_node
 (constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_node) More...
 
vlib_node_registration_t ethernet_mpls_label_imposition_pipe_node
 (constructor) VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_pipe_node) More...
 
vlib_node_registration_t mpls_mpls_label_imposition_uniform_node
 (constructor) VLIB_REGISTER_NODE (mpls_mpls_label_imposition_uniform_node) More...
 
vlib_node_registration_t ip4_mpls_label_imposition_uniform_node
 (constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_node) More...
 
vlib_node_registration_t ip6_mpls_label_imposition_uniform_node
 (constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_node) More...
 
vlib_node_registration_t ethernet_mpls_label_imposition_uniform_node
 (constructor) VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_uniform_node) More...
 
vlib_node_registration_t ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node
 (constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node) More...
 
vlib_node_registration_t ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node
 (constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node) More...
 
vlib_node_registration_t ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node
 (constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node) More...
 
vlib_node_registration_t ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node
 (constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node) More...
 
static const dpo_vft_t mld_vft
 
static const char *const mpls_label_imp_pipe_ip4_nodes []
 
static const char *const mpls_label_imp_pipe_ip6_nodes []
 
static const char *const mpls_label_imp_pipe_mpls_nodes []
 
static const char *const mpls_label_imp_pipe_ethernet_nodes []
 
static const char *const *const mpls_label_imp_pipe_nodes [DPO_PROTO_NUM]
 
static const char *const mpls_label_imp_uniform_ip4_nodes []
 
static const char *const mpls_label_imp_uniform_ip6_nodes []
 
static const char *const mpls_label_imp_uniform_mpls_nodes []
 
static const char *const mpls_label_imp_uniform_ethernet_nodes []
 
static const char *const *const mpls_label_imp_uniform_nodes [DPO_PROTO_NUM]
 
static const char *const mpls_label_imp_pipe_no_ip_tll_decr_ip4_nodes []
 
static const char *const mpls_label_imp_pipe_no_ip_tll_decr_ip6_nodes []
 
static const char *const *const mpls_label_imp_pipe_no_ip_tll_decr_nodes [DPO_PROTO_NUM]
 
static const char *const mpls_label_imp_uniform_no_ip_tll_decr_ip4_nodes []
 
static const char *const mpls_label_imp_uniform_no_ip_tll_decr_ip6_nodes []
 
static const char *const *const mpls_label_imp_uniform_no_ip_tll_decr_nodes [DPO_PROTO_NUM]
 

Typedef Documentation

A struct to hold tracing information for the MPLS label imposition node.

Function Documentation

u8* format_mpls_label_dpo ( u8 s,
va_list *  args 
)

Definition at line 191 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

u8* format_mpls_label_dpo_flags ( u8 s,
va_list *  args 
)

Format the flags variable.

Definition at line 174 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_mpls_label_imposition_trace ( u8 s,
va_list *  args 
)
static

Definition at line 887 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

static mpls_label_dpo_t* mpls_label_dpo_alloc ( void  )
static

Definition at line 38 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void mpls_label_dpo_create ( fib_mpls_label_t label_stack,
mpls_eos_bit_t  eos,
dpo_proto_t  payload_proto,
mpls_label_dpo_flags_t  flags,
const dpo_id_t paremt,
dpo_id_t dpo 
)

Create an MPLS label object.

Parameters
label_stackThe stack if labels to impose, outer most label first
eosThe inner most label's EOS bit
payload_protoThe ptocool of the payload packets that will be imposed with this label header.
parentThe parent of the created MPLS label object
dpoThe MPLS label DPO created

Definition at line 57 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static index_t mpls_label_dpo_get_index ( mpls_label_dpo_t mld)
static

Definition at line 51 of file mpls_label_dpo.c.

+ Here is the caller graph for this function:

dpo_type_t mpls_label_dpo_get_type ( mpls_label_dpo_flags_t  flags)

Definition at line 1358 of file mpls_label_dpo.c.

+ Here is the caller graph for this function:

static void mpls_label_dpo_lock ( dpo_id_t dpo)
static

Definition at line 226 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

void mpls_label_dpo_module_init ( void  )

Definition at line 1340 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void mpls_label_dpo_unlock ( dpo_id_t dpo)
static

Definition at line 236 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

static uword mpls_label_imposition_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
const dpo_proto_t  dproto,
const mpls_label_dpo_flags_t  flags 
)
inlinestatic

Definition at line 356 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void mpls_label_interpose ( const dpo_id_t original,
const dpo_id_t parent,
dpo_id_t clone 
)
static

Interpose a label DPO.

used in the FIB unit tests

Definition at line 1211 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

static mpls_unicast_header_t* mpls_label_paint ( vlib_buffer_t b0,
mpls_label_dpo_t mld0 
)
inlinestatic

Definition at line 274 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static mpls_unicast_header_t* mpls_label_paint_w_ttl ( vlib_buffer_t b0,
mpls_label_dpo_t mld0,
u8  ttl0 
)
inlinestatic

Paint on an MPLS label and fixup the TTL.

Definition at line 301 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static mpls_unicast_header_t* mpls_label_paint_w_ttl_exp ( vlib_buffer_t b0,
mpls_label_dpo_t mld0,
u8  ttl0,
u8  exp0 
)
inlinestatic

Paint on an MPLS label and fixup the TTL and EXP bits.

Definition at line 319 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static mpls_unicast_header_t* mpls_label_paint_w_ttl_mpls_exp ( vlib_buffer_t b0,
mpls_label_dpo_t mld0,
u8  ttl0,
u8  exp0 
)
inlinestatic

Paint on an MPLS label and fixup the TTL and EXP bits When the EXP bits are already bit shift to the correct place in in the 2nd byte (i.e.

they were read from another label)

Definition at line 340 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword mpls_mpls_label_imposition_pipe ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 906 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( mpls_mpls_label_imposition_pipe_node  ,
mpls_mpls_label_imposition_pipe   
)

Definition at line 926 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip4_mpls_label_imposition_pipe_node  ,
ip4_mpls_label_imposition_pipe   
)

Definition at line 950 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_mpls_label_imposition_pipe_node  ,
ip6_mpls_label_imposition_pipe   
)

Definition at line 974 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ethernet_mpls_label_imposition_pipe_node  ,
ethernet_mpls_label_imposition_pipe   
)

Definition at line 999 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( mpls_mpls_label_imposition_uniform_node  ,
mpls_mpls_label_imposition_uniform   
)

Definition at line 1023 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip4_mpls_label_imposition_uniform_node  ,
ip4_mpls_label_imposition_uniform   
)

Definition at line 1047 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_mpls_label_imposition_uniform_node  ,
ip6_mpls_label_imposition_uniform   
)

Definition at line 1071 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ethernet_mpls_label_imposition_uniform_node  ,
ethernet_mpls_label_imposition_uniform   
)

Definition at line 1096 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node  ,
ip4_mpls_label_imposition_pipe_no_ip_ttl_decr   
)

Definition at line 1120 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node  ,
ip6_mpls_label_imposition_pipe_no_ip_ttl_decr   
)

Definition at line 1144 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node  ,
ip4_mpls_label_imposition_uniform_no_ip_ttl_decr   
)

Definition at line 1169 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node  ,
ip6_mpls_label_imposition_uniform_no_ip_ttl_decr   
)

Definition at line 1194 of file mpls_label_dpo.c.

+ Here is the call graph for this function:

Variable Documentation

vlib_node_registration_t ethernet_mpls_label_imposition_pipe_node
Initial value:
= {
.function = ethernet_mpls_label_imposition_pipe,
.name = "ethernet-mpls-label-imposition-pipe",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "error-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_pipe_node)

Definition at line 987 of file mpls_label_dpo.c.

vlib_node_registration_t ethernet_mpls_label_imposition_uniform_node
Initial value:
= {
.function = ethernet_mpls_label_imposition_uniform,
.name = "ethernet-mpls-label-imposition-uniform",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "error-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_uniform_node)

Definition at line 1084 of file mpls_label_dpo.c.

vlib_node_registration_t ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node
Initial value:
= {
.function = ip4_mpls_label_imposition_pipe_no_ip_ttl_decr,
.name = "ip4-mpls-label-imposition-pipe-no-ip-ttl-decr",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip4-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node)

Definition at line 1109 of file mpls_label_dpo.c.

vlib_node_registration_t ip4_mpls_label_imposition_pipe_node
Initial value:
= {
.function = ip4_mpls_label_imposition_pipe,
.name = "ip4-mpls-label-imposition-pipe",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip4-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_node)

Definition at line 939 of file mpls_label_dpo.c.

vlib_node_registration_t ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node
Initial value:
= {
.function = ip4_mpls_label_imposition_uniform_no_ip_ttl_decr,
.name = "ip4-mpls-label-imposition-uniform-no-ip-ttl-decr",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip4-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node)

Definition at line 1158 of file mpls_label_dpo.c.

vlib_node_registration_t ip4_mpls_label_imposition_uniform_node
Initial value:
= {
.function = ip4_mpls_label_imposition_uniform,
.name = "ip4-mpls-label-imposition-uniform",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip4-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_node)

Definition at line 1036 of file mpls_label_dpo.c.

vlib_node_registration_t ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node
Initial value:
= {
.function = ip6_mpls_label_imposition_pipe_no_ip_ttl_decr,
.name = "ip6-mpls-label-imposition-pipe-no-ip-ttl-decr",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip6-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node)

Definition at line 1133 of file mpls_label_dpo.c.

vlib_node_registration_t ip6_mpls_label_imposition_pipe_node
Initial value:
= {
.function = ip6_mpls_label_imposition_pipe,
.name = "ip6-mpls-label-imposition-pipe",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip6-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_node)

Definition at line 963 of file mpls_label_dpo.c.

vlib_node_registration_t ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node
Initial value:
= {
.function = ip6_mpls_label_imposition_uniform_no_ip_ttl_decr,
.name = "ip6-mpls-label-imposition-uniform-no-ip-ttl-decr",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip6-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node)

Definition at line 1183 of file mpls_label_dpo.c.

vlib_node_registration_t ip6_mpls_label_imposition_uniform_node
Initial value:
= {
.function = ip6_mpls_label_imposition_uniform,
.name = "ip6-mpls-label-imposition-uniform",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "ip6-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_node)

Definition at line 1060 of file mpls_label_dpo.c.

const dpo_vft_t mld_vft
static
Initial value:
= {
.dv_lock = mpls_label_dpo_lock,
.dv_unlock = mpls_label_dpo_unlock,
.dv_format = format_mpls_label_dpo,
.dv_mem_show = mpls_label_dpo_mem_show,
.dv_mk_interpose = mpls_label_interpose,
}
u8 * format_mpls_label_dpo(u8 *s, va_list *args)
static void mpls_label_dpo_lock(dpo_id_t *dpo)
static void mpls_label_interpose(const dpo_id_t *original, const dpo_id_t *parent, dpo_id_t *clone)
Interpose a label DPO.
static void mpls_label_dpo_unlock(dpo_id_t *dpo)

Definition at line 1239 of file mpls_label_dpo.c.

const char* mpls_label_dpo_attr_names[] = MPLS_LABEL_DPO_ATTR_NAMES

Strings for the flags.

Definition at line 29 of file mpls_label_dpo.c.

mpls_label_dpo_t* mpls_label_dpo_pool

Definition at line 24 of file mpls_label_dpo.c.

dpo_type_t mpls_label_dpo_types[1<< MPLS_LABEL_DPO_ATTR_MAX]
static

registered DPO types for each of the label sub-types.

And there's a subtype for each of the flag combinations.

Definition at line 35 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_ethernet_nodes[]
static
Initial value:
=
{
"ethernet-mpls-label-imposition-pipe",
}
#define NULL
Definition: clib.h:55

Definition at line 1262 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_ip4_nodes[]
static
Initial value:
=
{
"ip4-mpls-label-imposition-pipe",
}
#define NULL
Definition: clib.h:55

Definition at line 1247 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_ip6_nodes[]
static
Initial value:
=
{
"ip6-mpls-label-imposition-pipe",
}
#define NULL
Definition: clib.h:55

Definition at line 1252 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_mpls_nodes[]
static
Initial value:
=
{
"mpls-label-imposition-pipe",
}
#define NULL
Definition: clib.h:55

Definition at line 1257 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_no_ip_tll_decr_ip4_nodes[]
static
Initial value:
=
{
"ip4-mpls-label-imposition-pipe-no-ip-ttl-decr",
}
#define NULL
Definition: clib.h:55

Definition at line 1305 of file mpls_label_dpo.c.

const char* const mpls_label_imp_pipe_no_ip_tll_decr_ip6_nodes[]
static
Initial value:
=
{
"ip6-mpls-label-imposition-pipe-no-ip-ttl-decr",
}
#define NULL
Definition: clib.h:55

Definition at line 1310 of file mpls_label_dpo.c.

const char* const* const mpls_label_imp_pipe_no_ip_tll_decr_nodes[DPO_PROTO_NUM]
static
Initial value:
=
{
}
static const char *const mpls_label_imp_pipe_no_ip_tll_decr_ip6_nodes[]
static const char *const mpls_label_imp_pipe_no_ip_tll_decr_ip4_nodes[]

Definition at line 1316 of file mpls_label_dpo.c.

const char* const* const mpls_label_imp_pipe_nodes[DPO_PROTO_NUM]
static
Initial value:
=
{
}
static const char *const mpls_label_imp_pipe_ip6_nodes[]
static const char *const mpls_label_imp_pipe_ethernet_nodes[]
static const char *const mpls_label_imp_pipe_mpls_nodes[]
static const char *const mpls_label_imp_pipe_ip4_nodes[]

Definition at line 1268 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_ethernet_nodes[]
static
Initial value:
=
{
"ethernet-mpls-label-imposition-uniform",
}
#define NULL
Definition: clib.h:55

Definition at line 1291 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_ip4_nodes[]
static
Initial value:
=
{
"ip4-mpls-label-imposition-uniform",
}
#define NULL
Definition: clib.h:55

Definition at line 1276 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_ip6_nodes[]
static
Initial value:
=
{
"ip6-mpls-label-imposition-uniform",
}
#define NULL
Definition: clib.h:55

Definition at line 1281 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_mpls_nodes[]
static
Initial value:
=
{
"mpls-label-imposition-uniform",
}
#define NULL
Definition: clib.h:55

Definition at line 1286 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_no_ip_tll_decr_ip4_nodes[]
static
Initial value:
=
{
"ip4-mpls-label-imposition-uniform-no-ip-ttl-decr",
}
#define NULL
Definition: clib.h:55

Definition at line 1322 of file mpls_label_dpo.c.

const char* const mpls_label_imp_uniform_no_ip_tll_decr_ip6_nodes[]
static
Initial value:
=
{
"ip6-mpls-label-imposition-uniform-no-ip-ttl-decr",
}
#define NULL
Definition: clib.h:55

Definition at line 1327 of file mpls_label_dpo.c.

const char* const* const mpls_label_imp_uniform_no_ip_tll_decr_nodes[DPO_PROTO_NUM]
static
Initial value:
=
{
}
static const char *const mpls_label_imp_uniform_no_ip_tll_decr_ip6_nodes[]
static const char *const mpls_label_imp_uniform_no_ip_tll_decr_ip4_nodes[]

Definition at line 1333 of file mpls_label_dpo.c.

const char* const* const mpls_label_imp_uniform_nodes[DPO_PROTO_NUM]
static
Initial value:
=
{
}
static const char *const mpls_label_imp_uniform_mpls_nodes[]
static const char *const mpls_label_imp_uniform_ethernet_nodes[]
static const char *const mpls_label_imp_uniform_ip6_nodes[]
static const char *const mpls_label_imp_uniform_ip4_nodes[]

Definition at line 1297 of file mpls_label_dpo.c.

vlib_node_registration_t mpls_mpls_label_imposition_pipe_node
Initial value:
= {
.name = "mpls-label-imposition-pipe",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "mpls-drop",
}
}
unsigned int u32
Definition: types.h:88
static uword mpls_mpls_label_imposition_pipe(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (mpls_mpls_label_imposition_pipe_node)

Definition at line 915 of file mpls_label_dpo.c.

vlib_node_registration_t mpls_mpls_label_imposition_uniform_node
Initial value:
= {
.function = mpls_mpls_label_imposition_uniform,
.name = "mpls-label-imposition-uniform",
.vector_size = sizeof (u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "mpls-drop",
}
}
unsigned int u32
Definition: types.h:88
static u8 * format_mpls_label_imposition_trace(u8 *s, va_list *args)

(constructor) VLIB_REGISTER_NODE (mpls_mpls_label_imposition_uniform_node)

Definition at line 1012 of file mpls_label_dpo.c.