Deprecate MPLSoGRE tunnels (VPP-502)
[vpp.git] / vnet / vnet / mpls / mpls.h
index e473770..da663b0 100644 (file)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef included_vnet_mpls_gre_h
-#define included_vnet_mpls_gre_h
+#ifndef included_vnet_mpls_h
+#define included_vnet_mpls_h
 
 #include <vnet/vnet.h>
-#include <vnet/gre/gre.h>
 #include <vnet/mpls/packet.h>
 #include <vnet/mpls/mpls_types.h>
 #include <vnet/ip/ip4_packet.h>
 #include <vnet/fib/fib_node.h>
 #include <vnet/adj/adj.h>
 
-typedef CLIB_PACKED (struct {
-  ip4_header_t ip4;             /* 20 bytes */
-  gre_header_t gre;             /* 4 bytes */
-  mpls_unicast_header_t labels[0];   /* 4 bytes each */
-}) ip4_gre_and_mpls_header_t;
-
-extern vnet_hw_interface_class_t mpls_gre_hw_interface_class;
-
 typedef enum {
 #define mpls_error(n,s) MPLS_ERROR_##n,
 #include <vnet/mpls/error.def>
 #undef mpls_error
   MPLS_N_ERROR,
-} mpls_gre_error_t;
+} mpls_error_t;
 
 /*
  * No protocol info, MPLS labels don't have a next-header field
  * presumably the label field tells all...
  */
