GBP: add allowed ethertypes to contracts
[vpp.git] / src / vlib / cli.h
index 009c7e8..a81e964 100644 (file)
@@ -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 */
 
 /*