X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fcli.h;h=a81e964bf97b5efdf52e26f958bf6f60b2ec383f;hb=ad9d528;hp=009c7e82cf72836dce1fe3b67714fdc997e21a88;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vlib/cli.h b/src/vlib/cli.h index 009c7e82cf7..a81e964bf97 100644 --- a/src/vlib/cli.h +++ b/src/vlib/cli.h @@ -151,6 +151,7 @@ typedef struct vlib_cli_command_t *cli_command_registrations; } vlib_cli_main_t; +#ifndef CLIB_MARCH_VARIANT #define VLIB_CLI_COMMAND(x,...) \ __VA_ARGS__ vlib_cli_command_t x; \ static void __vlib_cli_command_registration_##x (void) \ @@ -162,7 +163,23 @@ static void __vlib_cli_command_registration_##x (void) \ x.next_cli_command = cm->cli_command_registrations; \ cm->cli_command_registrations = &x; \ } \ +static void __vlib_cli_command_unregistration_##x (void) \ + __attribute__((__destructor__)) ; \ +static void __vlib_cli_command_unregistration_##x (void) \ +{ \ + vlib_main_t * vm = vlib_get_main(); \ + vlib_cli_main_t *cm = &vm->cli_main; \ + VLIB_REMOVE_FROM_LINKED_LIST (cm->cli_command_registrations, &x, \ + next_cli_command); \ +} \ __VA_ARGS__ vlib_cli_command_t x +#else +/* create unused pointer to silence compiler warnings and get whole + function optimized out */ +#define VLIB_CLI_COMMAND(x,...) \ +static __clib_unused vlib_cli_command_t __clib_unused_##x +#endif + #define VLIB_CLI_PARSE_RULE(x) \ vlib_cli_parse_rule_t x /* Output to current CLI connection. */ @@ -181,6 +198,10 @@ clib_error_t *vlib_cli_register_parse_rule (struct vlib_main_t *vm, uword unformat_vlib_cli_sub_input (unformat_input_t * i, va_list * args); +/* Return an vector of strings consisting of possible auto-completions + * for a given input string */ +u8 **vlib_cli_get_possible_completions (u8 * input_str); + #endif /* included_vlib_cli_h */ /*