FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
vxlan_gbp.c File Reference

VXLAN GBP. More...

+ Include dependency graph for vxlan_gbp.c:

Go to the source code of this file.

Macros

#define foreach_copy_field
 
#define VXLAN_GBP_HASH_NUM_BUCKETS   (2 * 1024)
 
#define VXLAN_GBP_HASH_MEMORY_SIZE   (1 << 20)
 

Functions

u8format_vxlan_gbp_tunnel_mode (u8 *s, va_list *args)
 
u8format_vxlan_gbp_tunnel (u8 *s, va_list *args)
 
static u8format_vxlan_gbp_name (u8 *s, va_list *args)
 
static clib_error_tvxlan_gbp_interface_admin_up_down (vnet_main_t *vnm, u32 hw_if_index, u32 flags)
 
 VNET_DEVICE_CLASS (vxlan_gbp_device_class, static)
 
static u8format_vxlan_gbp_header_with_length (u8 *s, va_list *args)
 
 VNET_HW_INTERFACE_CLASS (vxlan_gbp_hw_class)
 
static void vxlan_gbp_tunnel_restack_dpo (vxlan_gbp_tunnel_t *t)
 
static vxlan_gbp_tunnel_tvxlan_gbp_tunnel_from_fib_node (fib_node_t *node)
 
static fib_node_back_walk_rc_t vxlan_gbp_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 VXLAN DIP to encap node. More...
 
static fib_node_tvxlan_gbp_tunnel_fib_node_get (fib_node_index_t index)
 Function definition to get a FIB node from its index. More...
 
static void vxlan_gbp_tunnel_last_lock_gone (fib_node_t *node)
 Function definition to inform the FIB node that its last lock has gone. More...
 
static void vxlan_gbp_rewrite (vxlan_gbp_tunnel_t *t, bool is_ip6)
 
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)
 
void vxlan_gbp_register_udp_ports (void)
 
void vxlan_gbp_unregister_udp_ports (void)
 
int vnet_vxlan_gbp_tunnel_add_del (vnet_vxlan_gbp_tunnel_add_del_args_t *a, u32 *sw_if_indexp)
 
int vnet_vxlan_gbp_tunnel_del (u32 sw_if_index)
 
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_tvxlan_gbp_tunnel_add_del_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tshow_vxlan_gbp_tunnel_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void vnet_int_vxlan_gbp_bypass_mode (u32 sw_if_index, u8 is_ip6, u8 is_enable)
 
