vxlan:offload RX flow
[vpp.git] / src / vnet / vxlan / vxlan.h
index e50ff6b..0f226aa 100644 (file)
@@ -66,8 +66,8 @@ typedef CLIB_PACKED(struct {
 }) vxlan6_tunnel_key_t;
 
 typedef struct {
-  /* Rewrite string. $$$$ embed vnet_rewrite header */
-  u8 * rewrite;
+  /* Required for pool_get_aligned */
+  CLIB_CACHE_LINE_ALIGN_MARK(cacheline0);
 
   /* FIB DPO for IP forwarding of VXLAN encap packet */
   dpo_id_t next_dpo;  
@@ -112,8 +112,11 @@ typedef struct {
    */
   u32 sibling_index;
 
+  u32 flow_index;       /* infra flow index */
   u32 dev_instance;    /* Real device instance in tunnel vector */
   u32 user_instance;   /* Instance name being shown to user */
+
+  vnet_declare_rewrite (VLIB_BUFFER_PRE_DATA_SIZE);
 } vxlan_tunnel_t;
 
 #define foreach_vxlan_input_next        \
@@ -150,9 +153,6 @@ typedef struct {
   /* mcast shared info */
   uword * mcast_shared; /* keyed on mcast ip46 addr */
 
-  /* Free vlib hw_if_indices */
-  u32 * free_vxlan_tunnel_hw_if_indices;
-
   /* Mapping from sw_if_index to tunnel index */
   u32 * tunnel_index_by_sw_if_index;
 
@@ -162,6 +162,7 @@ typedef struct {
 
   /* Record used instances */
   uword *instance_used;
+  u32 flow_id_start;
 } vxlan_main_t;
 
 extern vxlan_main_t vxlan_main;
@@ -170,6 +171,7 @@ extern vlib_node_registration_t vxlan4_input_node;
 extern vlib_node_registration_t vxlan6_input_node;
 extern vlib_node_registration_t vxlan4_encap_node;
 extern vlib_node_registration_t vxlan6_encap_node;
+extern vlib_node_registration_t vxlan4_flow_input_node;
 
 u8 * format_vxlan_encap_trace (u8 * s, va_list * args);
 
@@ -192,6 +194,11 @@ int vnet_vxlan_add_del_tunnel
 
 void vnet_int_vxlan_bypass_mode
 (u32 sw_if_index, u8 is_ip6, u8 is_enable);
+
+int vnet_vxlan_add_del_rx_flow
+(u32 hw_if_index, u32 t_imdex, int is_add);
+
+u32 vnet_vxlan_get_tunnel_index (u32 sw_if_index);
 #endif /* included_vnet_vxlan_h */
 
 /*