misc: move to new pool_foreach macros
[vpp.git] / src / vlib / trace.c
index abd1166..1527444 100644 (file)
@@ -201,6 +201,15 @@ filter_accept (vlib_trace_main_t * tm, vlib_trace_header_t * h)
   if (tm->filter_flag == 0)
     return 1;
 
+  /*
+   * When capturing a post-mortem dispatch trace,
+   * toss all existing traces once per dispatch cycle.
+   * So we can trace 4 billion pkts without running out of
+   * memory...
+   */
+  if (tm->filter_flag == FILTER_FLAG_POST_MORTEM)
+    return 0;
+
   if (tm->filter_flag == FILTER_FLAG_INCLUDE)
     {
       while (h < e)
@@ -249,15 +258,15 @@ trace_apply_filter (vlib_main_t * vm)
    */
   n_accepted = 0;
   /* *INDENT-OFF* */
-  pool_foreach (h, tm->trace_buffer_pool,
-   ({
+  pool_foreach (h, tm->trace_buffer_pool)
+    {
       accept = filter_accept(tm, h[0]);
 
       if ((n_accepted == tm->filter_count) || !accept)
           vec_add1 (traces_to_remove, h);
       else
           n_accepted++;
-  }));
+  }
   /* *INDENT-ON* */
 
   /* remove all traces that we don't want to keep */
@@ -310,10 +319,10 @@ cli_show_trace_buffer (vlib_main_t * vm,
     trace_apply_filter(this_vlib_main);
 
     traces = 0;
-    pool_foreach (h, tm->trace_buffer_pool,
-    ({
+    pool_foreach (h, tm->trace_buffer_pool)
+     {
       vec_add1 (traces, h[0]);
-    }));
+    }
 
     if (vec_len (traces) == 0)
       {