feature: add new feature handling code and device-input features
[vpp.git] / vnet / vnet / devices / netmap / node.c
index 559db66..d13fa1b 100644 (file)
@@ -22,6 +22,7 @@
 #include <vlib/vlib.h>
 #include <vlib/unix/unix.h>
 #include <vnet/ethernet/ethernet.h>
+#include <vnet/feature/feature.h>
 
 #include <vnet/devices/netmap/net_netmap.h>
 #include <vnet/devices/netmap/netmap.h>
@@ -158,7 +159,7 @@ netmap_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
 
          while (r && n_left_to_next)
            {
-             vlib_buffer_t *b0, *first_b0 = 0;
+             vlib_buffer_t *b0 = 0, *first_b0 = 0;
              u32 offset = 0;
              u32 bi0 = 0, first_bi0 = 0, prev_bi0;
              u32 next_slot_index = (cur_slot_index + 1) % ring->num_slots;
@@ -235,6 +236,11 @@ netmap_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
                      memcpy (&tr->slot, slot, sizeof (struct netmap_slot));
                    }
                }
+
+             /* redirect if feature path enabled */
+             vnet_feature_device_input_redirect_x1 (node, nif->sw_if_index,
+                                                    &next0, b0, 0);
+
              /* enque and take next packet */
              vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
                                               n_left_to_next, first_bi0,