FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
interface_api.c File Reference
+ Include dependency graph for interface_api.c:

Go to the source code of this file.

Macros

#define vl_typedefs   /* define message structures */
 
#define vl_endianfun   /* define message structures */
 
#define vl_print(handle, ...)   vlib_cli_output (handle, __VA_ARGS__)
 
#define vl_printfun
 
#define foreach_vpe_api_msg
 
#define vl_msg_name_crc_list
 

Enumerations

enum  api_events {
  API_LINK_STATE_UP_EVENT = 1 << 1, API_LINK_STATE_DOWN_EVENT = 1 << 2, API_ADMIN_UP_EVENT = 1 << 3, API_ADMIN_DOWN_EVENT = 1 << 4,
  API_SW_INTERFACE_ADD_EVENT = 1 << 5, API_SW_INTERFACE_DEL_EVENT = 1 << 6
}
 

Functions

static void vl_api_sw_interface_set_flags_t_handler (vl_api_sw_interface_set_flags_t *mp)
 
static void vl_api_sw_interface_set_promisc_t_handler (vl_api_sw_interface_set_promisc_t *mp)
 
static void vl_api_hw_interface_set_mtu_t_handler (vl_api_hw_interface_set_mtu_t *mp)
 
static void vl_api_sw_interface_set_mtu_t_handler (vl_api_sw_interface_set_mtu_t *mp)
 
static void vl_api_sw_interface_set_ip_directed_broadcast_t_handler (vl_api_sw_interface_set_ip_directed_broadcast_t *mp)
 
static void send_sw_interface_details (vpe_api_main_t *am, vl_api_registration_t *rp, vnet_sw_interface_t *swif, u8 *interface_name, u32 context)
 
static void vl_api_sw_interface_dump_t_handler (vl_api_sw_interface_dump_t *mp)
 
static void vl_api_sw_interface_add_del_address_t_handler (vl_api_sw_interface_add_del_address_t *mp)
 
static void vl_api_sw_interface_set_table_t_handler (vl_api_sw_interface_set_table_t *mp)
 
int ip_table_bind (fib_protocol_t fproto, u32 sw_if_index, u32 table_id, u8 is_api)
 
static void send_sw_interface_get_table_reply (vl_api_registration_t *reg, u32 context, int retval, u32 vrf_id)
 
static void vl_api_sw_interface_get_table_t_handler (vl_api_sw_interface_get_table_t *mp)
 
static void vl_api_sw_interface_set_unnumbered_t_handler (vl_api_sw_interface_set_unnumbered_t *mp)
 
static void vl_api_sw_interface_clear_stats_t_handler (vl_api_sw_interface_clear_stats_t *mp)
 
static void send_sw_interface_event (vpe_api_main_t *am, vpe_client_registration_t *reg, vl_api_registration_t *vl_reg, u32 sw_if_index, enum api_events events)
 
