API:support hidden sw interfaces
[vpp.git] / src / vpp / api / api_main.c
index 6ae510b..a59524c 100644 (file)
@@ -47,6 +47,8 @@ api_main_init (vlib_main_t * vm)
 
   vam->vlib_main = vm;
   vam->my_client_index = (u32) ~ 0;
+  /* Ensure that vam->inbuf is never NULL */
+  vec_validate (vam->inbuf, 0);
   init_error_string_table (vam);
   rv = vat_plugin_init (vam);
   if (rv)
@@ -56,6 +58,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)
@@ -72,6 +84,14 @@ api_command_fn (vlib_main_t * vm,
 
   vam->vl_input_queue = am->shmem_hdr->vl_input_queue;
 
+#ifdef __COVERITY__
+  /*
+   * Convince Coverity that it's not a NULL pointer...
+   * Done once for real below, since we never vec_free(vam->inbuf);
+   */
+  vec_validate (vam->inbuf, 0);
+#endif
+
   vec_reset_length (vam->inbuf);
   vam->input = &_input;