vlib: fix trace number accounting
[vpp.git] / src / vlib / handoff_trace.c
index 7a67438..964c095 100644 (file)
@@ -73,12 +73,13 @@ typedef enum
 {
   HANDOFF_TRACE_NEXT_DROP,
   HANDOFF_TRACE_N_NEXT,
-} tdummy_next_t;
+} tplaceholder_next_t;
 
 /* *INDENT-OFF* */
 VLIB_REGISTER_NODE (handoff_trace_node, static) =
 {
   .name = "handoff_trace",
+  .flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
   .function = handoff_trace_node_fn,
   .vector_size = sizeof (u32),
   .format_trace = format_handoff_trace,
@@ -95,7 +96,7 @@ VLIB_REGISTER_NODE (handoff_trace_node, static) =
 };
 /* *INDENT-ON* */
 
-void
+int
 vlib_add_handoff_trace (vlib_main_t * vm, vlib_buffer_t * b)
 {
   u32 prev_thread = vlib_buffer_get_trace_thread (b);
@@ -104,13 +105,15 @@ vlib_add_handoff_trace (vlib_main_t * vm, vlib_buffer_t * b)
   vlib_node_runtime_t *node
     = vlib_node_get_runtime (vm, handoff_trace_node.index);
 
-  vlib_trace_buffer (vm, node, 0 /* fake next frame index */ ,
-                    b, 1 /* folllow chain */ );
+  if (PREDICT_FALSE
+      (!vlib_trace_buffer
+       (vm, node, 0 /* fake next frame index */ , b, 1 /* follow chain */ )))
+    return 0;
 
   t = vlib_add_trace (vm, node, b, sizeof (*t));
-
   t->prev_thread = prev_thread;
   t->prev_trace_index = prev_trace_index;
+  return 1;
 }