static uword link_state_process (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 
static clib_error_tlink_up_down_function (vnet_main_t *vm, u32 hw_if_index, u32 flags)
 
static clib_error_tadmin_up_down_function (vnet_main_t *vm, u32 hw_if_index, u32 flags)
 
static clib_error_tsw_interface_add_del_function (vnet_main_t *vm, u32 sw_if_index, u32 flags)
 
 VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION (admin_up_down_function)
 
 VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION (link_up_down_function)
 
 VNET_SW_INTERFACE_ADD_DEL_FUNCTION (sw_interface_add_del_function)
 
static void vl_api_sw_interface_tag_add_del_t_handler (vl_api_sw_interface_tag_add_del_t *mp)
 
static void vl_api_sw_interface_add_del_mac_address_t_handler (vl_api_sw_interface_add_del_mac_address_t *mp)
 
static void vl_api_sw_interface_set_mac_address_t_handler (vl_api_sw_interface_set_mac_address_t *mp)
 
static void vl_api_sw_interface_get_mac_address_t_handler (vl_api_sw_interface_get_mac_address_t *mp)
 
static void vl_api_sw_interface_set_rx_mode_t_handler (vl_api_sw_interface_set_rx_mode_t *mp)
 
static void send_interface_rx_placement_details (vpe_api_main_t *am, vl_api_registration_t *rp, u32 sw_if_index, u32 worker_id, u32 queue_id, u8 mode, u32 context)
 
static void vl_api_sw_interface_rx_placement_dump_t_handler (vl_api_sw_interface_rx_placement_dump_t *mp)
 
static void vl_api_sw_interface_set_rx_placement_t_handler (vl_api_sw_interface_set_rx_placement_t *mp)
 
static void vl_api_create_vlan_subif_t_handler (vl_api_create_vlan_subif_t *mp)
 
static void vl_api_create_subif_t_handler (vl_api_create_subif_t *mp)
 
static void vl_api_delete_subif_t_handler (vl_api_delete_subif_t *mp)
 
static void vl_api_interface_name_renumber_t_handler (vl_api_interface_name_renumber_t *mp)
 
static void vl_api_create_loopback_t_handler (vl_api_create_loopback_t *mp)
 
static void vl_api_create_loopback_instance_t_handler (vl_api_create_loopback_instance_t *mp)
 
static void vl_api_delete_loopback_t_handler (vl_api_delete_loopback_t *mp)
 
static void vl_api_collect_detailed_interface_stats_t_handler (vl_api_collect_detailed_interface_stats_t *mp)
 
static void vl_api_sw_interface_address_replace_begin_t_handler (vl_api_sw_interface_address_replace_begin_t *mp)
 
static void vl_api_sw_interface_address_replace_end_t_handler (vl_api_sw_interface_address_replace_end_t *mp)
 
static void setup_message_id_table (api_main_t *am)
 
 pub_sub_handler (interface_events, INTERFACE_EVENTS)
 
static clib_error_tinterface_api_hookup (vlib_main_t *vm)
 
 VLIB_API_INIT_FUNCTION (interface_api_hookup)
 

Variables

vpe_api_main_t vpe_api_main
 
static vlib_node_registration_t link_state_process_node
 (constructor) VLIB_REGISTER_NODE (link_state_process_node) More...
 

Macro Definition Documentation

◆ foreach_vpe_api_msg

#define foreach_vpe_api_msg
Value:
_ (SW_INTERFACE_SET_FLAGS, sw_interface_set_flags) \
_ (SW_INTERFACE_SET_PROMISC, sw_interface_set_promisc) \
_ (HW_INTERFACE_SET_MTU, hw_interface_set_mtu) \
_ (SW_INTERFACE_SET_MTU, sw_interface_set_mtu) \
_ (WANT_INTERFACE_EVENTS, want_interface_events) \
_ (SW_INTERFACE_DUMP, sw_interface_dump) \
_ (SW_INTERFACE_ADD_DEL_ADDRESS, sw_interface_add_del_address) \
_ (SW_INTERFACE_SET_RX_MODE, sw_interface_set_rx_mode) \
_ (SW_INTERFACE_RX_PLACEMENT_DUMP, sw_interface_rx_placement_dump) \
_ (SW_INTERFACE_SET_RX_PLACEMENT, sw_interface_set_rx_placement) \
_ (SW_INTERFACE_SET_TABLE, sw_interface_set_table) \
_ (SW_INTERFACE_GET_TABLE, sw_interface_get_table) \
_ (SW_INTERFACE_SET_UNNUMBERED, sw_interface_set_unnumbered) \
_ (SW_INTERFACE_CLEAR_STATS, sw_interface_clear_stats) \
_ (SW_INTERFACE_TAG_ADD_DEL, sw_interface_tag_add_del) \
_ (SW_INTERFACE_ADD_DEL_MAC_ADDRESS, sw_interface_add_del_mac_address) \
_ (SW_INTERFACE_SET_MAC_ADDRESS, sw_interface_set_mac_address) \
_ (SW_INTERFACE_GET_MAC_ADDRESS, sw_interface_get_mac_address) \
_ (CREATE_VLAN_SUBIF, create_vlan_subif) \
_ (CREATE_SUBIF, create_subif) \
_ (DELETE_SUBIF, delete_subif) \
_ (CREATE_LOOPBACK, create_loopback) \
_ (CREATE_LOOPBACK_INSTANCE, create_loopback_instance) \
_ (DELETE_LOOPBACK, delete_loopback) \
_ (INTERFACE_NAME_RENUMBER, interface_name_renumber) \
_ (COLLECT_DETAILED_INTERFACE_STATS, collect_detailed_interface_stats) \
_ (SW_INTERFACE_SET_IP_DIRECTED_BROADCAST, \
sw_interface_set_ip_directed_broadcast) \
_ (SW_INTERFACE_ADDRESS_REPLACE_BEGIN, sw_interface_address_replace_begin) \
_ (SW_INTERFACE_ADDRESS_REPLACE_END, sw_interface_address_replace_end)

Definition at line 57 of file interface_api.c.

◆ vl_endianfun

#define vl_endianfun   /* define message structures */

Definition at line 44 of file interface_api.c.

◆ vl_msg_name_crc_list

#define vl_msg_name_crc_list

Definition at line 1425 of file interface_api.c.

◆ vl_print

#define vl_print (   handle,
  ... 
)    vlib_cli_output (handle, __VA_ARGS__)

Definition at line 49 of file interface_api.c.

◆ vl_printfun

#define vl_printfun

Definition at line 50 of file interface_api.c.

◆ vl_typedefs

