FD.io VPP  v17.07-30-g839fa73
Vector Packet Processing
gtpu.c File Reference
+ Include dependency graph for gtpu.c:

Go to the source code of this file.

Macros

#define foreach_copy_field
 

Functions

static u8format_decap_next (u8 *s, va_list *args)
 
u8format_gtpu_tunnel (u8 *s, va_list *args)
 
static u8format_gtpu_name (u8 *s, va_list *args)
 
static uword dummy_interface_tx (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static clib_error_tgtpu_interface_admin_up_down (vnet_main_t *vnm, u32 hw_if_index, u32 flags)
 
 VNET_DEVICE_CLASS (gtpu_device_class, static)
 
static u8format_gtpu_header_with_length (u8 *s, va_list *args)
 
 VNET_HW_INTERFACE_CLASS (gtpu_hw_class)
 
static void gtpu_tunnel_restack_dpo (gtpu_tunnel_t *t)
 
static gtpu_tunnel_tgtpu_tunnel_from_fib_node (fib_node_t *node)
 
static fib_node_back_walk_rc_t gtpu_tunnel_back_walk (fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
 Function definition to backwalk a FIB node - Here we will restack the new dpo of GTPU DIP to encap node. More...
 
static fib_node_tgtpu_tunnel_fib_node_get (fib_node_index_t index)
 Function definition to get a FIB node from its index. More...
 
static void gtpu_tunnel_last_lock_gone (fib_node_t *node)
 Function definition to inform the FIB node that its last lock has gone. More...
 
static void ip_udp_gtpu_rewrite (gtpu_tunnel_t *t, bool is_ip6)
 
static bool gtpu_decap_next_is_valid (gtpu_main_t *gtm, u32 is_ip6, u32 decap_next_index)
 
static void hash_set_key_copy (uword **h, void *key, uword v)
 
static void hash_unset_key_free (uword **h, void *key)
 
static uword vtep_addr_ref (ip46_address_t *ip)
 
static uword vtep_addr_unref (ip46_address_t *ip)
 
typedef CLIB_PACKED (union{struct{fib_node_index_t mfib_entry_index;adj_index_t mcast_adj_index;};u64 as_u64;})
 
static void mcast_shared_add (ip46_address_t *dst, fib_node_index_t mfei, adj_index_t ai)
 
static void mcast_shared_remove (ip46_address_t *dst)
 
static fib_protocol_t fib_ip_proto (bool is_ip6)
 
int vnet_gtpu_add_del_tunnel (vnet_gtpu_add_del_tunnel_args_t *a, u32 *sw_if_indexp)
 
static uword get_decap_next_for_node (u32 node_index, u32 ipv4_set)
 
static uword unformat_decap_next (unformat_input_t *input, va_list *args)
 
static clib_error_tgtpu_add_del_tunnel_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tshow_gtpu_tunnel_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void vnet_int_gtpu_bypass_mode (u32 sw_if_index, u8 is_ip6, u8 is_enable)
 
static clib_error_tset_ip_gtpu_bypass (u32 is_ip6, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tset_ip4_gtpu_bypass (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tset_ip6_gtpu_bypass (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
clib_error_tgtpu_init (vlib_main_t *vm)
 
 VLIB_PLUGIN_REGISTER ()
 

Variables

gtpu_main_t gtpu_main
 
static const fib_node_vft_t gtpu_vft
 
static vlib_cli_command_t create_gtpu_tunnel_command
 (constructor) VLIB_CLI_COMMAND (create_gtpu_tunnel_command) More...
 
static vlib_cli_command_t show_gtpu_tunnel_command
 (constructor) VLIB_CLI_COMMAND (show_gtpu_tunnel_command) More...
 
static vlib_cli_command_t set_interface_ip_gtpu_bypass_command
 (constructor) VLIB_CLI_COMMAND (set_interface_ip_gtpu_bypass_command) More...
 
static vlib_cli_command_t set_interface_ip6_gtpu_bypass_command
 (constructor) VLIB_CLI_COMMAND (set_interface_ip6_gtpu_bypass_command) More...
 

Macro Definition Documentation

#define foreach_copy_field
Value:
_(teid) \
_(mcast_sw_if_index) \
_(encap_fib_index) \
_(decap_next_index) \
_(src) \
_(dst)

Definition at line 201 of file gtpu.c.

Function Documentation

typedef CLIB_PACKED ( union{struct{fib_node_index_t mfib_entry_index;adj_index_t mcast_adj_index;};u64 as_u64;}  )

Definition at line 330 of file gtpu.c.

+ Here is the call graph for this function:

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

Definition at line 87 of file gtpu.c.

+ Here is the caller graph for this function:

static fib_protocol_t fib_ip_proto ( bool  is_ip6)
inlinestatic

Definition at line 373 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 38 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 115 of file gtpu.c.

+ Here is the call graph for this function:

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

Definition at line 80 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_gtpu_tunnel ( u8 s,
va_list *  args 
)

Definition at line 59 of file gtpu.c.

+ Here is the call graph for this function:

static uword get_decap_next_for_node ( u32  node_index,
u32  ipv4_set 
)
static

Definition at line 634 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* gtpu_add_del_tunnel_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 671 of file gtpu.c.

+ Here is the call graph for this function:

static bool gtpu_decap_next_is_valid ( gtpu_main_t gtm,
u32  is_ip6,
u32  decap_next_index 
)
static

Definition at line 273 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* gtpu_init ( vlib_main_t vm)

Definition at line 1096 of file gtpu.c.

+ Here is the call graph for this function:

static clib_error_t* gtpu_interface_admin_up_down ( vnet_main_t vnm,
u32  hw_if_index,
u32  flags 
)
static

Definition at line 95 of file gtpu.c.

+ Here is the call graph for this function:

static fib_node_back_walk_rc_t gtpu_tunnel_back_walk ( fib_node_t node,
fib_node_back_walk_ctx_t ctx 
)
static

Function definition to backwalk a FIB node - Here we will restack the new dpo of GTPU DIP to encap node.

Definition at line 157 of file gtpu.c.

+ Here is the call graph for this function:

static fib_node_t* gtpu_tunnel_fib_node_get ( fib_node_index_t  index)
static

Function definition to get a FIB node from its index.

Definition at line 167 of file gtpu.c.

static gtpu_tunnel_t* gtpu_tunnel_from_fib_node ( fib_node_t node)
static

Definition at line 146 of file gtpu.c.

+ Here is the caller graph for this function:

static void gtpu_tunnel_last_lock_gone ( fib_node_t node)
static

Function definition to inform the FIB node that its last lock has gone.

Definition at line 181 of file gtpu.c.

static void gtpu_tunnel_restack_dpo ( gtpu_tunnel_t t)
static

Definition at line 132 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void hash_set_key_copy ( uword **  h,
void *  key,
uword  v 
)
static

Definition at line 283 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void hash_unset_key_free ( uword **  h,
void *  key 
)
static

Definition at line 292 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip_udp_gtpu_rewrite ( gtpu_tunnel_t t,
bool  is_ip6 
)
static

Definition at line 210 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void mcast_shared_add ( ip46_address_t *  dst,
fib_node_index_t  mfei,
adj_index_t  ai 
)
inlinestatic

Definition at line 351 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void mcast_shared_remove ( ip46_address_t *  dst)
inlinestatic

Definition at line 362 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* set_ip4_gtpu_bypass ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 982 of file gtpu.c.

+ Here is the call graph for this function:

static clib_error_t* set_ip6_gtpu_bypass ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 1039 of file gtpu.c.

+ Here is the call graph for this function:

static clib_error_t* set_ip_gtpu_bypass ( u32  is_ip6,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 938 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* show_gtpu_tunnel_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 889 of file gtpu.c.

+ Here is the call graph for this function:

static uword unformat_decap_next ( unformat_input_t input,
va_list *  args 
)
static

Definition at line 645 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VLIB_PLUGIN_REGISTER ( )

+ Here is the caller graph for this function:

VNET_DEVICE_CLASS ( gtpu_device_class  ,
static   
)

+ Here is the caller graph for this function:

int vnet_gtpu_add_del_tunnel ( vnet_gtpu_add_del_tunnel_args_t a,
u32 sw_if_indexp 
)

Definition at line 379 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VNET_HW_INTERFACE_CLASS ( gtpu_hw_class  )

+ Here is the caller graph for this function:

void vnet_int_gtpu_bypass_mode ( u32  sw_if_index,
u8  is_ip6,
u8  is_enable 
)

Definition at line 927 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vtep_addr_ref ( ip46_address_t *  ip)
static

Definition at line 302 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vtep_addr_unref ( ip46_address_t *  ip)
static

Definition at line 316 of file gtpu.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

vlib_cli_command_t create_gtpu_tunnel_command
static
Initial value:
= {
.path = "create gtpu tunnel",
.short_help =
"create gtpu tunnel src <local-vtep-addr>"
" {dst <remote-vtep-addr>|group <mcast-vtep-addr> <intf-name>} teid <nn>"
" [encap-vrf-id <nn>] [decap-next [l2|ip4|ip6|node <name>]] [del]",
}
static clib_error_t * gtpu_add_del_tunnel_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: gtpu.c:671

(constructor) VLIB_CLI_COMMAND (create_gtpu_tunnel_command)

Definition at line 878 of file gtpu.c.

gtpu_main_t gtpu_main

Definition at line 35 of file gtpu.c.

const fib_node_vft_t gtpu_vft
static
Initial value:
= {
.fnv_last_lock = gtpu_tunnel_last_lock_gone,
.fnv_back_walk = gtpu_tunnel_back_walk,
}
static fib_node_t * gtpu_tunnel_fib_node_get(fib_node_index_t index)
Function definition to get a FIB node from its index.
Definition: gtpu.c:167
static fib_node_back_walk_rc_t gtpu_tunnel_back_walk(fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
Function definition to backwalk a FIB node - Here we will restack the new dpo of GTPU DIP to encap no...
Definition: gtpu.c:157
static void gtpu_tunnel_last_lock_gone(fib_node_t *node)
Function definition to inform the FIB node that its last lock has gone.
Definition: gtpu.c:181

Definition at line 194 of file gtpu.c.

vlib_cli_command_t set_interface_ip6_gtpu_bypass_command
static
Initial value:
= {
.path = "set interface ip6 gtpu-bypass",
.function = set_ip6_gtpu_bypass,
.short_help = "set interface ip gtpu-bypass <interface> [del]",
}
static clib_error_t * set_ip6_gtpu_bypass(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: gtpu.c:1039

(constructor) VLIB_CLI_COMMAND (set_interface_ip6_gtpu_bypass_command)

Definition at line 1088 of file gtpu.c.

vlib_cli_command_t set_interface_ip_gtpu_bypass_command
static
Initial value:
= {
.path = "set interface ip gtpu-bypass",
.function = set_ip4_gtpu_bypass,
.short_help = "set interface ip gtpu-bypass <interface> [del]",
}
static clib_error_t * set_ip4_gtpu_bypass(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: gtpu.c:982

(constructor) VLIB_CLI_COMMAND (set_interface_ip_gtpu_bypass_command)

Definition at line 1031 of file gtpu.c.

vlib_cli_command_t show_gtpu_tunnel_command
static
Initial value:
= {
.path = "show gtpu tunnel",
.short_help = "show gtpu tunnel",
}
static clib_error_t * show_gtpu_tunnel_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: gtpu.c:889

(constructor) VLIB_CLI_COMMAND (show_gtpu_tunnel_command)

Definition at line 919 of file gtpu.c.