BD ARP entry use common API types
[vpp.git] / src / vnet / l2 / l2_input_vtr.c
index 60a3963..9470752 100644 (file)
@@ -111,7 +111,6 @@ l2_invtr_node_fn (vlib_main_t * vm,
          vlib_buffer_t *b0, *b1;
          u32 next0, next1;
          u32 sw_if_index0, sw_if_index1;
-         u32 feature_bitmap0, feature_bitmap1;
 
          /* Prefetch next iteration. */
          {
@@ -160,23 +159,11 @@ l2_invtr_node_fn (vlib_main_t * vm,
          sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX];
          sw_if_index1 = vnet_buffer (b1)->sw_if_index[VLIB_RX];
 
-         /* process 2 packets */
-
-         /* Remove ourself from the feature bitmap */
-         feature_bitmap0 =
-           vnet_buffer (b0)->l2.feature_bitmap & ~L2INPUT_FEAT_VTR;
-         feature_bitmap1 =
-           vnet_buffer (b1)->l2.feature_bitmap & ~L2INPUT_FEAT_VTR;
-
-         /* save for next feature graph nodes */
-         vnet_buffer (b0)->l2.feature_bitmap = feature_bitmap0;
-         vnet_buffer (b1)->l2.feature_bitmap = feature_bitmap1;
-
          /* Determine the next node */
-         next0 = feat_bitmap_get_next_node_index (msm->feat_next_node_index,
-                                                  feature_bitmap0);
-         next1 = feat_bitmap_get_next_node_index (msm->feat_next_node_index,
-                                                  feature_bitmap1);
+         next0 = vnet_l2_feature_next (b0, msm->feat_next_node_index,
+                                       L2INPUT_FEAT_VTR);
+         next1 = vnet_l2_feature_next (b1, msm->feat_next_node_index,
+                                       L2INPUT_FEAT_VTR);
 
          l2_output_config_t *config0;
          l2_output_config_t *config1;
@@ -188,10 +175,7 @@ l2_invtr_node_fn (vlib_main_t * vm,
              if (config0->output_vtr.push_and_pop_bytes)
                {
                  /* perform the tag rewrite on two packets */
-                 if (l2_vtr_process
-                     (b0,
-                      &(vec_elt_at_index
-                        (l2output_main.configs, sw_if_index0)->input_vtr)))
+                 if (l2_vtr_process (b0, &config0->input_vtr))
                    {
                      /* Drop packet */
                      next0 = L2_INVTR_NEXT_DROP;
@@ -212,10 +196,7 @@ l2_invtr_node_fn (vlib_main_t * vm,
            {
              if (config1->output_vtr.push_and_pop_bytes)
                {
-                 if (l2_vtr_process
-                     (b1,
-                      &(vec_elt_at_index
-                        (l2output_main.configs, sw_if_index1)->input_vtr)))
+                 if (l2_vtr_process (b1, &config1->input_vtr))
                    {
                      /* Drop packet */
                      next1 = L2_INVTR_NEXT_DROP;
@@ -270,7 +251,6 @@ l2_invtr_node_fn (vlib_main_t * vm,
          vlib_buffer_t *b0;
          u32 next0;
          u32 sw_if_index0;
-         u32 feature_bitmap0;
 
          /* speculatively enqueue b0 to the current next frame */
          bi0 = from[0];
@@ -284,18 +264,9 @@ l2_invtr_node_fn (vlib_main_t * vm,
 
          sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX];
 
-         /* process 1 packet */
-
-         /* Remove ourself from the feature bitmap */
-         feature_bitmap0 =
-           vnet_buffer (b0)->l2.feature_bitmap & ~L2INPUT_FEAT_VTR;
-
-         /* save for next feature graph nodes */
-         vnet_buffer (b0)->l2.feature_bitmap = feature_bitmap0;
-
          /* Determine the next node */
-         next0 = feat_bitmap_get_next_node_index (msm->feat_next_node_index,
-                                                  feature_bitmap0);
+         next0 = vnet_l2_feature_next (b0, msm->feat_next_node_index,
+                                       L2INPUT_FEAT_VTR);
 
          l2_output_config_t *config0;
          config0 = vec_elt_at_index (l2output_main.configs, sw_if_index0);
@@ -305,10 +276,7 @@ l2_invtr_node_fn (vlib_main_t * vm,
              if (config0->output_vtr.push_and_pop_bytes)
                {
                  /* perform the tag rewrite on one packet */
-                 if (l2_vtr_process
-                     (b0,
-                      &(vec_elt_at_index
-                        (l2output_main.configs, sw_if_index0)->input_vtr)))
+                 if (l2_vtr_process (b0, &config0->input_vtr))
                    {
                      /* Drop packet */
                      next0 = L2_INVTR_NEXT_DROP;