#define vl_typedefs   /* define message structures */

Definition at line 40 of file interface_api.c.

Enumeration Type Documentation

◆ api_events

enum api_events
Enumerator
API_LINK_STATE_UP_EVENT 
API_LINK_STATE_DOWN_EVENT 
API_ADMIN_UP_EVENT 
API_ADMIN_DOWN_EVENT 
API_SW_INTERFACE_ADD_EVENT 
API_SW_INTERFACE_DEL_EVENT 

Definition at line 746 of file interface_api.c.

Function Documentation

◆ admin_up_down_function()

static clib_error_t * admin_up_down_function ( vnet_main_t vm,
u32  hw_if_index,
u32  flags 
)
static

Definition at line 870 of file interface_api.c.

+ Here is the call graph for this function:

◆ interface_api_hookup()

static clib_error_t* interface_api_hookup ( vlib_main_t vm)
static

Definition at line 1440 of file interface_api.c.

+ Here is the call graph for this function:

◆ ip_table_bind()

int ip_table_bind ( fib_protocol_t  fproto,
u32  sw_if_index,
u32  table_id,
u8  is_api 
)

Definition at line 482 of file interface_api.c.

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

◆ link_state_process()

static uword link_state_process ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 781 of file interface_api.c.

+ Here is the call graph for this function:

◆ link_up_down_function()

static clib_error_t * link_up_down_function ( vnet_main_t vm,
u32  hw_if_index,
u32  flags 
)
static

Definition at line 852 of file interface_api.c.

+ Here is the call graph for this function:

◆ pub_sub_handler()

pub_sub_handler ( interface_events  ,
INTERFACE_EVENTS   
)

◆ send_interface_rx_placement_details()

static void send_interface_rx_placement_details ( vpe_api_main_t am,
vl_api_registration_t rp,
u32  sw_if_index,
u32  worker_id,
u32  queue_id,
u8  mode,
u32  context 
)
static

Definition at line 1064 of file interface_api.c.

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

◆ send_sw_interface_details()

static void send_sw_interface_details ( vpe_api_main_t am,
vl_api_registration_t rp,
vnet_sw_interface_t swif,
u8 interface_name,
u32  context 
)
static

Definition at line 232 of file interface_api.c.

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

◆ send_sw_interface_event()

static void send_sw_interface_event ( vpe_api_main_t am,
vpe_client_registration_t reg,
vl_api_registration_t vl_reg,
u32  sw_if_index,
enum api_events  events 
)
static

Definition at line 757 of file interface_api.c.

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

◆ send_sw_interface_get_table_reply()

static void send_sw_interface_get_table_reply ( vl_api_registration_t reg,
u32  context,
int  retval,
u32  vrf_id 
)
static

Definition at line 616 of file interface_api.c.

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

◆ setup_message_id_table()

static void setup_message_id_table ( api_main_t am)
static

Definition at line 1430 of file interface_api.c.

+ Here is the caller graph for this function:

◆ sw_interface_add_del_function()

static clib_error_t * sw_interface_add_del_function ( vnet_main_t vm,
u32  sw_if_index,
u32  flags 
)
static

Definition at line 891 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_collect_detailed_interface_stats_t_handler()

static void vl_api_collect_detailed_interface_stats_t_handler ( vl_api_collect_detailed_interface_stats_t mp)
static

Definition at line 1382 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_create_loopback_instance_t_handler()

static void vl_api_create_loopback_instance_t_handler ( vl_api_create_loopback_instance_t mp)
static

Definition at line 1346 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_create_loopback_t_handler()

static void vl_api_create_loopback_t_handler ( vl_api_create_loopback_t mp)
static

Definition at line 1327 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_create_subif_t_handler()

static void vl_api_create_subif_t_handler ( vl_api_create_subif_t mp)
static

Definition at line 1266 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_create_vlan_subif_t_handler()

static void vl_api_create_vlan_subif_t_handler ( vl_api_create_vlan_subif_t mp)
static

Definition at line 1185 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_delete_loopback_t_handler()

static void vl_api_delete_loopback_t_handler ( vl_api_delete_loopback_t mp)
static

Definition at line 1368 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_delete_subif_t_handler()

static void vl_api_delete_subif_t_handler ( vl_api_delete_subif_t mp)
static

Definition at line 1299 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_hw_interface_set_mtu_t_handler()

static void vl_api_hw_interface_set_mtu_t_handler ( vl_api_hw_interface_set_mtu_t mp)
static

Definition at line 147 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_interface_name_renumber_t_handler()

static void vl_api_interface_name_renumber_t_handler ( vl_api_interface_name_renumber_t mp)
static

Definition at line 1310 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_add_del_address_t_handler()

