Update sample plugin and plugin skeletons: use driver feature arc
[vpp.git] / plugins / sample-plugin / sample / sample.c
index 155c845..321b66c 100644 (file)
@@ -106,8 +106,7 @@ int sample_macswap_enable_disable (sample_main_t * sm, u32 sw_if_index,
                                    int enable_disable)
 {
   vnet_sw_interface_t * sw;
-  int rv;
-  u32 node_index = enable_disable ? sample_node.index : ~0;
+  int rv = 0;
 
   /* Utterly wrong? */
   if (pool_is_free_index (sm->vnet_main->interface_main.sw_interfaces, 
@@ -119,15 +118,9 @@ int sample_macswap_enable_disable (sample_main_t * sm, u32 sw_if_index,
   if (sw->type != VNET_SW_INTERFACE_TYPE_HARDWARE)
     return VNET_API_ERROR_INVALID_SW_IF_INDEX;
   
-  /* 
-   * Redirect pkts from the driver to the macswap node.
-   * Returns VNET_API_ERROR_UNIMPLEMENTED if the h/w driver
-   * doesn't implement the API. 
-   *
-   * Node_index = ~0 => shut off redirection
-   */
-  rv = vnet_hw_interface_rx_redirect_to_node (sm->vnet_main, sw_if_index,
-                                              node_index);
+  vnet_feature_enable_disable ("device-input", "sample",
+                               sw_if_index, enable_disable, 0, 0);
+
   return rv;
 }
 
@@ -238,4 +231,9 @@ static clib_error_t * sample_init (vlib_main_t * vm)
 
 VLIB_INIT_FUNCTION (sample_init);
 
-
+VNET_FEATURE_INIT (sample, static) = 
+{
+  .arc_name = "device-input",
+  .node_name = "sample",
+  .runs_before = VNET_FEATURES ("ethernet-input"),
+};