FD.io VPP  v18.11-rc0-18-g2a3fb1a
Vector Packet Processing
l2_input.h File Reference
+ Include dependency graph for l2_input.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  l2_input_config_t
 
struct  l2input_main_t
 

Macros

#define L2INPUT_BVI   ((u32) (~0-1))
 
#define foreach_l2input_feat
 
#define MODE_L3   0
 
#define MODE_L2_BRIDGE   1
 
#define MODE_L2_XC   2
 
#define MODE_L2_CLASSIFY   3
 
#define MODE_ERROR_ETH   1
 
#define MODE_ERROR_BVI_DEF   2
 

Enumerations

enum  l2input_feat_t { L2INPUT_N_FEAT }
 
enum  l2input_feat_masks_t { L2INPUT_VALID_MASK }
 

Functions

static_always_inline l2_bridge_domain_tl2input_bd_config_from_index (l2input_main_t *l2im, u32 bd_index)
 
static_always_inline l2_bridge_domain_tl2input_bd_config (u32 bd_index)
 
 STATIC_ASSERT (L2INPUT_N_FEAT<=32,"too many l2 input features")
 
 STATIC_ASSERT ((u64) L2INPUT_VALID_MASK==(1ull<< L2INPUT_N_FEAT)-1,"")
 
char ** l2input_get_feat_names (void)
 Return an array of strings containing graph node names of each feature. More...
 
u8format_l2_input_features (u8 *s, va_list *args)
 
static_always_inline u8 bd_feature_flood (l2_bridge_domain_t *bd_config)
 
static_always_inline u8 bd_feature_uu_flood (l2_bridge_domain_t *bd_config)
 
static_always_inline u8 bd_feature_forward (l2_bridge_domain_t *bd_config)
 
static_always_inline u8 bd_feature_learn (l2_bridge_domain_t *bd_config)
 
static_always_inline u8 bd_feature_arp_term (l2_bridge_domain_t *bd_config)
 
l2_input_config_tl2input_intf_config (u32 sw_if_index)
 Masks for eliminating features that do not apply to a packet. More...
 
u32 l2input_intf_bitmap_enable (u32 sw_if_index, u32 feature_bitmap, u32 enable)
 Enable (or disable) the feature in the bitmap for the given interface. More...
 
u32 l2input_set_bridge_features (u32 bd_index, u32 feat_mask, u32 feat_value)
 
u32 set_int_l2_mode (vlib_main_t *vm, vnet_main_t *vnet_main, u32 mode, u32 sw_if_index, u32 bd_index, u32 bvi, u32 shg, u32 xc_sw_if_index)
 Set the subinterface to run in l2 or l3 mode. More...
 
static void vnet_update_l2_len (vlib_buffer_t *b)
 
static u32 vnet_l2_compute_flow_hash (vlib_buffer_t *b)
 

Variables

l2input_main_t l2input_main
 
vlib_node_registration_t l2input_node
 (constructor) VLIB_REGISTER_NODE (l2input_node) More...
 

Macro Definition Documentation

#define foreach_l2input_feat
Value:
_(DROP, "feature-bitmap-drop") \
_(XCONNECT, "l2-output") \
_(FLOOD, "l2-flood") \
_(ARP_TERM, "arp-term-l2bd") \
_(UU_FLOOD, "l2-flood") \
_(GBP_FWD, "gbp-fwd") \
_(FWD, "l2-fwd") \
_(RW, "l2-rw") \
_(LEARN, "l2-learn") \
_(L2_EMULATION, "l2-emulation") \
_(GBP_NULL_CLASSIFY, "gbp-null-classify") \
_(GBP_SRC_CLASSIFY, "gbp-src-classify") \
_(VTR, "l2-input-vtr") \
_(L2_IP_QOS_RECORD, "l2-ip-qos-record") \
_(VPATH, "vpath-input-l2") \
_(ACL, "l2-input-acl") \
_(POLICER_CLAS, "l2-policer-classify") \
_(INPUT_CLASSIFY, "l2-input-classify") \
_(SPAN, "span-l2-input")
DROP
Definition: error.def:41

Definition at line 106 of file l2_input.h.

#define L2INPUT_BVI   ((u32) (~0-1))

