FD.io VPP  v17.01-9-ge7dcee4
Vector Packet Processing
decap.c File Reference

Functions for decapsulating VXLAN GPE tunnels. More...

+ Include dependency graph for decap.c:

Go to the source code of this file.

Data Structures

struct  vxlan_gpe_rx_trace_t
 Struct for VXLAN GPE decap packet tracing. More...
 

Macros

#define vxlan_gpe_error(n, s)   s,
 

Functions

static u8format_vxlan_gpe_rx_trace (u8 *s, va_list *args)
 Tracing function for VXLAN GPE packet decapsulation. More...
 
static u8format_vxlan_gpe_with_length (u8 *s, va_list *args)
 Tracing function for VXLAN GPE packet decapsulation including length. More...
 
static uword vxlan_gpe_input (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, u8 is_ip4)
 Common processing for IPv4 and IPv6 VXLAN GPE decap dispatch functions. More...
 
static uword vxlan4_gpe_input (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 Graph processing dispatch function for IPv4 VXLAN GPE. More...
 
void vxlan_gpe_register_decap_protocol (u8 protocol_id, uword next_node_index)
 
void vxlan_gpe_unregister_decap_protocol (u8 protocol_id, uword next_node_index)
 
static uword vxlan6_gpe_input (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 Graph processing dispatch function for IPv6 VXLAN GPE. More...
 
 VLIB_NODE_FUNCTION_MULTIARCH (vxlan4_gpe_input_node, vxlan4_gpe_input)
 
 VLIB_NODE_FUNCTION_MULTIARCH (vxlan6_gpe_input_node, vxlan6_gpe_input)
 

Variables

vlib_node_registration_t vxlan_gpe_input_node
 
static char * vxlan_gpe_error_strings []
 VXLAN GPE error strings. More...
 
vlib_node_registration_t vxlan4_gpe_input_node
 (constructor) VLIB_REGISTER_NODE (vxlan4_gpe_input_node) More...
 
vlib_node_registration_t vxlan6_gpe_input_node
 (constructor) VLIB_REGISTER_NODE (vxlan6_gpe_input_node) More...
 

Detailed Description

Functions for decapsulating VXLAN GPE tunnels.

Definition in file decap.c.

Macro Definition Documentation

#define vxlan_gpe_error (   n,
 
)    s,

Function Documentation

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

Tracing function for VXLAN GPE packet decapsulation.

Parameters
*s
*args
Returns
*s

Definition at line 48 of file decap.c.

+ Here is the call graph for this function:

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

Tracing function for VXLAN GPE packet decapsulation including length.

Parameters
*s
*args
Returns
*s

Definition at line 76 of file decap.c.

VLIB_NODE_FUNCTION_MULTIARCH ( vxlan4_gpe_input_node  ,
vxlan4_gpe_input   
)
VLIB_NODE_FUNCTION_MULTIARCH ( vxlan6_gpe_input_node  ,
vxlan6_gpe_input   
)
static uword vxlan4_gpe_input ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Graph processing dispatch function for IPv4 VXLAN GPE.

Node Identifier:
vxlan4-gpe-input
Parameters
*vm
*node
*from_frame
Returns
from_frame->n_vectors

Definition at line 637 of file decap.c.

+ Here is the call graph for this function:

static uword vxlan6_gpe_input ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Graph processing dispatch function for IPv6 VXLAN GPE.

Node Identifier:
vxlan6-gpe-input
Parameters
*vm
*node
*from_frame
Returns
from_frame->n_vectors - uword

Definition at line 673 of file decap.c.

+ Here is the call graph for this function:

static uword vxlan_gpe_input ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
u8  is_ip4 
)
inlinestatic

Common processing for IPv4 and IPv6 VXLAN GPE decap dispatch functions.

It is worth noting that other than trivial UDP forwarding (transit), VXLAN GPE tunnels are "terminate local". This means that there is no "TX" interface for this decap case, so that field in the buffer_metadata can be "used for something else". The something else in this case is, for the IPv4/IPv6 inner-packet type case, the FIB index used to look up the inner-packet's adjacency.

 vnet_buffer(b0)->sw_if_index[VLIB_TX] = t0->decap_fib_index;
