FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
interface.c File Reference
+ Include dependency graph for interface.c:

Go to the source code of this file.

Data Structures

struct  vnet_sw_hw_interface_state_t
 

Typedefs

typedef enum vnet_interface_helper_flags_t_ vnet_interface_helper_flags_t
 

Enumerations

enum  vnet_interface_helper_flags_t_ { VNET_INTERFACE_SET_FLAGS_HELPER_IS_CREATE = (1 << 0), VNET_INTERFACE_SET_FLAGS_HELPER_WANT_REDISTRIBUTE = (1 << 1) }
 

Functions

static clib_error_tvnet_hw_interface_set_flags_helper (vnet_main_t *vnm, u32 hw_if_index, vnet_hw_interface_flags_t flags, vnet_interface_helper_flags_t helper_flags)
 
static clib_error_tvnet_sw_interface_set_flags_helper (vnet_main_t *vnm, u32 sw_if_index, vnet_sw_interface_flags_t flags, vnet_interface_helper_flags_t helper_flags)
 
static clib_error_tvnet_hw_interface_set_class_helper (vnet_main_t *vnm, u32 hw_if_index, u32 hw_class_index, u32 redistribute)
 
static void serialize_vec_vnet_sw_hw_interface_state (serialize_main_t *m, va_list *va)
 
static void unserialize_vec_vnet_sw_hw_interface_state (serialize_main_t *m, va_list *va)
 
static vnet_sw_interface_flags_t vnet_hw_interface_flags_to_sw (vnet_hw_interface_flags_t hwf)
 
void serialize_vnet_interface_state (serialize_main_t *m, va_list *va)
 
static vnet_hw_interface_flags_t vnet_sw_interface_flags_to_hw (vnet_sw_interface_flags_t swf)
 
void unserialize_vnet_interface_state (serialize_main_t *m, va_list *va)
 
static clib_error_tcall_elf_section_interface_callbacks (vnet_main_t *vnm, u32 if_index, u32 flags, _vnet_interface_function_list_elt_t **elts)
 
static clib_error_tcall_hw_interface_add_del_callbacks (vnet_main_t *vnm, u32 hw_if_index, u32 is_create)
 
static clib_error_tcall_sw_interface_add_del_callbacks (vnet_main_t *vnm, u32 sw_if_index, u32 is_create)
 
clib_error_tvnet_hw_interface_set_flags (vnet_main_t *vnm, u32 hw_if_index, vnet_hw_interface_flags_t flags)
 
clib_error_tvnet_sw_interface_set_flags (vnet_main_t *vnm, u32 sw_if_index, vnet_sw_interface_flags_t flags)
 
void vnet_sw_interface_admin_up (vnet_main_t *vnm, u32 sw_if_index)
 
void vnet_sw_interface_admin_down (vnet_main_t *vnm, u32 sw_if_index)
 
static u32 vnet_create_sw_interface_no_callbacks (vnet_main_t *vnm, vnet_sw_interface_t *template)
 
clib_error_tvnet_create_sw_interface (vnet_main_t *vnm, vnet_sw_interface_t *template, u32 *sw_if_index)
 
void vnet_delete_sw_interface (vnet_main_t *vnm, u32 sw_if_index)
 
static clib_error_tcall_sw_interface_mtu_change_callbacks (vnet_main_t *vnm, u32 sw_if_index)
 
void vnet_sw_interface_set_mtu (vnet_main_t *vnm, u32 sw_if_index, u32 mtu)
 
void vnet_sw_interface_set_protocol_mtu (vnet_main_t *vnm, u32 sw_if_index, u32 mtu[])
 
void vnet_sw_interface_ip_directed_broadcast (vnet_main_t *vnm, u32 sw_if_index, u8 enable)
 
static walk_rc_t sw_interface_walk_callback (vnet_main_t *vnm, u32 sw_if_index, void *ctx)
 
void vnet_hw_interface_set_mtu (vnet_main_t *vnm, u32 hw_if_index, u32 mtu)
 
static void setup_tx_node (vlib_main_t *vm, u32 node_index, vnet_device_class_t *dev_class)
 
static void setup_output_node (vlib_main_t *vm, u32 node_index, vnet_hw_interface_class_t *hw_class)
 
u32 vnet_register_interface (vnet_main_t *vnm, u32 dev_class_index, u32 dev_instance, u32 hw_class_index, u32 hw_instance)
 
void vnet_delete_hw_interface (vnet_main_t *vnm, u32 hw_if_index)
 
