ip: add tests for message size verification
[vpp.git] / src / vlib / cli.h
index 6d6d7e2..83b4eab 100644 (file)
@@ -41,6 +41,7 @@
 #define included_vlib_cli_h
 
 #include <vppinfra/format.h>
+#include <vlib/log.h>
 
 struct vlib_cli_command_t;
 
@@ -132,7 +133,7 @@ typedef struct vlib_cli_command_t
 
 typedef void (vlib_cli_output_function_t) (uword arg,
                                           u8 * buffer, uword buffer_bytes);
-typedef struct
+typedef struct vlib_cli_main_t
 {
   /* Vector of all known commands. */
   vlib_cli_command_t *commands;
@@ -140,45 +141,46 @@ typedef struct
   /* Hash table mapping normalized path to index into all_commands. */
   uword *command_index_by_path;
 
-  /* Vector of all known parse rules. */
-  vlib_cli_parse_rule_t *parse_rules;
-
-  /* Hash table mapping parse rule name to index into parse_rule vector. */
-  uword *parse_rule_index_by_name;
-
-  /* Data parsed for rules. */
-  void **parse_rule_data;
-
   /* registration list added by constructors */
   vlib_cli_command_t *cli_command_registrations;
 
   /* index vector, to sort commands, etc. */
   u32 *sort_vector;
 
+
+  /* performance counter callback */
+  void (**perf_counter_cbs)
+    (struct vlib_cli_main_t *, u32 id, int before_or_after);
+  void (**perf_counter_cbs_tmp)
+    (struct vlib_cli_main_t *, u32 id, int before_or_after);
+
+  /* cli log */
+  vlib_log_class_t log;
+
 } 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)                  \
-    __attribute__((__constructor__)) ;                                  \
-static void __vlib_cli_command_registration_##x (void)                  \
-{                                                                       \
-    vlib_main_t * vm = vlib_get_main();                                 \
-    vlib_cli_main_t *cm = &vm->cli_main;                                \
-    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
+#define VLIB_CLI_COMMAND(x, ...)                                              \
+  __VA_ARGS__ vlib_cli_command_t x;                                           \
+  static void __vlib_cli_command_registration_##x (void)                      \
+    __attribute__ ((__constructor__));                                        \
+  static void __vlib_cli_command_registration_##x (void)                      \
+  {                                                                           \
+    vlib_global_main_t *vgm = vlib_get_global_main ();                        \
+    vlib_cli_main_t *cm = &vgm->cli_main;                                     \
+    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_global_main_t *vgm = vlib_get_global_main ();                        \
+    vlib_cli_main_t *cm = &vgm->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 */