- (void) unix_shared_memory_queue_add_nolock (q, elem);
-}
-
-u32
-vl_api_get_msg_index (u8 * name_and_crc)
-{
- api_main_t *am = &api_main;
- uword *p;
-
- if (am->msg_index_by_name_and_crc)
- {
- p = hash_get_mem (am->msg_index_by_name_and_crc, name_and_crc);
- if (p)
- return p[0];
- }
- return ~0;
-}
-
-static inline vl_api_registration_t *
-vl_api_client_index_to_registration_internal (u32 handle)
-{
- vl_api_registration_t **regpp;
- vl_api_registration_t *regp;
- api_main_t *am = &api_main;
- u32 index;
-
- index = vl_msg_api_handle_get_index (handle);
- if ((am->shmem_hdr->application_restarts & VL_API_EPOCH_MASK)
- != vl_msg_api_handle_get_epoch (handle))
- {
- vl_msg_api_increment_missing_client_counter ();
- return 0;
- }
-
- regpp = am->vl_clients + index;
-
- if (pool_is_free (am->vl_clients, regpp))
- {
- vl_msg_api_increment_missing_client_counter ();
- return 0;
- }
- regp = *regpp;
- return (regp);
-}
-
-vl_api_registration_t *
-vl_api_client_index_to_registration (u32 index)
-{
- if (PREDICT_FALSE (socket_main.current_rp != 0))
- return socket_main.current_rp;
-
- return (vl_api_client_index_to_registration_internal (index));
-}
-
-unix_shared_memory_queue_t *
-vl_api_client_index_to_input_queue (u32 index)
-{
- vl_api_registration_t *regp;
- api_main_t *am = &api_main;
-
- /* Special case: vlib trying to send itself a message */
- if (index == (u32) ~ 0)
- return (am->shmem_hdr->vl_input_queue);
-
- regp = vl_api_client_index_to_registration_internal (index);
- if (!regp)
- return 0;
- return (regp->vl_input_queue);