X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface.h;h=e6450f5bf596774657a1d76836cb634bf40c5060;hb=e0792fdff;hp=d3065dc2a9fea1340a5a206ee765053372411d0c;hpb=5cdde5c25a0e71d923a6d56e5c94e058887f95d8;p=vpp.git diff --git a/src/vnet/interface.h b/src/vnet/interface.h index d3065dc2a9f..e6450f5bf59 100644 --- a/src/vnet/interface.h +++ b/src/vnet/interface.h @@ -74,6 +74,10 @@ typedef clib_error_t *(vnet_interface_set_mac_address_function_t) (struct vnet_hw_interface_t * hi, const u8 * old_address, const u8 * new_address); +/* Interface add/del additional mac address callback */ +typedef clib_error_t *(vnet_interface_add_del_mac_address_function_t) + (struct vnet_hw_interface_t * hi, const u8 * address, u8 is_add); + /* Interface set rx mode callback. */ typedef clib_error_t *(vnet_interface_set_rx_mode_function_t) (struct vnet_main_t * vnm, u32 if_index, u32 queue_id, @@ -266,6 +270,9 @@ typedef struct _vnet_device_class /* Function to set mac address. */ vnet_interface_set_mac_address_function_t *mac_addr_change_function; + + /* Function to add/delete additional MAC addresses */ + vnet_interface_add_del_mac_address_function_t *mac_addr_add_del_function; } vnet_device_class_t; #ifndef CLIB_MARCH_VARIANT @@ -392,6 +399,9 @@ typedef struct _vnet_hw_interface_class /* Function to call when link MAC changes. */ vnet_interface_set_mac_address_function_t *mac_addr_change_function; + /* Function to add/delete additional MAC addresses */ + vnet_interface_add_del_mac_address_function_t *mac_addr_add_del_function; + /* Format function to display interface name. */ format_function_t *format_interface_name; @@ -498,6 +508,7 @@ typedef enum vnet_hw_interface_flags_t_ that packets flow over. */ typedef struct vnet_hw_interface_t { + CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); /* Interface name. */ u8 *name; @@ -579,7 +590,10 @@ typedef struct vnet_hw_interface_t /* numa node that hardware device connects to */ u8 numa_node; - u8 padding[3]; + /* trace */ + i32 n_trace; + + u32 trace_classify_table_index; } vnet_hw_interface_t; extern vnet_device_class_t vnet_local_interface_device_class; @@ -676,7 +690,7 @@ typedef enum vnet_sw_interface_flags_t_ VNET_SW_INTERFACE_FLAG_UNNUMBERED = (1 << 3), - VNET_SW_INTERFACE_FLAG_BOND_SLAVE = (1 << 4), + __VNET_SW_INTERFACE_FLAG_UNUSED2 = (1 << 4), /* Interface does not appear in CLI/API */ VNET_SW_INTERFACE_FLAG_HIDDEN = (1 << 5), @@ -843,12 +857,11 @@ typedef struct vnet_hw_interface_nodes_t *deleted_hw_interface_nodes; - /* pcap drop tracing */ - int drop_pcap_enable; - pcap_main_t pcap_main; - u8 *pcap_filename; - u32 pcap_sw_if_index; - u32 pcap_pkts_to_capture; + /* + * pcap drop tracing + * Only the drop filter hash lives here. See ../src/vlib/main.h for + * the rest of the variables. + */ uword *pcap_drop_filter_hash; /* Buffer metadata format helper functions */ @@ -893,6 +906,22 @@ void vnet_register_format_buffer_opaque_helper void vnet_register_format_buffer_opaque2_helper (vnet_buffer_opquae_formatter_t fn); +typedef struct +{ + u8 *filename; + int enable; + int status; + u32 packets_to_capture; + u32 max_bytes_per_pkt; + u8 rx_enable; + u8 tx_enable; + u8 drop_enable; + u32 sw_if_index; + int filter; +} vnet_pcap_dispatch_trace_args_t; + +int vnet_pcap_dispatch_trace_configure (vnet_pcap_dispatch_trace_args_t *); + #endif /* included_vnet_interface_h */ /*