void vnet_hw_interface_walk_sw (vnet_main_t *vnm, u32 hw_if_index, vnet_hw_sw_interface_walk_t fn, void *ctx)
 Walk the SW interfaces on a HW interface - this is the super interface and any sub-interfaces. More...
 
void vnet_hw_interface_walk (vnet_main_t *vnm, vnet_hw_interface_walk_t fn, void *ctx)
 Walk all the HW interface. More...
 
void vnet_sw_interface_walk (vnet_main_t *vnm, vnet_sw_interface_walk_t fn, void *ctx)
 Walk all the SW interfaces in the system. More...
 
void vnet_hw_interface_init_for_class (vnet_main_t *vnm, u32 hw_if_index, u32 hw_class_index, u32 hw_instance)
 
clib_error_tvnet_hw_interface_set_class (vnet_main_t *vnm, u32 hw_if_index, u32 hw_class_index)
 
static int vnet_hw_interface_rx_redirect_to_node_helper (vnet_main_t *vnm, u32 hw_if_index, u32 node_index, u32 redistribute)
 
int vnet_hw_interface_rx_redirect_to_node (vnet_main_t *vnm, u32 hw_if_index, u32 node_index)
 
word vnet_sw_interface_compare (vnet_main_t *vnm, uword sw_if_index0, uword sw_if_index1)
 
word vnet_hw_interface_compare (vnet_main_t *vnm, uword hw_if_index0, uword hw_if_index1)
 
int vnet_sw_interface_is_p2p (vnet_main_t *vnm, u32 sw_if_index)
 
int vnet_sw_interface_is_nbma (vnet_main_t *vnm, u32 sw_if_index)
 
clib_error_tvnet_interface_init (vlib_main_t *vm)
 
int vnet_interface_name_renumber (u32 sw_if_index, u32 new_show_dev_instance)
 
clib_error_tvnet_rename_interface (vnet_main_t *vnm, u32 hw_if_index, char *new_name)
 
clib_error_tvnet_hw_interface_add_del_mac_address (vnet_main_t *vnm, u32 hw_if_index, const u8 *mac_address, u8 is_add)
 
static clib_error_tvnet_hw_interface_change_mac_address_helper (vnet_main_t *vnm, u32 hw_if_index, const u8 *mac_address)
 
clib_error_tvnet_hw_interface_change_mac_address (vnet_main_t *vnm, u32 hw_if_index, const u8 *mac_address)
 
void vnet_sw_interface_update_unnumbered (u32 unnumbered_sw_if_index, u32 ip_sw_if_index, u8 enable)
 
vnet_l3_packet_type_t vnet_link_to_l3_proto (vnet_link_t link)
 Convert a link to to an Ethertype. More...
 
vnet_mtu_t vnet_link_to_mtu (vnet_link_t link)
 
u8default_build_rewrite (vnet_main_t *vnm, u32 sw_if_index, vnet_link_t link_type, const void *dst_address)
 Return a complete, zero-length (aka placeholder) rewrite. More...
 
void default_update_adjacency (vnet_main_t *vnm, u32 sw_if_index, u32 ai)
 Default adjacency update function. More...
 
clib_error_tvnet_hw_interface_set_rss_queues (vnet_main_t *vnm, vnet_hw_interface_t *hi, clib_bitmap_t *bitmap)
 
void collect_detailed_interface_stats_flag_set (void)
 
void collect_detailed_interface_stats_flag_clear (void)
 
