"Name", "PID", "Queue Length", "Queue VA", "Health");
/* *INDENT-OFF* */
- pool_foreach (regpp, am->vl_clients,
- ({
+ pool_foreach (regpp, am->vl_clients)
+ {
regp = *regpp;
if (regp)
regpp - am->vl_clients);
vec_add1 (confused_indices, regpp - am->vl_clients);
}
- }));
+ }
/* *INDENT-ON* */
/* This should "never happen," but if it does, fix it... */
api_trace_command_fn (vlib_main_t * vm,
unformat_input_t * input, vlib_cli_command_t * cmd)
{
+ unformat_input_t _line_input, *line_input = &_line_input;
u32 nitems = 256 << 10;
api_main_t *am = vlibapi_get_main ();
vl_api_trace_which_t which = VL_API_TRACE_RX;
FILE *fp;
int rv;
- while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ /* Get a line of input. */
+ if (!unformat_user (input, unformat_line_input, line_input))
+ return 0;
+
+ while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
{
- if (unformat (input, "on") || unformat (input, "enable"))
+ if (unformat (line_input, "on") || unformat (line_input, "enable"))
{
- if (unformat (input, "nitems %d", &nitems))
+ if (unformat (line_input, "nitems %d", &nitems))
;
vlib_worker_thread_barrier_sync (vm);
vl_msg_api_trace_configure (am, which, nitems);
vl_msg_api_trace_onoff (am, which, 1 /* on */ );
vlib_worker_thread_barrier_release (vm);
}
- else if (unformat (input, "off"))
+ else if (unformat (line_input, "off"))
{
vlib_worker_thread_barrier_sync (vm);
vl_msg_api_trace_onoff (am, which, 0);
vlib_worker_thread_barrier_release (vm);
}
- else if (unformat (input, "save %s", &filename))
+ else if (unformat (line_input, "save %s", &filename))
{
if (strstr ((char *) filename, "..")
|| index ((char *) filename, '/'))
vlib_cli_output (vm, "API trace saved to %s\n", chroot_filename);
goto out;
}
- else if (unformat (input, "dump %s", &filename))
+ else if (unformat (line_input, "dump %s", &filename))
{
vl_msg_api_process_file (vm, filename, first, last, DUMP);
}
- else if (unformat (input, "custom-dump %s", &filename))
+ else if (unformat (line_input, "custom-dump %s", &filename))
{
vl_msg_api_process_file (vm, filename, first, last, CUSTOM_DUMP);
}
- else if (unformat (input, "replay %s", &filename))
+ else if (unformat (line_input, "replay %s", &filename))
{
vl_msg_api_process_file (vm, filename, first, last, REPLAY);
}
- else if (unformat (input, "initializers %s", &filename))
+ else if (unformat (line_input, "initializers %s", &filename))
{
vl_msg_api_process_file (vm, filename, first, last, INITIALIZERS);
}
- else if (unformat (input, "tx"))
+ else if (unformat (line_input, "tx"))
{
which = VL_API_TRACE_TX;
}
- else if (unformat (input, "first %d", &first))
+ else if (unformat (line_input, "first %d", &first))
{
;
}
- else if (unformat (input, "last %d", &last))
+ else if (unformat (line_input, "last %d", &last))
{
;
}
- else if (unformat (input, "status"))
+ else if (unformat (line_input, "status"))
{
vlib_cli_output (vm, "%U", format_vl_msg_api_trace_status,
am, which);
}
- else if (unformat (input, "free"))
+ else if (unformat (line_input, "free"))
{
vlib_worker_thread_barrier_sync (vm);
vl_msg_api_trace_onoff (am, which, 0);
vl_msg_api_trace_free (am, which);
vlib_worker_thread_barrier_release (vm);
}
- else if (unformat (input, "post-mortem-on"))
+ else if (unformat (line_input, "post-mortem-on"))
vl_msg_api_post_mortem_dump_enable_disable (1 /* enable */ );
- else if (unformat (input, "post-mortem-off"))
+ else if (unformat (line_input, "post-mortem-off"))
vl_msg_api_post_mortem_dump_enable_disable (0 /* enable */ );
else
return clib_error_return (0, "unknown input `%U'",
out:
vec_free (filename);
vec_free (chroot_filename);
+ unformat_free (line_input);
return 0;
}