Missing plugin binary API command fns found after brief search 57/5657/2
authorDave Barach <dave@barachs.net>
Tue, 7 Mar 2017 17:52:31 +0000 (12:52 -0500)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 7 Mar 2017 21:33:46 +0000 (21:33 +0000)
Create hash tables before loading plugins. Previous init sequence
wiped out most if not all of them.

Change-Id: I5dd628895f68f740d525951511a9fef1822d39da
Signed-off-by: Dave Barach <dave@barachs.net>
src/vat/api_format.c
src/vat/plugin.c
src/vpp/api/api_main.c
src/vpp/vnet/main.c

index b5943f0..fb596fe 100644 (file)
@@ -18314,13 +18314,13 @@ vat_api_hookup (vat_main_t * vam)
 
 #if (VPP_API_TEST_BUILTIN==0)
   vl_msg_api_set_first_available_msg_id (VL_MSG_FIRST_AVAILABLE);
-#endif
 
   vam->sw_if_index_by_interface_name = hash_create_string (0, sizeof (uword));
 
   vam->function_by_name = hash_create_string (0, sizeof (uword));
 
   vam->help_by_name = hash_create_string (0, sizeof (uword));
+#endif
 
   /* API messages we can send */
 #define _(n,h) hash_set_mem (vam->function_by_name, #n, api_##n);
index c1cc928..20de8c5 100644 (file)
@@ -181,7 +181,6 @@ vat_plugin_init (vat_main_t * vam)
 {
   plugin_main_t *pm = &vat_plugin_main;
 
-
   pm->plugin_path = format (0, "%s%c", vat_plugin_path, 0);
   if (vat_plugin_name_filter)
     pm->plugin_name_filter = format (0, "%s%c", vat_plugin_name_filter, 0);
index 6ae510b..7913bc0 100644 (file)
@@ -56,6 +56,16 @@ api_main_init (vlib_main_t * vm)
 
 VLIB_INIT_FUNCTION (api_main_init);
 
+void
+vat_plugin_hash_create (void)
+{
+  vat_main_t *vam = &vat_main;
+
+  vam->sw_if_index_by_interface_name = hash_create_string (0, sizeof (uword));
+  vam->function_by_name = hash_create_string (0, sizeof (uword));
+  vam->help_by_name = hash_create_string (0, sizeof (uword));
+}
+
 static clib_error_t *
 api_command_fn (vlib_main_t * vm,
                unformat_input_t * input, vlib_cli_command_t * cmd)
index 4a96ca9..a566d95 100644 (file)
@@ -25,6 +25,8 @@
 static void
 vpe_main_init (vlib_main_t * vm)
 {
+  void vat_plugin_hash_create (void);
+
   if (CLIB_DEBUG > 0)
     vlib_unix_cli_set_prompt ("DBGvpp# ");
   else
@@ -33,6 +35,10 @@ vpe_main_init (vlib_main_t * vm)
   /* Turn off network stack components which we don't want */
   vlib_mark_init_function_complete (vm, srp_init);
 
+  /*
+   * Create the binary api plugin hashes before loading plugins
+   */
+  vat_plugin_hash_create ();
 }
 
 /*