static clib_error_tcollect_detailed_interface_stats_cli (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 

Variables

int collect_detailed_interface_stats_flag = 0
 
static vlib_cli_command_t collect_detailed_interface_stats_command
 (constructor) VLIB_CLI_COMMAND (collect_detailed_interface_stats_command) More...
 

Typedef Documentation

◆ vnet_interface_helper_flags_t

Enumeration Type Documentation

◆ vnet_interface_helper_flags_t_

Enumerator
VNET_INTERFACE_SET_FLAGS_HELPER_IS_CREATE 
VNET_INTERFACE_SET_FLAGS_HELPER_WANT_REDISTRIBUTE 

Definition at line 47 of file interface.c.

Function Documentation

◆ call_elf_section_interface_callbacks()

static clib_error_t* call_elf_section_interface_callbacks ( vnet_main_t vnm,
u32  if_index,
u32  flags,
_vnet_interface_function_list_elt_t **  elts 
)
static

Definition at line 235 of file interface.c.

+ Here is the caller graph for this function:

◆ call_hw_interface_add_del_callbacks()

static clib_error_t* call_hw_interface_add_del_callbacks ( vnet_main_t vnm,
u32  hw_if_index,
u32  is_create 
)
static

Definition at line 261 of file interface.c.

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

◆ call_sw_interface_add_del_callbacks()

static clib_error_t* call_sw_interface_add_del_callbacks ( vnet_main_t vnm,
u32  sw_if_index,
u32  is_create 
)
static

Definition at line 289 of file interface.c.

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

◆ call_sw_interface_mtu_change_callbacks()

static clib_error_t* call_sw_interface_mtu_change_callbacks ( vnet_main_t vnm,
u32  sw_if_index 
)
static

Definition at line 663 of file interface.c.

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

◆ collect_detailed_interface_stats_cli()

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

Definition at line 1746 of file interface.c.

+ Here is the call graph for this function:

◆ collect_detailed_interface_stats_flag_clear()

void collect_detailed_interface_stats_flag_clear ( void  )

Definition at line 1740 of file interface.c.

+ Here is the caller graph for this function:

◆ collect_detailed_interface_stats_flag_set()

void collect_detailed_interface_stats_flag_set ( void  )

Definition at line 1734 of file interface.c.

+ Here is the caller graph for this function:

◆ default_build_rewrite()

u8* default_build_rewrite ( vnet_main_t vnm,
u32  sw_if_index,
vnet_link_t  link_type,
const void *  dst_address 
)

Return a complete, zero-length (aka placeholder) rewrite.

Definition at line 1639 of file interface.c.

+ Here is the caller graph for this function:

◆ default_update_adjacency()

void default_update_adjacency ( vnet_main_t vnm,
u32  sw_if_index,
u32  ai 
)

Default adjacency update function.

Definition at line 1647 of file interface.c.

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

◆ serialize_vec_vnet_sw_hw_interface_state()

static void serialize_vec_vnet_sw_hw_interface_state ( serialize_main_t m,
va_list *  va 
)
static

Definition at line 82 of file interface.c.

+ Here is the call graph for this function:

◆ serialize_vnet_interface_state()

void serialize_vnet_interface_state ( serialize_main_t m,
va_list *  va 
)

Definition at line 124 of file interface.c.

◆ setup_output_node()

static void setup_output_node ( vlib_main_t vm,
u32  node_index,
vnet_hw_interface_class_t hw_class 
)
static

Definition at line 758 of file interface.c.

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

◆ setup_tx_node()

static void setup_tx_node ( vlib_main_t vm,
u32  node_index,
vnet_device_class_t dev_class 
)
static

Definition at line 744 of file interface.c.

+ Here is the call graph for this function:

◆ sw_interface_walk_callback()

static walk_rc_t sw_interface_walk_callback ( vnet_main_t vnm,
u32  sw_if_index,
void *  ctx 
)
static

Definition at line 722 of file interface.c.

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

◆ unserialize_vec_vnet_sw_hw_interface_state()

static void unserialize_vec_vnet_sw_hw_interface_state ( serialize_main_t m,
va_list *  va 
)
static

Definition at line 97 of file interface.c.

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

◆ unserialize_vnet_interface_state()

void unserialize_vnet_interface_state ( serialize_main_t m,
va_list *  va 
)

Definition at line 186 of file interface.c.

+ Here is the call graph for this function:

◆ vnet_create_sw_interface()

clib_error_t* vnet_create_sw_interface ( vnet_main_t vnm,
vnet_sw_interface_t template,
u32 sw_if_index 
)

Definition at line 584 of file interface.c.

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

◆ vnet_create_sw_interface_no_callbacks()

static u32 vnet_create_sw_interface_no_callbacks ( vnet_main_t vnm,
vnet_sw_interface_t template 
)
static

Definition at line 540 of file interface.c.

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

◆ vnet_delete_hw_interface()

void vnet_delete_hw_interface ( vnet_main_t vnm,
u32  hw_if_index 
)

Definition at line 984 of file interface.c.

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

◆ vnet_delete_sw_interface()

void vnet_delete_sw_interface ( vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 632 of file interface.c.

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

◆ vnet_hw_interface_add_del_mac_address()

clib_error_t* vnet_hw_interface_add_del_mac_address ( vnet_main_t vnm,
u32  hw_if_index,
const u8 mac_address,
u8  is_add 
)

Definition at line 1460 of file interface.c.

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

◆ vnet_hw_interface_change_mac_address()

clib_error_t* vnet_hw_interface_change_mac_address ( vnet_main_t vnm,
u32  hw_if_index,
const u8 mac_address 
)

Definition at line 1548 of file interface.c.

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

◆ vnet_hw_interface_change_mac_address_helper()

static clib_error_t* vnet_hw_interface_change_mac_address_helper ( vnet_main_t vnm,
u32  hw_if_index,
const u8 mac_address 
)
static

Definition at line 1502 of file interface.c.

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

◆ vnet_hw_interface_compare()

word vnet_hw_interface_compare ( vnet_main_t vnm,
uword  hw_if_index0,
uword  hw_if_index1 
)

Definition at line 1232 of file interface.c.

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

◆ vnet_hw_interface_flags_to_sw()

static vnet_sw_interface_flags_t vnet_hw_interface_flags_to_sw ( vnet_hw_interface_flags_t  hwf)
static

Definition at line 113 of file interface.c.

◆ vnet_hw_interface_init_for_class()

void vnet_hw_interface_init_for_class ( vnet_main_t vnm,
u32  hw_if_index,
u32  hw_class_index,
u32  hw_instance 
)

Definition at line 1112 of file interface.c.

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

◆ vnet_hw_interface_rx_redirect_to_node()

int vnet_hw_interface_rx_redirect_to_node ( vnet_main_t vnm,
u32  hw_if_index,
u32  node_index 
)

Definition at line 1209 of file interface.c.

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

◆ vnet_hw_interface_rx_redirect_to_node_helper()

static int vnet_hw_interface_rx_redirect_to_node_helper ( vnet_main_t vnm,
u32  hw_if_index,
u32  node_index,
u32  redistribute 
)
static

Definition at line 1190 of file interface.c.

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

◆ vnet_hw_interface_set_class()

clib_error_t* vnet_hw_interface_set_class ( vnet_main_t vnm,
u32  hw_if_index,
u32  hw_class_index 
)

Definition at line 1182 of file interface.c.

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

◆ vnet_hw_interface_set_class_helper()

static clib_error_t * vnet_hw_interface_set_class_helper ( vnet_main_t vnm,
u32  hw_if_index,
u32  hw_class_index,
u32  redistribute 
)
static

Definition at line 1125 of file interface.c.

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

◆ vnet_hw_interface_set_flags()

clib_error_t* vnet_hw_interface_set_flags ( vnet_main_t vnm,
u32  hw_if_index,
vnet_hw_interface_flags_t  flags 
)

Definition at line 498 of file interface.c.

+ Here is the call graph for this function:

◆ vnet_hw_interface_set_flags_helper()

static clib_error_t * vnet_hw_interface_set_flags_helper ( vnet_main_t vnm,
u32  hw_if_index,
vnet_hw_interface_flags_t  flags,
vnet_interface_helper_flags_t  helper_flags 
)
static

Definition at line 297 of file interface.c.

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

◆ vnet_hw_interface_set_mtu()

void vnet_hw_interface_set_mtu ( vnet_main_t vnm,
u32  hw_if_index,
u32  mtu 
)

Definition at line 730 of file interface.c.

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

◆ vnet_hw_interface_set_rss_queues()

clib_error_t* vnet_hw_interface_set_rss_queues ( vnet_main_t vnm,
vnet_hw_interface_t hi,
clib_bitmap_t bitmap 
)

Definition at line 1696 of file interface.c.

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

◆ vnet_hw_interface_walk()

void vnet_hw_interface_walk ( vnet_main_t vnm,
vnet_hw_interface_walk_t  fn,
void *  ctx 
)

Walk all the HW interface.

Definition at line 1076 of file interface.c.

+ Here is the caller graph for this function:

◆ vnet_hw_interface_walk_sw()

void vnet_hw_interface_walk_sw ( vnet_main_t vnm,
u32  hw_if_index,
vnet_hw_sw_interface_walk_t  fn,
void *  ctx 
)

Walk the SW interfaces on a HW interface - this is the super interface and any sub-interfaces.

Definition at line 1053 of file interface.c.

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

◆ vnet_interface_init()

clib_error_t* vnet_interface_init ( vlib_main_t vm)

Definition at line 1269 of file interface.c.

+ Here is the call graph for this function:

◆ vnet_interface_name_renumber()

int vnet_interface_name_renumber ( u32  sw_if_index,
u32  new_show_dev_instance 
)

Definition at line 1395 of file interface.c.

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

◆ vnet_link_to_l3_proto()

vnet_l3_packet_type_t vnet_link_to_l3_proto ( vnet_link_t  link)

Convert a link to to an Ethertype.

Definition at line 1601 of file interface.c.

+ Here is the caller graph for this function:

◆ vnet_link_to_mtu()

vnet_mtu_t vnet_link_to_mtu ( vnet_link_t  link)

Definition at line 1623 of file interface.c.

+ Here is the caller graph for this function:

◆ vnet_register_interface()

u32 vnet_register_interface ( vnet_main_t vnm,
u32  dev_class_index,
u32  dev_instance,
u32  hw_class_index,
u32  hw_instance 
)

Definition at line 768 of file interface.c.

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

◆ vnet_rename_interface()

clib_error_t* vnet_rename_interface ( vnet_main_t vnm,
u32  hw_if_index,
char *  new_name 
)

Definition at line 1424 of file interface.c.

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

◆ vnet_sw_interface_admin_down()

void vnet_sw_interface_admin_down ( vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 528 of file interface.c.

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

◆ vnet_sw_interface_admin_up()

void vnet_sw_interface_admin_up ( vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 516 of file interface.c.

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

◆ vnet_sw_interface_compare()

word vnet_sw_interface_compare ( vnet_main_t vnm,
uword  sw_if_index0,
uword  sw_if_index1 
)

Definition at line 1218 of file interface.c.

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

◆ vnet_sw_interface_flags_to_hw()

static vnet_hw_interface_flags_t vnet_sw_interface_flags_to_hw ( vnet_sw_interface_flags_t  swf)
static

Definition at line 175 of file interface.c.

+ Here is the caller graph for this function:

◆ vnet_sw_interface_ip_directed_broadcast()

void vnet_sw_interface_ip_directed_broadcast ( vnet_main_t vnm,
u32  sw_if_index,
u8  enable 
)

Definition at line 703 of file interface.c.

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

◆ vnet_sw_interface_is_nbma()

int vnet_sw_interface_is_nbma ( vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 1259 of file interface.c.

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

◆ vnet_sw_interface_is_p2p()

int vnet_sw_interface_is_p2p ( vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 1244 of file interface.c.

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

◆ vnet_sw_interface_set_flags()

clib_error_t* vnet_sw_interface_set_flags ( vnet_main_t vnm,
u32  sw_if_index,
vnet_sw_interface_flags_t  flags 
)

Definition at line 507 of file interface.c.

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

◆ vnet_sw_interface_set_flags_helper()

static clib_error_t * vnet_sw_interface_set_flags_helper ( vnet_main_t vnm,
u32  sw_if_index,
vnet_sw_interface_flags_t  flags,
vnet_interface_helper_flags_t  helper_flags 
)
static

Definition at line 346 of file interface.c.

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

◆ vnet_sw_interface_set_mtu()

void vnet_sw_interface_set_mtu ( vnet_main_t vnm,
u32  sw_if_index,
u32  mtu 
)

Definition at line 670 of file interface.c.

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

◆ vnet_sw_interface_set_protocol_mtu()

void vnet_sw_interface_set_protocol_mtu ( vnet_main_t vnm,
u32  sw_if_index,
u32  mtu[] 
)

Definition at line 682 of file interface.c.

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

◆ vnet_sw_interface_update_unnumbered()

void vnet_sw_interface_update_unnumbered ( u32  unnumbered_sw_if_index,
u32  ip_sw_if_index,
u8  enable 
)

Definition at line 1557 of file interface.c.

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

◆ vnet_sw_interface_walk()

void vnet_sw_interface_walk ( vnet_main_t vnm,
vnet_sw_interface_walk_t  fn,
void *  ctx 
)

Walk all the SW interfaces in the system.

Definition at line 1094 of file interface.c.

+ Here is the caller graph for this function:

Variable Documentation

◆ collect_detailed_interface_stats_command

vlib_cli_command_t collect_detailed_interface_stats_command
static
Initial value:
= {
.path = "interface collect detailed-stats",
.short_help = "interface collect detailed-stats <enable|disable>",
}
static clib_error_t * collect_detailed_interface_stats_cli(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: interface.c:1746

(constructor) VLIB_CLI_COMMAND (collect_detailed_interface_stats_command)

Definition at line 1778 of file interface.c.

◆ collect_detailed_interface_stats_flag

int collect_detailed_interface_stats_flag = 0

Definition at line 1731 of file interface.c.