VPP-355: add PBB (802.1ah) tag rewrite
[vpp.git] / vnet / vnet / ethernet / init.c
index b561a36..513d9c6 100644 (file)
@@ -39,6 +39,7 @@
 
 #include <vlib/vlib.h>
 #include <vnet/ethernet/ethernet.h>
+#include <vnet/ip/ip.h>                // for feature registration
 
 /* Global main structure. */
 ethernet_main_t ethernet_main;
@@ -60,13 +61,41 @@ add_type (ethernet_main_t * em, ethernet_type_t type, char *type_name)
   hash_set_mem (em->type_info_by_name, ti->name, i);
 }
 
+static char *feature_start_nodes[] = {
+  "adj-midchain-tx-no-count",
+};
+
+/* Built-in ip4 tx feature path definition */
+/* *INDENT-OFF* */
+VNET_ETHERNET_TX_FEATURE_INIT (ethernet_tx_drop, static) =
+{
+  .node_name = "error-drop",
+  .runs_before = 0,    /* not before any other features */
+  .feature_index = &ethernet_main.ethernet_tx_feature_drop,
+};
+/* *INDENT-ON* */
+
+static clib_error_t *
+ethernet_feature_init (vlib_main_t * vm)
+{
+  ip_config_main_t *cm = &ethernet_main.feature_config_mains[VNET_IP_TX_FEAT];
+  vnet_config_main_t *vcm = &cm->config_main;
+
+  return (ip_feature_init_cast (vm, cm, vcm,
+                               feature_start_nodes,
+                               ARRAY_LEN (feature_start_nodes),
+                               ethernet_main.next_feature[VNET_IP_TX_FEAT],
+                               &ethernet_main.feature_nodes
+                               [VNET_IP_TX_FEAT]));
+}
+
 static clib_error_t *
 ethernet_init (vlib_main_t * vm)
 {
   ethernet_main_t *em = &ethernet_main;
   clib_error_t *error;
 
-  /* 
+  /*
    * Set up the L2 path now, or we'll wipe out the L2 ARP
    * registration set up by ethernet_arp_init.
    */
@@ -87,7 +116,7 @@ ethernet_init (vlib_main_t * vm)
   if ((error = vlib_call_init_function (vm, ethernet_input_init)))
     return error;
 
-  return error;
+  return (ethernet_feature_init (vm));
 }
 
 VLIB_INIT_FUNCTION (ethernet_init);
@@ -99,7 +128,6 @@ ethernet_get_main (vlib_main_t * vm)
   return &ethernet_main;
 }
 
-
 /*
  * fd.io coding-style-patch-verification: ON
  *