ip6-rewrite: bug fix buffer->error in dual loop
[vpp.git] / src / vnet / ip / ip6_forward.c
index f599392..858dd73 100644 (file)
@@ -1808,6 +1808,10 @@ ip6_rewrite_inline_with_gso (vlib_main_t * vm,
                vnet_feature_arc_start (lm->output_feature_arc_index,
                                        tx_sw_if_index0, &next0, p0);
            }
+         else
+           {
+             p0->error = error_node->errors[error0];
+           }
          if (PREDICT_TRUE (error1 == IP6_ERROR_NONE))
            {
              p1->current_data -= rw_len1;
@@ -1822,6 +1826,10 @@ ip6_rewrite_inline_with_gso (vlib_main_t * vm,
                vnet_feature_arc_start (lm->output_feature_arc_index,
                                        tx_sw_if_index1, &next1, p1);
            }
+         else
+           {
+             p1->error = error_node->errors[error1];
+           }
 
          /* Guess we are only writing on simple Ethernet header. */
          vnet_rewrite_two_headers (adj0[0], adj1[0],
@@ -1954,6 +1962,10 @@ ip6_rewrite_inline_with_gso (vlib_main_t * vm,
                vnet_feature_arc_start (lm->output_feature_arc_index,
                                        tx_sw_if_index0, &next0, p0);
            }
+         else
+           {
+             p0->error = error_node->errors[error0];
+           }
 
          if (is_midchain)
            {
@@ -1969,8 +1981,6 @@ ip6_rewrite_inline_with_gso (vlib_main_t * vm,
                                          (u8 *) ip0);
            }
 
-         p0->error = error_node->errors[error0];
-
          from += 1;
          n_left_from -= 1;
          to_next += 1;