Keep RPC traffic off the shared-memory API queue
[vpp.git] / src / vlibmemory / memory_api.c
index a444ec7..aa0e25b 100644 (file)
@@ -703,6 +703,26 @@ vl_mem_api_handle_msg_main (vlib_main_t * vm, vlib_node_runtime_t * node)
                                    am->shmem_hdr->vl_input_queue);
 }
 
+int
+vl_mem_api_handle_rpc (vlib_main_t * vm, vlib_node_runtime_t * node)
+{
+  api_main_t *am = &api_main;
+  int i;
+  uword *rpc_requests, mp;
+
+  clib_spinlock_lock_if_init (&vm->pending_rpc_lock);
+  rpc_requests = vm->pending_rpc_requests;
+
+  for (i = 0; i < vec_len (rpc_requests); i++)
+    {
+      mp = rpc_requests[i];
+      vl_msg_api_handler_with_vm_node (am, (void *) mp, vm, node);
+    }
+  vec_reset_length (vm->pending_rpc_requests);
+  clib_spinlock_unlock_if_init (&vm->pending_rpc_lock);
+  return 0;
+}
+
 int
 vl_mem_api_handle_msg_private (vlib_main_t * vm, vlib_node_runtime_t * node,
                               u32 reg_index)