vppinfra: fix RC in bihash instantiation
[vpp.git] / src / vlib / trace.c
index 530598d..384885a 100644 (file)
@@ -40,7 +40,7 @@
 #include <vlib/vlib.h>
 #include <vlib/threads.h>
 
-u8 *vnet_trace_dummy;
+u8 *vnet_trace_placeholder;
 
 /* Helper function for nodes which only trace buffer data. */
 void
@@ -351,6 +351,13 @@ VLIB_CLI_COMMAND (show_trace_cli,static) = {
 };
 /* *INDENT-ON* */
 
+int vlib_enable_disable_pkt_trace_filter (int enable) __attribute__ ((weak));
+int
+vlib_enable_disable_pkt_trace_filter (int enable)
+{
+  return 0;
+}
+
 static clib_error_t *
 cli_add_trace_buffer (vlib_main_t * vm,
                      unformat_input_t * input, vlib_cli_command_t * cmd)
@@ -361,13 +368,15 @@ cli_add_trace_buffer (vlib_main_t * vm,
   vlib_trace_node_t *tn;
   u32 node_index, add;
   u8 verbose = 0;
+  int filter = 0;
   clib_error_t *error = 0;
 
   if (!unformat_user (input, unformat_line_input, line_input))
     return 0;
 
-  if (vnet_trace_dummy == 0)
-    vec_validate_aligned (vnet_trace_dummy, 2048, CLIB_CACHE_LINE_BYTES);
+  if (vnet_trace_placeholder == 0)
+    vec_validate_aligned (vnet_trace_placeholder, 2048,
+                         CLIB_CACHE_LINE_BYTES);
 
   while (unformat_check_input (line_input) != (uword) UNFORMAT_END_OF_INPUT)
     {
@@ -376,6 +385,8 @@ cli_add_trace_buffer (vlib_main_t * vm,
        ;
       else if (unformat (line_input, "verbose"))
        verbose = 1;
+      else if (unformat (line_input, "filter"))
+       filter = 1;
       else
        {
          error = clib_error_create ("expected NODE COUNT, got `%U'",
@@ -395,6 +406,15 @@ cli_add_trace_buffer (vlib_main_t * vm,
       goto done;
     }
 
+  if (filter)
+    {
+      if (vlib_enable_disable_pkt_trace_filter (1 /* enable */ ))
+       {
+         error = clib_error_create ("No packet trace filter configured...");
+         goto done;
+       }
+    }
+
   /* *INDENT-OFF* */
   foreach_vlib_main ((
     {
@@ -421,7 +441,6 @@ VLIB_CLI_COMMAND (add_trace_cli,static) = {
 };
 /* *INDENT-ON* */
 
-
 /*
  * Configure a filter for packet traces.
  *
@@ -523,6 +542,7 @@ static clib_error_t *
 cli_clear_trace_buffer (vlib_main_t * vm,
                        unformat_input_t * input, vlib_cli_command_t * cmd)
 {
+  vlib_enable_disable_pkt_trace_filter (0 /* enable */ );
   clear_trace_buffer ();
   return 0;
 }
@@ -535,12 +555,33 @@ VLIB_CLI_COMMAND (clear_trace_cli,static) = {
 };
 /* *INDENT-ON* */
 
-/* Dummy function to get us linked in. */
+/* Placeholder function to get us linked in. */
 void
 vlib_trace_cli_reference (void)
 {
 }
 
+int
+vnet_is_packet_traced (vlib_buffer_t * b,
+                      u32 classify_table_index, int func)
+__attribute__ ((weak));
+
+int
+vnet_is_packet_traced (vlib_buffer_t * b, u32 classify_table_index, int func)
+{
+  clib_warning ("BUG: STUB called");
+  return 1;
+}
+
+void *
+vlib_add_trace (vlib_main_t * vm,
+               vlib_node_runtime_t * r, vlib_buffer_t * b, u32 n_data_bytes)
+{
+  return vlib_add_trace_inline (vm, r, b, n_data_bytes);
+}
+
+
+
 /*
  * fd.io coding-style-patch-verification: ON
  *