gre: Optimise encap node for tunnel types
[vpp.git] / src / vnet / gre / gre.h
index 70f6241..07f375d 100644 (file)
@@ -25,7 +25,7 @@
 #include <vnet/ip/format.h>
 #include <vnet/adj/adj_types.h>
 #include <vnet/tunnel/tunnel.h>
-#include <vnet/nhrp/nhrp.h>
+#include <vnet/teib/teib.h>
 
 extern vnet_hw_interface_class_t gre_hw_interface_class;
 extern vnet_hw_interface_class_t mgre_hw_interface_class;
@@ -206,6 +206,7 @@ typedef struct
   u32 sw_if_index;
   gre_tunnel_type_t type;
   tunnel_mode_t mode;
+  tunnel_encap_decap_flags_t flags;
 
   /**
    * an L2 tunnel always rquires an L2 midchain. cache here for DP.
@@ -327,7 +328,7 @@ extern void gre_update_adj (vnet_main_t * vnm,
 typedef struct mgre_walk_ctx_t_
 {
   const gre_tunnel_t *t;
-  const nhrp_entry_t *ne;
+  const teib_entry_t *ne;
 } mgre_walk_ctx_t;
 
 adj_walk_rc_t mgre_mk_complete_walk (adj_index_t ai, void *data);
@@ -339,7 +340,8 @@ format_function_t format_gre_header_with_length;
 
 extern vlib_node_registration_t gre4_input_node;
 extern vlib_node_registration_t gre6_input_node;
-extern vlib_node_registration_t gre_encap_node;
+extern vlib_node_registration_t gre_erspan_encap_node;
+extern vlib_node_registration_t gre_teb_encap_node;
 extern vnet_device_class_t gre_device_class;
 
 /* Parse gre protocol as 0xXXXX or protocol name.
@@ -368,6 +370,7 @@ typedef struct
   ip46_address_t src, dst;
   u32 outer_table_id;
   u16 session_id;
+  tunnel_encap_decap_flags_t flags;
 } vnet_gre_tunnel_add_del_args_t;
 
 extern int vnet_gre_tunnel_add_del (vnet_gre_tunnel_add_del_args_t * a,