diff options
Diffstat (limited to 'src/vnet/session/session_cli.c')
-rw-r--r-- | src/vnet/session/session_cli.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/vnet/session/session_cli.c b/src/vnet/session/session_cli.c index 344937c684a..ba2cba02164 100644 --- a/src/vnet/session/session_cli.c +++ b/src/vnet/session/session_cli.c @@ -868,6 +868,62 @@ VLIB_CLI_COMMAND (session_enable_disable_command, static) = }; /* *INDENT-ON* */ +static clib_error_t * +show_session_stats_fn (vlib_main_t *vm, unformat_input_t *input, + vlib_cli_command_t *cmd) +{ + session_main_t *smm = &session_main; + session_worker_t *wrk; + unsigned int *e; + + if (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + return clib_error_return (0, "unknown input `%U'", format_unformat_error, + input); + + vec_foreach (wrk, smm->wrk) + { + vlib_cli_output (vm, "Thread %u:\n", wrk - smm->wrk); + e = wrk->stats.errors; +#define _(name, str) \ + if (e[SESSION_EP_##name]) \ + vlib_cli_output (vm, " %lu %s", e[SESSION_EP_##name], str); + foreach_session_error +#undef _ + } + return 0; +} + +VLIB_CLI_COMMAND (show_session_stats_command, static) = { + .path = "show session stats", + .short_help = "show session stats", + .function = show_session_stats_fn, +}; + +static clib_error_t * +clear_session_stats_fn (vlib_main_t *vm, unformat_input_t *input, + vlib_cli_command_t *cmd) +{ + session_main_t *smm = &session_main; + session_worker_t *wrk; + + if (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + return clib_error_return (0, "unknown input `%U'", format_unformat_error, + input); + + vec_foreach (wrk, smm->wrk) + { + clib_memset (&wrk->stats, 0, sizeof (wrk->stats)); + } + + return 0; +} + +VLIB_CLI_COMMAND (clear_session_stats_command, static) = { + .path = "clear session stats", + .short_help = "clear session stats", + .function = clear_session_stats_fn, +}; + /* * fd.io coding-style-patch-verification: ON * |