Parameters
*vm
*node
*from_frame
is_ip4
Returns
from_frame->n_vectors

ip[46] lookup in the configured FIB

Definition at line 105 of file decap.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vxlan_gpe_register_decap_protocol ( u8  protocol_id,
uword  next_node_index 
)

Definition at line 645 of file decap.c.

+ Here is the caller graph for this function:

void vxlan_gpe_unregister_decap_protocol ( u8  protocol_id,
uword  next_node_index 
)

Definition at line 653 of file decap.c.

Variable Documentation

vlib_node_registration_t vxlan4_gpe_input_node
Initial value:
= {
.function = vxlan4_gpe_input,
.name = "vxlan4-gpe-input",
.vector_size = sizeof (u32),
.error_strings = vxlan_gpe_error_strings,
.n_next_nodes = VXLAN_GPE_INPUT_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_buffer = format_vxlan_gpe_with_length,
.format_trace = format_vxlan_gpe_rx_trace,
}
bad routing header type(not 4)") sr_error (NO_MORE_SEGMENTS
static char * vxlan_gpe_error_strings[]
VXLAN GPE error strings.
Definition: decap.c:682
static uword vxlan4_gpe_input(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Graph processing dispatch function for IPv4 VXLAN GPE.
Definition: decap.c:637
#define ARRAY_LEN(x)
Definition: clib.h:59
#define foreach_vxlan_gpe_input_next
next nodes for VXLAN GPE input
Definition: vxlan_gpe.h:129
unsigned int u32
Definition: types.h:88
static u8 * format_vxlan_gpe_with_length(u8 *s, va_list *args)
Tracing function for VXLAN GPE packet decapsulation including length.
Definition: decap.c:76
static u8 * format_vxlan_gpe_rx_trace(u8 *s, va_list *args)
Tracing function for VXLAN GPE packet decapsulation.
Definition: decap.c:48

(constructor) VLIB_REGISTER_NODE (vxlan4_gpe_input_node)

Definition at line 689 of file decap.c.

vlib_node_registration_t vxlan6_gpe_input_node
Initial value:
= {
.function = vxlan6_gpe_input,
.name = "vxlan6-gpe-input",
.vector_size = sizeof (u32),
.error_strings = vxlan_gpe_error_strings,
.n_next_nodes = VXLAN_GPE_INPUT_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_buffer = format_vxlan_gpe_with_length,
.format_trace = format_vxlan_gpe_rx_trace,
}
bad routing header type(not 4)") sr_error (NO_MORE_SEGMENTS
static char * vxlan_gpe_error_strings[]
VXLAN GPE error strings.
Definition: decap.c:682
#define ARRAY_LEN(x)
Definition: clib.h:59
#define foreach_vxlan_gpe_input_next
next nodes for VXLAN GPE input
Definition: vxlan_gpe.h:129
unsigned int u32
Definition: types.h:88
static u8 * format_vxlan_gpe_with_length(u8 *s, va_list *args)
Tracing function for VXLAN GPE packet decapsulation including length.
Definition: decap.c:76
static uword vxlan6_gpe_input(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Graph processing dispatch function for IPv6 VXLAN GPE.
Definition: decap.c:673
static u8 * format_vxlan_gpe_rx_trace(u8 *s, va_list *args)
Tracing function for VXLAN GPE packet decapsulation.
Definition: decap.c:48

(constructor) VLIB_REGISTER_NODE (vxlan6_gpe_input_node)

Definition at line 712 of file decap.c.

char* vxlan_gpe_error_strings[]
static
Initial value:
= {
#define vxlan_gpe_error(n,s)
vxlan_gpe_error (DECAPSULATED, "good packets decapsulated")
vxlan_gpe_error (NO_SUCH_TUNNEL, "no such tunnel packets")
}
#define vxlan_gpe_error(n, s)

VXLAN GPE error strings.

Definition at line 682 of file decap.c.

vlib_node_registration_t vxlan_gpe_input_node

Definition at line 27 of file decap.c.