static void vl_api_sw_interface_add_del_address_t_handler ( vl_api_sw_interface_add_del_address_t mp)
static

Definition at line 422 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_add_del_mac_address_t_handler()

static void vl_api_sw_interface_add_del_mac_address_t_handler ( vl_api_sw_interface_add_del_mac_address_t mp)
static

Definition at line 938 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_address_replace_begin_t_handler()

static void vl_api_sw_interface_address_replace_begin_t_handler ( vl_api_sw_interface_address_replace_begin_t mp)
static

Definition at line 1396 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_address_replace_end_t_handler()

static void vl_api_sw_interface_address_replace_end_t_handler ( vl_api_sw_interface_address_replace_end_t mp)
static

Definition at line 1408 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_clear_stats_t_handler()

static void vl_api_sw_interface_clear_stats_t_handler ( vl_api_sw_interface_clear_stats_t mp)
static

Definition at line 699 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_dump_t_handler()

static void vl_api_sw_interface_dump_t_handler ( vl_api_sw_interface_dump_t mp)
static

Definition at line 357 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_get_mac_address_t_handler()

static void vl_api_sw_interface_get_mac_address_t_handler ( vl_api_sw_interface_get_mac_address_t mp)
static

Definition at line 995 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_get_table_t_handler()

static void vl_api_sw_interface_get_table_t_handler ( vl_api_sw_interface_get_table_t mp)
static

Definition at line 632 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_rx_placement_dump_t_handler()

static void vl_api_sw_interface_rx_placement_dump_t_handler ( vl_api_sw_interface_rx_placement_dump_t mp)
static

Definition at line 1084 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_flags_t_handler()

static void vl_api_sw_interface_set_flags_t_handler ( vl_api_sw_interface_set_flags_t mp)
static

Definition at line 90 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_ip_directed_broadcast_t_handler()

static void vl_api_sw_interface_set_ip_directed_broadcast_t_handler ( vl_api_sw_interface_set_ip_directed_broadcast_t mp)
static

Definition at line 216 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_mac_address_t_handler()

static void vl_api_sw_interface_set_mac_address_t_handler ( vl_api_sw_interface_set_mac_address_t mp)
static

Definition at line 966 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_mtu_t_handler()

static void vl_api_sw_interface_set_mtu_t_handler ( vl_api_sw_interface_set_mtu_t mp)
static

Definition at line 193 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_promisc_t_handler()

static void vl_api_sw_interface_set_promisc_t_handler ( vl_api_sw_interface_set_promisc_t mp)
static

Definition at line 116 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_rx_mode_t_handler()

static void vl_api_sw_interface_set_rx_mode_t_handler ( vl_api_sw_interface_set_rx_mode_t mp)
static

Definition at line 1026 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_rx_placement_t_handler()

static void vl_api_sw_interface_set_rx_placement_t_handler ( vl_api_sw_interface_set_rx_placement_t mp)
static

Definition at line 1151 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_table_t_handler()

static void vl_api_sw_interface_set_table_t_handler ( vl_api_sw_interface_set_table_t mp)
static

Definition at line 462 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_set_unnumbered_t_handler()

static void vl_api_sw_interface_set_unnumbered_t_handler ( vl_api_sw_interface_set_unnumbered_t mp)
static

Definition at line 666 of file interface_api.c.

+ Here is the call graph for this function:

◆ vl_api_sw_interface_tag_add_del_t_handler()

static void vl_api_sw_interface_tag_add_del_t_handler ( vl_api_sw_interface_tag_add_del_t mp)
static

Definition at line 907 of file interface_api.c.

+ Here is the call graph for this function:

◆ VLIB_API_INIT_FUNCTION()

VLIB_API_INIT_FUNCTION ( interface_api_hookup  )

◆ VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION()

VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION ( link_up_down_function  )

◆ VNET_SW_INTERFACE_ADD_DEL_FUNCTION()

VNET_SW_INTERFACE_ADD_DEL_FUNCTION ( sw_interface_add_del_function  )

◆ VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION()

VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION ( admin_up_down_function  )

Variable Documentation

◆ link_state_process_node

vlib_node_registration_t link_state_process_node
static
Initial value:
= {
.function = link_state_process,
.name = "vpe-link-state-process",
}

(constructor) VLIB_REGISTER_NODE (link_state_process_node)

Definition at line 840 of file interface_api.c.

◆ vpe_api_main

vpe_api_main_t vpe_api_main

Definition at line 55 of file interface_api.c.

collect_detailed_interface_stats
static int collect_detailed_interface_stats(void)
Definition: interface.h:965
link_state_process
static uword link_state_process(vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
Definition: interface_api.c:781
VLIB_NODE_TYPE_PROCESS
@ VLIB_NODE_TYPE_PROCESS
Definition: node.h:84