vl_msg_api_send_shmem (q, (u8 *) & rp);
}
-/* Application callback to clean up leftover registrations from this client */
-int vl_api_memclnt_delete_callback (u32 client_index) __attribute__ ((weak));
-
-int
-vl_api_memclnt_delete_callback (u32 client_index)
+static int
+call_reaper_functions (u32 client_index)
{
+ clib_error_t *error = 0;
+ _vl_msg_api_function_list_elt_t *i;
+
+ i = api_main.reaper_function_registrations;
+ while (i)
+ {
+ error = i->f (client_index);
+ if (error)
+ clib_error_report (error);
+ i = i->next_init_function;
+ }
return 0;
}
handle = mp->index;
- if (vl_api_memclnt_delete_callback (handle))
+ if (call_reaper_functions (handle))
return;
epoch = vl_msg_api_handle_get_epoch (handle);
* vl_api_init
*/
static int
-memory_api_init (char *region_name)
+memory_api_init (const char *region_name)
{
int rv;
vl_msg_api_msg_config_t cfg;
handle = vl_msg_api_handle_from_index_and_epoch
(dead_indices[i], shm->application_restarts);
- (void) vl_api_memclnt_delete_callback (handle);
+ (void) call_reaper_functions (handle);
}
}
VLIB_INIT_FUNCTION (vlibmemory_init);
void
-vl_set_memory_region_name (char *name)
+vl_set_memory_region_name (const char *name)
{
api_main_t *am = &api_main;
static void
vl_api_rpc_call_t_handler (vl_api_rpc_call_t * mp)
{
- vl_api_rpc_reply_t *rmp;
+ vl_api_rpc_call_reply_t *rmp;
int (*fp) (void *);
i32 rv = 0;
vlib_main_t *vm = vlib_get_main ();
if (q)
{
rmp = vl_msg_api_alloc_as_if_client (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_RPC_REPLY);
+ rmp->_vl_msg_id = ntohs (VL_API_RPC_CALL_REPLY);
rmp->context = mp->context;
rmp->retval = rv;
vl_msg_api_send_shmem (q, (u8 *) & rmp);
}
static void
-vl_api_rpc_reply_t_handler (vl_api_rpc_reply_t * mp)
+vl_api_rpc_call_reply_t_handler (vl_api_rpc_call_reply_t * mp)
{
clib_warning ("unimplemented");
}
#define foreach_rpc_api_msg \
_(RPC_CALL,rpc_call) \
-_(RPC_REPLY,rpc_reply)
+_(RPC_CALL_REPLY,rpc_call_reply)
#define foreach_plugin_trace_msg \
_(TRACE_PLUGIN_MSG_IDS,trace_plugin_msg_ids)