ip: reassembly: don't set error if no error
[vpp.git] / src / vnet / ip / reass / ip4_sv_reass.c
index b94e9b2..9b6116c 100644 (file)
@@ -466,8 +466,6 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
                {
                  next0 = IP4_SV_REASSEMBLY_NEXT_INPUT;
                }
-             vnet_buffer (b0)->ip.reass.save_rewrite_length =
-               vnet_buffer (b0)->ip.save_rewrite_length;
              vnet_buffer (b0)->ip.reass.is_non_first_fragment = 0;
              vnet_buffer (b0)->ip.reass.ip_proto = ip0->protocol;
              if (IP_PROTOCOL_TCP == ip0->protocol)
@@ -506,6 +504,7 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
            {
              next0 = IP4_SV_REASSEMBLY_NEXT_DROP;
              error0 = IP4_ERROR_REASS_MALFORMED_PACKET;
+             b0->error = node->errors[error0];
              goto packet_enqueue;
            }
          ip4_sv_reass_kv_t kv;
@@ -534,6 +533,7 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
            {
              next0 = IP4_SV_REASSEMBLY_NEXT_DROP;
              error0 = IP4_ERROR_REASS_LIMIT_REACHED;
+             b0->error = node->errors[error0];
              goto packet_enqueue;
            }
 
@@ -547,8 +547,6 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
                {
                  next0 = IP4_SV_REASSEMBLY_NEXT_INPUT;
                }
-             vnet_buffer (b0)->ip.reass.save_rewrite_length =
-               vnet_buffer (b0)->ip.save_rewrite_length;
              vnet_buffer (b0)->ip.reass.is_non_first_fragment =
                ! !fragment_first;
              vnet_buffer (b0)->ip.reass.ip_proto = reass->ip_proto;
@@ -560,7 +558,6 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
                reass->tcp_seq_number;
              vnet_buffer (b0)->ip.reass.l4_src_port = reass->l4_src_port;
              vnet_buffer (b0)->ip.reass.l4_dst_port = reass->l4_dst_port;
-             error0 = IP4_ERROR_NONE;
              if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
                {
                  ip4_sv_reass_add_trace (vm, node, rm, reass, bi0,
@@ -620,9 +617,6 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
                to_next[0] = bi0;
                to_next += 1;
                n_left_to_next -= 1;
-               ASSERT (vnet_buffer (b0)->ip.save_rewrite_length < (2 << 14));
-               vnet_buffer (b0)->ip.reass.save_rewrite_length =
-                 vnet_buffer (b0)->ip.save_rewrite_length;
                vnet_buffer (b0)->ip.reass.is_non_first_fragment =
                  ! !ip4_get_fragment_offset (vlib_buffer_get_current (b0));
                vnet_buffer (b0)->ip.reass.ip_proto = reass->ip_proto;
@@ -651,8 +645,6 @@ ip4_sv_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
          goto next_packet;
 
        packet_enqueue:
-         b0->error = node->errors[error0];
-
          to_next[0] = bi0;
          to_next += 1;
          n_left_to_next -= 1;
@@ -1122,8 +1114,14 @@ show_ip4_reass (vlib_main_t * vm,
   vlib_cli_output (vm, "Current IP4 reassemblies count: %lu\n",
                   (long unsigned) sum_reass_n);
   vlib_cli_output (vm,
-                  "Maximum configured concurrent IP4 reassemblies per worker-thread: %lu\n",
+                  "Maximum configured concurrent shallow virtual IP4 reassemblies per worker-thread: %lu\n",
                   (long unsigned) rm->max_reass_n);
+  vlib_cli_output (vm,
+                  "Maximum configured shallow virtual IP4 reassembly timeout: %lums\n",
+                  (long unsigned) rm->timeout_ms);
+  vlib_cli_output (vm,
+                  "Maximum configured shallow virtual IP4 reassembly expire walk interval: %lums\n",
+                  (long unsigned) rm->expire_walk_interval_ms);
   return 0;
 }