flow-hash: Add symmetric flag for flow hashing
[vpp.git] / src / vnet / dpo / dvr_dpo.c
index 02b97ee..4b440f8 100644 (file)
@@ -288,8 +288,12 @@ dvr_dpo_inline (vlib_main_t * vm,
                     (u8*)ethernet_buffer_get_header(b0));
             len1 = ((u8*)vlib_buffer_get_current(b1) -
                     (u8*)ethernet_buffer_get_header(b1));
-            vnet_buffer(b0)->l2.l2_len = len0;
-            vnet_buffer(b1)->l2.l2_len = len1;
+            vnet_buffer(b0)->l2.l2_len =
+                vnet_buffer(b0)->ip.save_rewrite_length =
+                   len0;
+            vnet_buffer(b1)->l2.l2_len =
+                vnet_buffer(b1)->ip.save_rewrite_length =
+                    len1;
             b0->flags |= VNET_BUFFER_F_IS_DVR;
             b1->flags |= VNET_BUFFER_F_IS_DVR;
 
@@ -349,7 +353,9 @@ dvr_dpo_inline (vlib_main_t * vm,
              */
             len0 = ((u8*)vlib_buffer_get_current(b0) -
                     (u8*)ethernet_buffer_get_header(b0));
-            vnet_buffer(b0)->l2.l2_len = len0;
+            vnet_buffer(b0)->l2.l2_len =
+                vnet_buffer(b0)->ip.save_rewrite_length =
+                    len0;
             b0->flags |= VNET_BUFFER_F_IS_DVR;
             vlib_buffer_advance(b0, -len0);
 
@@ -467,14 +473,12 @@ dvr_reinject_inline (vlib_main_t * vm,
             if (b0->flags & VNET_BUFFER_F_IS_DVR)
                 next0 = DVR_REINJECT_OUTPUT;
             else
-                vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_TX],
-                                  &next0, b0);
+                vnet_feature_next( &next0, b0);
 
             if (b1->flags & VNET_BUFFER_F_IS_DVR)
                 next1 = DVR_REINJECT_OUTPUT;
             else
-                vnet_feature_next(vnet_buffer(b1)->sw_if_index[VLIB_TX],
-                                  &next1, b1);
+                vnet_feature_next( &next1, b1);
 
             if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED))
             {
@@ -514,8 +518,7 @@ dvr_reinject_inline (vlib_main_t * vm,
             if (b0->flags & VNET_BUFFER_F_IS_DVR)
                 next0 = DVR_REINJECT_OUTPUT;
             else
-                vnet_feature_next(vnet_buffer(b0)->sw_if_index[VLIB_TX],
-                                  &next0, b0);
+                vnet_feature_next( &next0, b0);
 
             if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED))
             {