FD.io VPP  v18.10-32-g1161dda
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

static u8format_decap_next (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 bool vxlan_gbp_decap_next_is_valid (vxlan_gbp_main_t *vxm, u32 is_ip6, u32 decap_next_index)
 
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)
 
int vnet_vxlan_gbp_tunnel_add_del (vnet_vxlan_gbp_tunnel_add_del_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_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

vxlan_gbp_main_t vxlan_gbp_main
 
static const 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

#define foreach_copy_field
Value:
_(vni) \
_(encap_fib_index) \
_(src) \
_(dst)
vl_api_address_t src
Definition: vxlan_gbp.api:33
u32 mcast_sw_if_index
Definition: vxlan_gbp.api:35
u32 decap_next_index
Definition: vxlan_gbp.api:37
vl_api_address_t dst
Definition: vxlan_gbp.api:34
u32 vni
Definition: vxlan_gbp.api:38

Definition at line 211 of file vxlan_gbp.c.

#define VXLAN_GBP_HASH_MEMORY_SIZE   (1 << 20)

Definition at line 1069 of file vxlan_gbp.c.

#define VXLAN_GBP_HASH_NUM_BUCKETS   (2 * 1024)

Definition at line 1068 of file vxlan_gbp.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 312 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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

Definition at line 36 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 110 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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

Definition at line 72 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_vxlan_gbp_tunnel ( u8 s,
va_list *  args 
)

Definition at line 48 of file vxlan_gbp.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 625 of file vxlan_gbp.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 334 of file vxlan_gbp.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 345 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 955 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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 1012 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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 911 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 840 of file vxlan_gbp.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 636 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VNET_DEVICE_CLASS ( vxlan_gbp_device_class  ,
static   
)

+ Here is the caller graph for this function:

VNET_HW_INTERFACE_CLASS ( vxlan_gbp_hw_class  )

+ Here is the caller graph for this function:

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

Definition at line 899 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vnet_vxlan_gbp_tunnel_add_del ( vnet_vxlan_gbp_tunnel_add_del_args_t a,
u32 sw_if_indexp 
)

Definition at line 356 of file vxlan_gbp.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 283 of file vxlan_gbp.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 297 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static bool vxlan_gbp_decap_next_is_valid ( vxlan_gbp_main_t vxm,
u32  is_ip6,
u32  decap_next_index 
)
static

Definition at line 271 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vxlan_gbp_init ( vlib_main_t vm)

Definition at line 1072 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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

Definition at line 90 of file vxlan_gbp.c.

+ Here is the call graph for this function:

static void vxlan_gbp_rewrite ( vxlan_gbp_tunnel_t t,
bool  is_ip6 
)
static

Definition at line 220 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 657 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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 167 of file vxlan_gbp.c.

+ Here is the call graph for this function:

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 177 of file vxlan_gbp.c.

static vxlan_gbp_tunnel_t* vxlan_gbp_tunnel_from_fib_node ( fib_node_t node)
static

Definition at line 154 of file vxlan_gbp.c.

+ Here is the caller graph for this function:

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 191 of file vxlan_gbp.c.

static void vxlan_gbp_tunnel_restack_dpo ( vxlan_gbp_tunnel_t t)
static

Definition at line 126 of file vxlan_gbp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

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]",
}
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:657

(constructor) VLIB_CLI_COMMAND (create_vxlan_gbp_tunnel_command)

Definition at line 828 of file vxlan_gbp.c.

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 ip vxlan-gbp-bypass <interface> [del]",
}
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:1012

(constructor) VLIB_CLI_COMMAND (set_interface_ip6_vxlan_gbp_bypass_command)

Definition at line 1061 of file vxlan_gbp.c.

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]",
}
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:955

(constructor) VLIB_CLI_COMMAND (set_interface_ip_vxlan_gbp_bypass_command)

Definition at line 1004 of file vxlan_gbp.c.

vlib_cli_command_t show_vxlan_gbp_tunnel_command
static
Initial value:
= {
.path = "show vxlan-gbp tunnel",
.short_help = "show vxlan-gbp tunnel [raw]",
}
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:840

(constructor) VLIB_CLI_COMMAND (show_vxlan_gbp_tunnel_command)

Definition at line 890 of file vxlan_gbp.c.

vxlan_gbp_main_t vxlan_gbp_main

Definition at line 33 of file vxlan_gbp.c.

const fib_node_vft_t vxlan_gbp_vft
static
Initial value:
= {
.fnv_back_walk = vxlan_gbp_tunnel_back_walk,
}
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:191
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:167
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:177

Definition at line 204 of file vxlan_gbp.c.