buffers: fix buffer linearization
[vpp.git] / src / vlibmemory / vlib_api.c
index 297ac37..f9ed891 100644 (file)
@@ -248,10 +248,18 @@ 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)
 {
+  vlib_global_main_t *vgm = vlib_get_global_main ();
   int private_segment_rotor = 0, i, rv;
   vl_socket_args_for_process_t *a;
   vl_shmem_hdr_t *shm;
@@ -282,8 +290,12 @@ vl_api_clnt_process (vlib_main_t * vm, vlib_node_runtime_t * node,
   shm = am->shmem_hdr;
   q = shm->vl_input_queue;
 
-  e = vlib_call_init_exit_functions
-    (vm, &vm->api_init_function_registrations, 1 /* call_once */ );
+  e = vlib_call_init_exit_functions (vm, &vgm->api_init_function_registrations,
+                                    1 /* call_once */, 1 /* is_global */);
+  if (e)
+    clib_error_report (e);
+
+  e = vat_builtin_main_init (vm);
   if (e)
     clib_error_report (e);
 
@@ -425,6 +437,7 @@ VLIB_REGISTER_NODE (vl_api_clnt_node) =
   .type = VLIB_NODE_TYPE_PROCESS,
   .name = "api-rx-from-ring",
   .state = VLIB_NODE_STATE_DISABLED,
+  .process_log2_n_stack_bytes = 18,
 };
 /* *INDENT-ON* */
 
@@ -549,7 +562,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);
 
@@ -564,7 +577,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 */