vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()
[vpp.git] / src / vlibmemory / vlib_api.c
index 5820168..f033070 100644 (file)
@@ -248,6 +248,13 @@ vl_api_save_msg_table (void)
   vec_free (serialized_message_table);
 }
 
+clib_error_t *vat_builtin_main_init (vlib_main_t * vm) __attribute__ ((weak));
+clib_error_t *
+vat_builtin_main_init (vlib_main_t * vm)
+{
+  return 0;
+}
+
 static uword
 vl_api_clnt_process (vlib_main_t * vm, vlib_node_runtime_t * node,
                     vlib_frame_t * f)
@@ -287,6 +294,10 @@ vl_api_clnt_process (vlib_main_t * vm, vlib_node_runtime_t * node,
   if (e)
     clib_error_report (e);
 
+  e = vat_builtin_main_init (vm);
+  if (e)
+    clib_error_report (e);
+
   sleep_time = 10.0;
   dead_client_scan_time = vlib_time_now (vm) + 10.0;
 
@@ -550,7 +561,7 @@ vl_api_rpc_call_reply_t_handler (vl_api_rpc_call_reply_t * mp)
 void
 vl_api_send_pending_rpc_requests (vlib_main_t * vm)
 {
-  vlib_main_t *vm_global = &vlib_global_main;
+  vlib_main_t *vm_global = vlib_get_first_main ();
 
   ASSERT (vm != vm_global);
 
@@ -565,7 +576,7 @@ vl_api_rpc_call_main_thread_inline (void *fp, u8 * data, u32 data_length,
                                    u8 force_rpc)
 {
   vl_api_rpc_call_t *mp;
-  vlib_main_t *vm_global = &vlib_global_main;
+  vlib_main_t *vm_global = vlib_get_first_main ();
   vlib_main_t *vm = vlib_get_main ();
 
   /* Main thread and not a forced RPC: call the function directly */