Keep RPC traffic off the shared-memory API queue
[vpp.git] / src / vlibmemory / memory_api.h
index 9b87f5a..f658006 100644 (file)
@@ -19,6 +19,7 @@
 #define SRC_VLIBMEMORY_MEMORY_API_H_
 
 #include <svm/svm.h>
+#include <svm/ssvm.h>
 #include <svm/queue.h>
 #include <vlib/vlib.h>
 #include <vlibapi/api.h>
@@ -31,6 +32,8 @@ void vl_mem_api_dead_client_scan (api_main_t * am, vl_shmem_hdr_t * shm,
 int vl_mem_api_handle_msg_main (vlib_main_t * vm, vlib_node_runtime_t * node);
 int vl_mem_api_handle_msg_private (vlib_main_t * vm,
                                   vlib_node_runtime_t * node, u32 reg_index);
+int vl_mem_api_handle_rpc (vlib_main_t * vm, vlib_node_runtime_t * node);
+
 vl_api_registration_t *vl_mem_api_client_index_to_registration (u32 handle);
 void vl_mem_api_enable_disable (vlib_main_t * vm, int yesno);
 u32 vl_api_memclnt_create_internal (char *, svm_queue_t *);
@@ -57,6 +60,13 @@ vl_msg_api_handle_from_index_and_epoch (u32 index, u32 epoch)
   return handle;
 }
 
+static inline u8
+vl_msg_api_handle_is_valid (u32 handle, u32 restarts)
+{
+  u32 epoch = vl_msg_api_handle_get_epoch (handle);
+  return ((restarts & VL_API_EPOCH_MASK) == epoch);
+}
+
 #define VL_MEM_API_LOG_Q_LEN(fmt,qlen)                 \
 if (TRACE_VLIB_MEMORY_QUEUE)                           \
   do {                                                 \