summaryrefslogtreecommitdiffstats
path: root/src/vlib/cli.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vlib/cli.c')
-rw-r--r--src/vlib/cli.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/vlib/cli.c b/src/vlib/cli.c
index 4e8f3ae5ae5..835cb87d13d 100644
--- a/src/vlib/cli.c
+++ b/src/vlib/cli.c
@@ -684,7 +684,7 @@ vlib_unix_error_report (vlib_main_t * vm, clib_error_t * error)
}
/* Process CLI input. */
-void
+int
vlib_cli_input (vlib_main_t * vm,
unformat_input_t * input,
vlib_cli_output_function_t * function, uword function_arg)
@@ -694,6 +694,7 @@ vlib_cli_input (vlib_main_t * vm,
clib_error_t *error;
vlib_cli_output_function_t *save_function;
uword save_function_arg;
+ int rv = 0;
save_function = cp->output_function;
save_function_arg = cp->output_function_arg;
@@ -713,11 +714,15 @@ vlib_cli_input (vlib_main_t * vm,
{
vlib_cli_output (vm, "%v", error->what);
vlib_unix_error_report (vm, error);
+ /* clib_error_return is unfortunately often called with a '0'
+ return code */
+ rv = error->code != 0 ? error->code : -1;
clib_error_free (error);
}
cp->output_function = save_function;
cp->output_function_arg = save_function_arg;
+ return rv;
}
/* Output to current CLI connection. */