GBP: l3-out subnets
[vpp.git] / src / plugins / nsim / node.c
index 69dc9be..d641377 100644 (file)
@@ -45,9 +45,9 @@ format_nsim_trace (u8 * s, va_list * args)
 
   return s;
 }
-#endif /* CLIB_MARCH_VARIANT */
 
 vlib_node_registration_t nsim_node;
+#endif /* CLIB_MARCH_VARIANT */
 
 #define foreach_nsim_error                              \
 _(BUFFERED, "Packets buffered")                         \
@@ -121,11 +121,14 @@ nsim_inline (vlib_main_t * vm,
            ? nsm->sw_if_index1 : nsm->sw_if_index0;
          ep->current_length = vlib_buffer_length_in_chain (vm, b[0]);
          ASSERT (ep->current_length <= WHEEL_ENTRY_DATA_SIZE);
-         clib_memcpy (ep->data, vlib_buffer_get_current (b[0]),
-                      ep->current_length);
+         clib_memcpy_fast (ep->data, vlib_buffer_get_current (b[0]),
+                           ep->current_length);
        }
       else                     /* out of wheel space, drop pkt */
-       b[0]->error = no_buffer_error;
+       {
+         b[0]->error = no_buffer_error;
+         is_drop0 = 1;
+       }
 
       if (is_trace)
        {
@@ -134,8 +137,7 @@ nsim_inline (vlib_main_t * vm,
              nsim_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t));
              t->expires = expires;
              t->is_drop = is_drop0;
-             if (is_drop0 == 0)
-               t->tx_sw_if_index = ep->tx_sw_if_index;
+             t->tx_sw_if_index = (is_drop0 == 0) ? ep->tx_sw_if_index : 0;
            }
        }