-
-typedef struct {
-  fib_node_t mgt_node;
-  ip4_address_t tunnel_src;
-  ip4_address_t tunnel_dst;
-  ip4_address_t intfc_address;
-  u32 mask_width;
-  u32 inner_fib_index;
-  u32 outer_fib_index;
-  u32 encap_index;
-  u32 hw_if_index;              /* L2 x-connect capable tunnel intfc */
-  u8 * rewrite_data;
-  u8 l2_only;
-  fib_node_index_t fei; /* FIB Entry index for the tunnel's destination */
-  adj_index_t adj_index; /* The midchain adj this tunnel creates */
-  u32 sibling_index;
-} mpls_gre_tunnel_t;
-
 typedef struct {
   u8 tunnel_dst[6];
   ip4_address_t intfc_address;
@@ -81,11 +54,6 @@ typedef struct {
   u32 output_next_index;
 } mpls_encap_t;
 
-typedef struct {
-  u32 tx_fib_index;
-  u32 next_index;               /* e.g. ip4/6-input, l2-input */
-} mpls_decap_t;
-
 #define MPLS_FIB_DEFAULT_TABLE_ID 0
 
 /**
@@ -134,10 +102,6 @@ typedef struct {
   u32 mpls_rx_feature_not_enabled;
   u32 mpls_tx_feature_interface_output;
 
-  /* pool of gre tunnel instances */
-  mpls_gre_tunnel_t *gre_tunnels;
-  u32 * free_gre_sw_if_indices;
-
   /* pool of ethernet tunnel instances */
   mpls_eth_tunnel_t *eth_tunnels;
   u32 * free_eth_sw_if_indices;
@@ -146,10 +110,6 @@ typedef struct {
   mpls_encap_t * encaps;
   uword * mpls_encap_by_fib_and_dest;
 
-  /* Decap side: map rx label to FIB */
-  mpls_decap_t * decaps;
-  uword * mpls_decap_by_rx_fib_and_label;
-
   /* mpls-o-e policy tunnel next index for ip4/ip6-classify */
   u32 ip4_classify_mpls_policy_encap_next_index;
   u32 ip6_classify_mpls_policy_encap_next_index;
@@ -163,9 +123,6 @@ typedef struct {
   /* IP4 enabled count by software interface */
   u8 * mpls_enabled_by_sw_if_index;
 
-  /* Functions to call when MPLS state on an interface changes. */
-  mpls_interface_state_change_callback_t * mpls_interface_state_change_callbacks;
-
   /* convenience */
   vlib_main_t * vlib_main;
   vnet_main_t * vnet_main;
@@ -200,7 +157,6 @@ __VA_ARGS__ vnet_feature_registration_t tx_##x
 extern clib_error_t * mpls_feature_init(vlib_main_t * vm);
 
 format_function_t format_mpls_protocol;
-format_function_t format_mpls_gre_header_with_length;
 format_function_t format_mpls_eth_header_with_length;
 format_function_t format_mpls_encap_index;
 
@@ -214,25 +170,17 @@ extern vlib_node_registration_t mpls_policy_encap_node;
 extern vlib_node_registration_t mpls_output_node;
 extern vlib_node_registration_t mpls_midchain_node;
 
-extern vnet_device_class_t mpls_gre_device_class;
-
 /* Parse mpls protocol as 0xXXXX or protocol name.
    In either host or network byte order. */
 unformat_function_t unformat_mpls_protocol_host_byte_order;
 unformat_function_t unformat_mpls_protocol_net_byte_order;
 unformat_function_t unformat_mpls_label_net_byte_order;
-unformat_function_t unformat_mpls_gre_header;
-unformat_function_t unformat_pg_mpls_gre_header;
 unformat_function_t unformat_mpls_unicast_label;
 
 /* Parse mpls header. */
 unformat_function_t unformat_mpls_header;
 unformat_function_t unformat_pg_mpls_header;
 
-/* manually added to the interface output node in mpls.c */
-#define MPLS_GRE_OUTPUT_NEXT_LOOKUP    1
-#define MPLS_GRE_OUTPUT_NEXT_DROP      VNET_INTERFACE_TX_NEXT_DROP
-
 void mpls_sw_interface_enable_disable (mpls_main_t * mm,
                                       u32 sw_if_index,
                                       u8 is_enable);
@@ -242,18 +190,6 @@ u8 mpls_sw_interface_is_enabled (u32 sw_if_index);
 mpls_encap_t *
 mpls_encap_by_fib_and_dest (mpls_main_t * mm, u32 rx_fib, u32 dst_address);
 
-int mpls_label_from_fib_id_and_dest (mpls_main_t *gm, u32 fib_id,
-                                     u32 dst_address, u32 *labelp);
-
-int vnet_mpls_gre_add_del_tunnel (ip4_address_t *src,
-                                  ip4_address_t *dst,
-                                  ip4_address_t *intfc,
-                                  u32 mask_width,
-                                  u32 inner_fib_id, u32 outer_fib_id,
-                                  u32 * tunnel_intfc_sw_if_index,
-                                  u8 l2_only,
-                                  u8 is_add);
-
 int vnet_mpls_ethernet_add_del_tunnel (u8 *dst,
                                        ip4_address_t *intfc,
                                        u32 mask_width,
@@ -263,15 +199,8 @@ int vnet_mpls_ethernet_add_del_tunnel (u8 *dst,
                                        u8 l2_only,
                                        u8 is_add);
 
-int vnet_mpls_gre_delete_fib_tunnels (u32 fib_id);
-
 int mpls_fib_reset_labels (u32 fib_id);
 
-int vnet_mpls_add_del_decap (u32 rx_fib_id,
-                             u32 tx_fib_id,
-                             u32 label_host_byte_order,
-                             int s_bit, int next_index, int is_add);
-
 int vnet_mpls_add_del_encap (ip4_address_t *dest, u32 fib_id,
                              u32 *labels_host_byte_order,
                              u32 policy_tunnel_index,
@@ -281,26 +210,6 @@ int vnet_mpls_policy_tunnel_add_rewrite (mpls_main_t * mm,
                                          mpls_encap_t * e,
                                          u32 policy_tunnel_index);
 
-typedef struct {
-  u32 lookup_miss;
-
-  /* Tunnel-id / index in tunnel vector */
-  u32 tunnel_id;
-
-  /* mpls encap index */
-  u32 mpls_encap_index;
-
-  /* pkt length */
-  u32 length;
-
-  /* tunnel ip4 addresses */
-  ip4_address_t src;
-  ip4_address_t dst;
-} mpls_gre_tx_trace_t;
-
-u8 * format_mpls_gre_tx_trace (u8 * s, va_list * args);
-u8 * format_mpls_gre_header (u8 * s, va_list * args);
-
 #define foreach_mpls_input_next                        \
 _(DROP, "error-drop")                           \
 _(LOOKUP, "mpls-lookup")
@@ -372,4 +281,4 @@ mpls_fib_index_cmp(void * a1, void * a2);
 int
 mpls_label_cmp(void * a1, void * a2);
 
-#endif /* included_vnet_mpls_gre_h */
+#endif /* included_vnet_mpls_h */