X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvnet%2Finterface.h;h=87addbe67be557511b3d8bc6ef4ccafd068af338;hb=7eaaf740766db0e5625ff3217948c6925192eec4;hp=7556bc5544eadeec08cf583800cc085c8f1f034b;hpb=4f8863b21405d1ab3e067e978a60be72a343358b;p=vpp.git diff --git a/src/vnet/interface.h b/src/vnet/interface.h index 7556bc5544e..87addbe67be 100644 --- a/src/vnet/interface.h +++ b/src/vnet/interface.h @@ -81,6 +81,20 @@ typedef clib_error_t *(vnet_interface_set_l2_mode_function_t) (struct vnet_main_t * vnm, struct vnet_hw_interface_t * hi, i32 l2_if_adjust); +typedef enum +{ + VNET_FLOW_DEV_OP_ADD_FLOW, + VNET_FLOW_DEV_OP_DEL_FLOW, + VNET_FLOW_DEV_OP_GET_COUNTER, + VNET_FLOW_DEV_OP_RESET_COUNTER, +} vnet_flow_dev_op_t; + +/* Interface flow opeations callback. */ +typedef int (vnet_flow_dev_ops_function_t) (struct vnet_main_t * vnm, + vnet_flow_dev_op_t op, + u32 hw_if_index, u32 index, + uword * private_data); + typedef enum vnet_interface_function_priority_t_ { VNET_ITF_FUNC_PRIORITY_LOW, @@ -189,6 +203,9 @@ typedef struct _vnet_device_class int (*name_renumber) (struct vnet_hw_interface_t * hi, u32 new_dev_instance); + /* Interface flow offload operations */ + vnet_flow_dev_ops_function_t *flow_ops_function; + /* Format device instance as name. */ format_function_t *format_device_name; @@ -201,6 +218,9 @@ typedef struct _vnet_device_class /* Trace buffer format for TX function. */ format_function_t *format_tx_trace; + /* Format flow offload entry */ + format_function_t *format_flow; + /* Function to clear hardware counters for device. */ void (*clear_counters) (u32 dev_class_instance); @@ -296,6 +316,11 @@ typedef enum vnet_link_t_ [VNET_LINK_NSH] = "nsh", \ } +#define FOR_EACH_VNET_LINK(_link) \ + for (_link = VNET_LINK_IP4; \ + _link <= VNET_LINK_NSH; \ + _link++) + /** * @brief Number of link types. Not part of the enum so it does not have to be included in * switch statements @@ -656,17 +681,14 @@ typedef struct u32 link_speed; - union - { - /* VNET_SW_INTERFACE_TYPE_HARDWARE. */ - u32 hw_if_index; + /* VNET_SW_INTERFACE_TYPE_HARDWARE. */ + u32 hw_if_index; - /* VNET_SW_INTERFACE_TYPE_SUB. */ - vnet_sub_interface_t sub; + /* VNET_SW_INTERFACE_TYPE_SUB. */ + vnet_sub_interface_t sub; - /* VNET_SW_INTERFACE_TYPE_P2P. */ - vnet_p2p_sub_interface_t p2p; - }; + /* VNET_SW_INTERFACE_TYPE_P2P. */ + vnet_p2p_sub_interface_t p2p; vnet_flood_class_t flood_class; } vnet_sw_interface_t;