#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;
hash_set_mem (em->type_info_by_name, ti->name, i);
}
+/* Built-in ip4 tx feature path definition */
+/* *INDENT-OFF* */
+VNET_FEATURE_ARC_INIT (ethernet_output, static) =
+{
+ .arc_name = "ethernet-output",
+ .start_nodes = VNET_FEATURES ("adj-l2-midchain"),
+ .arc_index_ptr = ðernet_main.output_feature_arc_index,
+};
+
+VNET_FEATURE_INIT (ethernet_tx_drop, static) =
+{
+ .arc_name = "ethernet-output",
+ .node_name = "error-drop",
+ .runs_before = 0, /* not before any other features */
+};
+/* *INDENT-ON* */
+
static clib_error_t *
ethernet_init (vlib_main_t * vm)
{
ethernet_main_t *em = ðernet_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.
*/
return error;
if ((error = vlib_call_init_function (vm, ethernet_input_init)))
return error;
+ if ((error = vlib_call_init_function (vm, vnet_feature_init)))
+ return error;
- return error;
+ return 0;
}
VLIB_INIT_FUNCTION (ethernet_init);
return ðernet_main;
}
-
/*
* fd.io coding-style-patch-verification: ON
*