Definition at line 101 of file l2_input.h.

#define MODE_ERROR_BVI_DEF   2

Definition at line 212 of file l2_input.h.

#define MODE_ERROR_ETH   1

Definition at line 211 of file l2_input.h.

#define MODE_L2_BRIDGE   1

Definition at line 207 of file l2_input.h.

#define MODE_L2_CLASSIFY   3

Definition at line 209 of file l2_input.h.

#define MODE_L2_XC   2

Definition at line 208 of file l2_input.h.

#define MODE_L3   0

Definition at line 206 of file l2_input.h.

Enumeration Type Documentation

Enumerator
L2INPUT_VALID_MASK 

Definition at line 139 of file l2_input.h.

Enumerator
L2INPUT_N_FEAT 

Definition at line 128 of file l2_input.h.

Function Documentation

static_always_inline u8 bd_feature_arp_term ( l2_bridge_domain_t bd_config)

Definition at line 187 of file l2_input.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline u8 bd_feature_flood ( l2_bridge_domain_t bd_config)

Definition at line 160 of file l2_input.h.

+ Here is the caller graph for this function:

static_always_inline u8 bd_feature_forward ( l2_bridge_domain_t bd_config)

Definition at line 174 of file l2_input.h.

+ Here is the caller graph for this function:

static_always_inline u8 bd_feature_learn ( l2_bridge_domain_t bd_config)

Definition at line 180 of file l2_input.h.

+ Here is the caller graph for this function:

static_always_inline u8 bd_feature_uu_flood ( l2_bridge_domain_t bd_config)

Definition at line 167 of file l2_input.h.

+ Here is the caller graph for this function:

u8* format_l2_input_features ( u8 s,
va_list *  args 
)

Definition at line 66 of file l2_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline l2_bridge_domain_t* l2input_bd_config ( u32  bd_index)

Definition at line 90 of file l2_input.h.

+ Here is the caller graph for this function:

static_always_inline l2_bridge_domain_t* l2input_bd_config_from_index ( l2input_main_t l2im,
u32  bd_index 
)

Definition at line 81 of file l2_input.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char** l2input_get_feat_names ( void  )

Return an array of strings containing graph node names of each feature.

Definition at line 60 of file l2_input.c.

+ Here is the caller graph for this function:

u32 l2input_intf_bitmap_enable ( u32  sw_if_index,
u32  feature_bitmap,
u32  enable 
)

Enable (or disable) the feature in the bitmap for the given interface.

Definition at line 520 of file l2_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

l2_input_config_t* l2input_intf_config ( u32  sw_if_index)

Masks for eliminating features that do not apply to a packet.

Get a pointer to the config for the given interface

Masks for eliminating features that do not apply to a packet.

Definition at line 510 of file l2_input.c.

+ Here is the caller graph for this function:

u32 l2input_set_bridge_features ( u32  bd_index,
u32  feat_mask,
u32  feat_value 
)

Definition at line 533 of file l2_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 set_int_l2_mode ( vlib_main_t vm,
vnet_main_t vnet_main,
u32  mode,
u32  sw_if_index,
u32  bd_index,
u32  bvi,
u32  shg,
u32  xc_sw_if_index 
)

Set the subinterface to run in l2 or l3 mode.

For L3 mode, just the sw_if_index is specified. For bridged mode, the bd id and bvi flag are also specified. For xconnect mode, the peer sw_if_index is also specified. Return 0 if ok, or non-0 if there was an error.

Definition at line 551 of file l2_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

STATIC_ASSERT ( L2INPUT_N_FEAT<=  32,
"too many l2 input features"   
)
STATIC_ASSERT ( (u64 L2INPUT_VALID_MASK = =(1ull<< L2INPUT_N_FEAT)-1,
""   
)
static u32 vnet_l2_compute_flow_hash ( vlib_buffer_t b)
inlinestatic

Definition at line 261 of file l2_input.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vnet_update_l2_len ( vlib_buffer_t b)
inlinestatic

Definition at line 221 of file l2_input.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

l2input_main_t l2input_main

Definition at line 113 of file l2_input.c.

(constructor) VLIB_REGISTER_NODE (l2input_node)

Definition at line 458 of file l2_input.c.