static clib_error_tset_ip_vxlan_gbp_bypass (u32 is_ip6, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tset_ip4_vxlan_gbp_bypass (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tset_ip6_vxlan_gbp_bypass (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
clib_error_tvxlan_gbp_init (vlib_main_t *vm)
 

Variables

static vlib_punt_hdl_t punt_hdl
 
vxlan_gbp_main_t vxlan_gbp_main
 
const static fib_node_vft_t vxlan_gbp_vft
 
static vlib_cli_command_t create_vxlan_gbp_tunnel_command
 (constructor) VLIB_CLI_COMMAND (create_vxlan_gbp_tunnel_command) More...
 
static vlib_cli_command_t show_vxlan_gbp_tunnel_command
 (constructor) VLIB_CLI_COMMAND (show_vxlan_gbp_tunnel_command) More...
 
static vlib_cli_command_t set_interface_ip_vxlan_gbp_bypass_command
 (constructor) VLIB_CLI_COMMAND (set_interface_ip_vxlan_gbp_bypass_command) More...
 
static vlib_cli_command_t set_interface_ip6_vxlan_gbp_bypass_command
 (constructor) VLIB_CLI_COMMAND (set_interface_ip6_vxlan_gbp_bypass_command) More...
 

Detailed Description

VXLAN GBP.

VXLAN GBP provides the features of vxlan and carry group policy id.

Definition in file vxlan_gbp.c.

Macro Definition Documentation

◆ foreach_copy_field

#define foreach_copy_field
Value:
_(vni) \
_(mode) \
_(encap_fib_index) \
_(src) \
_(dst)

Definition at line 216 of file vxlan_gbp.c.

◆ VXLAN_GBP_HASH_MEMORY_SIZE

#define VXLAN_GBP_HASH_MEMORY_SIZE   (1 << 20)

Definition at line 1141 of file vxlan_gbp.c.

◆ VXLAN_GBP_HASH_NUM_BUCKETS

#define VXLAN_GBP_HASH_NUM_BUCKETS   (2 * 1024)

Definition at line 1140 of file vxlan_gbp.c.

Function Documentation

◆ CLIB_PACKED()

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

Definition at line 305 of file vxlan_gbp.c.

◆ format_vxlan_gbp_header_with_length()

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

Definition at line 115 of file vxlan_gbp.c.

◆ format_vxlan_gbp_name()

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

Definition at line 77 of file vxlan_gbp.c.

◆ format_vxlan_gbp_tunnel()

u8* format_vxlan_gbp_tunnel ( u8 s,
va_list *  args 
)

Definition at line 55 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_vxlan_gbp_tunnel_mode()

u8* format_vxlan_gbp_tunnel_mode ( u8 s,
va_list *  args 
)

Definition at line 38 of file vxlan_gbp.c.

+ Here is the caller graph for this function:

◆ get_decap_next_for_node()

static uword get_decap_next_for_node ( u32  node_index,
u32  ipv4_set 
)
static

Definition at line 696 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mcast_shared_add()

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

Definition at line 327 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mcast_shared_remove()

static void mcast_shared_remove ( ip46_address_t *  dst)
inlinestatic

Definition at line 338 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_ip4_vxlan_gbp_bypass()

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

Definition at line 1027 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ set_ip6_vxlan_gbp_bypass()

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

Definition at line 1084 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ set_ip_vxlan_gbp_bypass()

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

Definition at line 983 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ show_vxlan_gbp_tunnel_command_fn()

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

Definition at line 912 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ unformat_decap_next()

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

Definition at line 707 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ VNET_DEVICE_CLASS()

VNET_DEVICE_CLASS ( vxlan_gbp_device_class  ,
static   
)

◆ VNET_HW_INTERFACE_CLASS()

VNET_HW_INTERFACE_CLASS ( vxlan_gbp_hw_class  )

◆ vnet_int_vxlan_gbp_bypass_mode()

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

Definition at line 971 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_vxlan_gbp_tunnel_add_del()

int vnet_vxlan_gbp_tunnel_add_del ( vnet_vxlan_gbp_tunnel_add_del_args_t a,
u32 sw_if_indexp 
)

Definition at line 385 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_vxlan_gbp_tunnel_del()

int vnet_vxlan_gbp_tunnel_del ( u32  sw_if_index)

Definition at line 666 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vtep_addr_ref()

static uword vtep_addr_ref ( ip46_address_t *  ip)
static

Definition at line 276 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vtep_addr_unref()

static uword vtep_addr_unref ( ip46_address_t *  ip)
static

Definition at line 290 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vxlan_gbp_init()

clib_error_t* vxlan_gbp_init ( vlib_main_t vm)

Definition at line 1144 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ vxlan_gbp_interface_admin_up_down()

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

Definition at line 95 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ vxlan_gbp_register_udp_ports()

void vxlan_gbp_register_udp_ports ( void  )
inline

Definition at line 349 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vxlan_gbp_rewrite()

static void vxlan_gbp_rewrite ( vxlan_gbp_tunnel_t t,
bool  is_ip6 
)
static

Definition at line 225 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vxlan_gbp_tunnel_add_del_command_fn()

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

Definition at line 728 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ vxlan_gbp_tunnel_back_walk()

static fib_node_back_walk_rc_t vxlan_gbp_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 VXLAN DIP to encap node.

Definition at line 172 of file vxlan_gbp.c.

+ Here is the call graph for this function:

◆ vxlan_gbp_tunnel_fib_node_get()

static fib_node_t* vxlan_gbp_tunnel_fib_node_get ( fib_node_index_t  index)
static

Function definition to get a FIB node from its index.

Definition at line 182 of file vxlan_gbp.c.

◆ vxlan_gbp_tunnel_from_fib_node()

static vxlan_gbp_tunnel_t* vxlan_gbp_tunnel_from_fib_node ( fib_node_t node)
static

Definition at line 159 of file vxlan_gbp.c.

+ Here is the caller graph for this function:

◆ vxlan_gbp_tunnel_last_lock_gone()

static void vxlan_gbp_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 196 of file vxlan_gbp.c.

◆ vxlan_gbp_tunnel_restack_dpo()

static void vxlan_gbp_tunnel_restack_dpo ( vxlan_gbp_tunnel_t t)
static

Definition at line 131 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vxlan_gbp_unregister_udp_ports()

void vxlan_gbp_unregister_udp_ports ( void  )
inline

Definition at line 367 of file vxlan_gbp.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ create_vxlan_gbp_tunnel_command

vlib_cli_command_t create_vxlan_gbp_tunnel_command
static
Initial value:
= {
.path = "create vxlan-gbp tunnel",
.short_help =
"create vxlan-gbp tunnel src <local-vtep-addr>"
" {dst <remote-vtep-addr>|group <mcast-vtep-addr> <intf-name>} vni <nn>"
" [instance <id>]"
" [encap-vrf-id <nn>] [decap-next [l2|node <name>]] [del]",
}

(constructor) VLIB_CLI_COMMAND (create_vxlan_gbp_tunnel_command)

Definition at line 900 of file vxlan_gbp.c.

◆ punt_hdl

vlib_punt_hdl_t punt_hdl
static

Definition at line 33 of file vxlan_gbp.c.

◆ set_interface_ip6_vxlan_gbp_bypass_command

vlib_cli_command_t set_interface_ip6_vxlan_gbp_bypass_command
static
Initial value:
= {
.path = "set interface ip6 vxlan-gbp-bypass",
.short_help = "set interface ip6 vxlan-gbp-bypass <interface> [del]",
}

(constructor) VLIB_CLI_COMMAND (set_interface_ip6_vxlan_gbp_bypass_command)

Definition at line 1133 of file vxlan_gbp.c.

◆ set_interface_ip_vxlan_gbp_bypass_command

vlib_cli_command_t set_interface_ip_vxlan_gbp_bypass_command
static
Initial value:
= {
.path = "set interface ip vxlan-gbp-bypass",
.short_help = "set interface ip vxlan-gbp-bypass <interface> [del]",
}

(constructor) VLIB_CLI_COMMAND (set_interface_ip_vxlan_gbp_bypass_command)

Definition at line 1076 of file vxlan_gbp.c.

◆ show_vxlan_gbp_tunnel_command

vlib_cli_command_t show_vxlan_gbp_tunnel_command
static
Initial value:
= {
.path = "show vxlan-gbp tunnel",
.short_help = "show vxlan-gbp tunnel [raw]",
}

(constructor) VLIB_CLI_COMMAND (show_vxlan_gbp_tunnel_command)

Definition at line 962 of file vxlan_gbp.c.

◆ vxlan_gbp_main

vxlan_gbp_main_t vxlan_gbp_main

Definition at line 35 of file vxlan_gbp.c.

◆ vxlan_gbp_vft

const static fib_node_vft_t vxlan_gbp_vft
static
Initial value:

Definition at line 209 of file vxlan_gbp.c.

vxlan_gbp_tunnel_back_walk
static fib_node_back_walk_rc_t vxlan_gbp_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 VXLAN DIP to encap n...
Definition: vxlan_gbp.c:172
set_ip4_vxlan_gbp_bypass
static clib_error_t * set_ip4_vxlan_gbp_bypass(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: vxlan_gbp.c:1027
vni
u32 vni
Definition: flow_types.api:160
show_vxlan_gbp_tunnel_command_fn
static clib_error_t * show_vxlan_gbp_tunnel_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: vxlan_gbp.c:912
mode
vl_api_tunnel_mode_t mode
Definition: gre.api:48
vxlan_gbp_tunnel_add_del_command_fn
static clib_error_t * vxlan_gbp_tunnel_add_del_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: vxlan_gbp.c:728
set_ip6_vxlan_gbp_bypass
static clib_error_t * set_ip6_vxlan_gbp_bypass(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: vxlan_gbp.c:1084
vxlan_gbp_tunnel_last_lock_gone
static void vxlan_gbp_tunnel_last_lock_gone(fib_node_t *node)
Function definition to inform the FIB node that its last lock has gone.
Definition: vxlan_gbp.c:196
src
vl_api_address_t src
Definition: gre.api:54
vxlan_gbp_tunnel_fib_node_get
static fib_node_t * vxlan_gbp_tunnel_fib_node_get(fib_node_index_t index)
Function definition to get a FIB node from its index.
Definition: vxlan_gbp.c:182
mcast_sw_if_index
vl_api_interface_index_t mcast_sw_if_index
Definition: vxlan_gbp.api:41
dst
vl_api_ip4_address_t dst
Definition: pnat.api:41