ipsec: IPSec protection for multi-point tunnel interfaces
[vpp.git] / src / vlibapi / api_shared.c
index a553a5b..aba853d 100644 (file)
@@ -1063,20 +1063,32 @@ vl_msg_api_get_msg_index (u8 * name_and_crc)
   return ~0;
 }
 
+void *
+vl_msg_push_heap_w_region (svm_region_t * vlib_rp)
+{
+  pthread_mutex_lock (&vlib_rp->mutex);
+  return svm_push_data_heap (vlib_rp);
+}
+
 void *
 vl_msg_push_heap (void)
 {
   api_main_t *am = vlibapi_get_main ();
-  pthread_mutex_lock (&am->vlib_rp->mutex);
-  return svm_push_data_heap (am->vlib_rp);
+  return vl_msg_push_heap_w_region (am->vlib_rp);
+}
+
+void
+vl_msg_pop_heap_w_region (svm_region_t * vlib_rp, void *oldheap)
+{
+  svm_pop_heap (oldheap);
+  pthread_mutex_unlock (&vlib_rp->mutex);
 }
 
 void
 vl_msg_pop_heap (void *oldheap)
 {
   api_main_t *am = vlibapi_get_main ();
-  svm_pop_heap (oldheap);
-  pthread_mutex_unlock (&am->vlib_rp->mutex);
+  vl_msg_pop_heap_w_region (am->vlib_rp, oldheap);
 }
 
 int