#include <vlibmemory/vl_memory_api_h.h>
#undef vl_endianfun
-u8 *
-vl_api_serialize_message_table (api_main_t * am, u8 * vector)
-{
- serialize_main_t _sm, *sm = &_sm;
- hash_pair_t *hp;
- u32 nmsg = hash_elts (am->msg_index_by_name_and_crc);
-
- serialize_open_vector (sm, vector);
-
- /* serialize the count */
- serialize_integer (sm, nmsg, sizeof (u32));
-
- /* *INDENT-OFF* */
- hash_foreach_pair (hp, am->msg_index_by_name_and_crc,
- ({
- serialize_likely_small_unsigned_integer (sm, hp->value[0]);
- serialize_cstring (sm, (char *) hp->key);
- }));
- /* *INDENT-ON* */
-
- return serialize_close_vector (sm);
-}
-
static void
vl_api_get_first_msg_id_t_handler (vl_api_get_first_msg_id_t * mp)
{
vl_api_get_first_msg_id_reply_t *rmp;
vl_api_registration_t *regp;
uword *p;
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
vl_api_msg_range_t *rp;
u8 name[64];
u16 first_msg_id = ~0;
void
vl_api_api_versions_t_handler (vl_api_api_versions_t * mp)
{
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
vl_api_api_versions_reply_t *rmp;
vl_api_registration_t *reg;
u32 nmsg = vec_len (am->api_version_list);
send_one_plugin_msg_ids_msg (u8 * name, u16 first_msg_id, u16 last_msg_id)
{
vl_api_trace_plugin_msg_ids_t *mp;
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
vl_shmem_hdr_t *shmem_hdr = am->shmem_hdr;
svm_queue_t *q;
vl_api_save_msg_table (void)
{
u8 *serialized_message_table;
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
u8 *chroot_file;
int fd, rv;
vl_shmem_hdr_t *shm;
svm_queue_t *q;
clib_error_t *e;
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
f64 dead_client_scan_time;
f64 sleep_time, start_time;
f64 vector_rate;
q = shm->vl_input_queue;
e = vlib_call_init_exit_functions
- (vm, vm->api_init_function_registrations, 1 /* call_once */ );
+ (vm, &vm->api_init_function_registrations, 1 /* call_once */ );
if (e)
clib_error_report (e);
* of the application to process the request, the client will
* sit and wait for Godot...
*/
- vector_rate = vlib_last_vector_length_per_node (vm);
+ vector_rate = (f64) vlib_last_vectors_per_main_loop (vm);
start_time = vlib_time_now (vm);
while (1)
{
case SOCKET_READ_EVENT:
for (i = 0; i < vec_len (event_data); i++)
{
+ vl_api_registration_t *regp;
+
a = pool_elt_at_index (socket_main.process_args, event_data[i]);
- vl_socket_process_api_msg (a->clib_file, a->regp,
- (i8 *) a->data);
+ regp = vl_socket_get_registration (a->reg_index);
+ if (regp)
+ {
+ vl_socket_process_api_msg (regp, (i8 *) a->data);
+ a = pool_elt_at_index (socket_main.process_args,
+ event_data[i]);
+ }
vec_free (a->data);
pool_put (socket_main.process_args, a);
}
.type = VLIB_NODE_TYPE_PROCESS,
.name = "api-rx-from-ring",
.state = VLIB_NODE_STATE_DISABLED,
+ .process_log2_n_stack_bytes = 18,
};
/* *INDENT-ON* */
vec_validate (long_msg, 4095);
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
while (n_left_from > 0)
{
}
/* Free what we've been given. */
- vlib_buffer_free (vm, vlib_frame_args (frame), n_packets);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), n_packets);
return n_packets;
}
{
vlib_main_t *vm_global = &vlib_global_main;
- /* Our own RPCs are already pending */
- if (vm == vm_global)
- return;
+ ASSERT (vm != vm_global);
clib_spinlock_lock_if_init (&vm_global->pending_rpc_lock);
vec_append (vm_global->pending_rpc_requests, vm->pending_rpc_requests);
mp = vl_msg_api_alloc_as_if_client (sizeof (*mp) + data_length);
clib_memset (mp, 0, sizeof (*mp));
- clib_memcpy (mp->data, data, data_length);
+ clib_memcpy_fast (mp->data, data, data_length);
mp->_vl_msg_id = ntohs (VL_API_RPC_CALL);
mp->function = pointer_to_uword (fp);
mp->need_barrier_sync = 1;
static void
vl_api_trace_plugin_msg_ids_t_handler (vl_api_trace_plugin_msg_ids_t * mp)
{
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
vl_api_msg_range_t *rp;
uword *p;
static clib_error_t *
rpc_api_hookup (vlib_main_t * vm)
{
- api_main_t *am = &api_main;
+ api_main_t *am = vlibapi_get_main ();
#define _(N,n) \
vl_msg_api_set_handlers(VL_API_##N, #n, \
vl_api_##n##_t_handler, \