X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibmemory%2Fmemory_api.c;h=1f5da4c786e92e4484a3288d130b4ad5e78bc422;hb=6bd197ebb9fd9ae271449ad3937ae076d85c6479;hp=4d31b35f13272f712c6b842275d0038c961dd8b5;hpb=048a4e5a000017d0d632ebf02dcc23d9bf9ccf72;p=vpp.git diff --git a/src/vlibmemory/memory_api.c b/src/vlibmemory/memory_api.c index 4d31b35f132..1f5da4c786e 100644 --- a/src/vlibmemory/memory_api.c +++ b/src/vlibmemory/memory_api.c @@ -157,6 +157,7 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp) int rv = 0; void *oldheap; api_main_t *am = &api_main; + u8 *msg_table; /* * This is tortured. Maintain a vlib-address-space private @@ -209,6 +210,11 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp) am->serialized_message_table_in_shmem = vl_api_serialize_message_table (am, 0); + if (am->vlib_rp != am->vlib_primary_rp) + msg_table = vl_api_serialize_message_table (am, 0); + else + msg_table = am->serialized_message_table_in_shmem; + pthread_mutex_unlock (&svm->mutex); svm_pop_heap (oldheap); @@ -220,8 +226,7 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp) am->shmem_hdr->application_restarts); rp->context = mp->context; rp->response = ntohl (rv); - rp->message_table = - pointer_to_uword (am->serialized_message_table_in_shmem); + rp->message_table = pointer_to_uword (msg_table); vl_msg_api_send_shmem (q, (u8 *) & rp); } @@ -459,7 +464,7 @@ vl_mem_api_init (const char *region_name) return 0; } -static clib_error_t * +clib_error_t * map_api_segment_init (vlib_main_t * vm) { api_main_t *am = &api_main; @@ -473,8 +478,6 @@ map_api_segment_init (vlib_main_t * vm) return 0; } -VLIB_INIT_FUNCTION (map_api_segment_init); - static void send_memclnt_keepalive (vl_api_registration_t * regp, f64 now) { @@ -916,8 +919,6 @@ vlibmemory_init (vlib_main_t * vm) return error; } -VLIB_INIT_FUNCTION (vlibmemory_init); - void vl_set_memory_region_name (const char *name) {