14   vat_main_t *vam = va_arg (*args, vat_main_t *);
    15   i32 error = va_arg (*args, 
u32);
    18   p = 
hash_get (vam->error_string_by_error_number, -error);
    21     s = 
format (s, 
"%s", p[0]);
    23     s = 
format (s, 
"%d", error);
    34 #define _(n,v,s) hash_set (vam->error_string_by_error_number, -v, s);    38   hash_set (vam->error_string_by_error_number, 99, 
"Misc");
    41 #if VPP_API_TEST_BUILTIN > 0    50   vam->my_client_index = (
u32) ~ 0;
    82   if (vam->my_client_index != ~0)
   101   regp->
name = 
format (0, 
"%s", 
"vpp-internal");
   111   api_sw_interface_dump (vam);
   121   u8 *cmdp, *argsp, *this_cmd;
   125   int (*fp) (vat_main_t *);
   130   _vec_len (vam->inbuf) = 0;
   132   vam->input = &_input;
   145   this_cmd = cmdp = vam->inbuf;
   148   while (cmdp < (this_cmd + 
vec_len (this_cmd)))
   150       if (*cmdp == 
' ' || *cmdp == 
'\t' || *cmdp == 
'\n')
   161   while (argsp < (this_cmd + 
vec_len (this_cmd)))
   163       if (*argsp != 
' ' && *argsp != 
'\t' && *argsp != 
'\n' && *argsp != 0)
   174   if (argsp == (this_cmd + 
vec_len (this_cmd) - 1))
   177     while (argsp < (this_cmd + 
vec_len (this_cmd)))
   179         if (*argsp == 
' ' || *argsp == 
'\t' || *argsp == 
'\n')
   197   arg_len = strlen ((
char *) argsp);
   208                                 "%s error: %U\n", cmdp,
   212   if (vam->regenerate_interface_table)
   214       vam->regenerate_interface_table = 0;
   215       api_sw_interface_dump (vam);
   224   .path = 
"binary-api",
   225   .short_help = 
"binary-api [help] <name> [<args>]",
   275   void *vam_unused = va_arg (*args, 
void *);
   277   u32 *result = va_arg (*args, 
u32 *);
 #define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
 
Message range (belonging to a plugin) 
 
uword output_function_arg
 
#define hash_set(h, key, value)
 
vnet_main_t * vnet_get_main(void)
 
static u8 * format_api_error(u8 *s, va_list *args)
 
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
 
static void maybe_register_api_client(vat_main_t *vam)
 
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment). 
 
unformat_function_t unformat_vnet_sw_interface
 
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment). 
 
#define vec_reset_length(v)
Reset vector length to zero NULL-pointer tolerant. 
 
static clib_error_t * api_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static uword vlib_process_suspend(vlib_main_t *vm, f64 dt)
Suspend a vlib cooperative multi-tasking thread for a period of time. 
 
vl_api_registration_t ** vl_clients
vlib/vpp only: vector of client registrations 
 
static u32 vl_msg_api_handle_from_index_and_epoch(u32 index, u32 epoch)
 
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds. 
 
#define clib_error_return(e, args...)
 
svm_region_t * vlib_rp
Current binary api segment descriptor. 
 
struct vl_shmem_hdr_ * shmem_hdr
Binary API shared-memory segment header pointer. 
 
#define hash_create_string(elts, value_bytes)
 
vl_registration_type_t registration_type
type 
 
void vl_msg_pop_heap(void *oldheap)
 
svm_queue_t * vl_input_queue
shared memory only: pointer to client input queue 
 
clib_error_t * vat_builtin_main_init(vlib_main_t *vm)
 
API main structure, used by both vpp and binary API clients. 
 
An API client registration, only in vpp/vlib. 
 
uword unformat_sw_if_index(unformat_input_t *input, va_list *args)
 
Shared memory connection. 
 
static vlib_process_t * vlib_get_current_process(vlib_main_t *vm)
 
#define vec_free(V)
Free vector's memory (no header). 
 
vl_api_msg_range_t * msg_ranges
vector of message ranges 
 
#define clib_warning(format, args...)
 
void vat_suspend(vlib_main_t *vm, f64 interval)
 
svm_queue_t * vl_input_queue
 
#define foreach_vnet_api_error
 
#define VLIB_CLI_COMMAND(x,...)
 
#define hash_create(elts, value_bytes)
 
void vat_plugin_hash_create(void)
 
static void init_error_string_table(vat_main_t *vam)
 
static void * clib_mem_alloc(uword size)
 
u16 first_msg_id
first assigned message ID 
 
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant) 
 
int vat_plugin_init(vat_main_t *vam)
 
u32 vl_api_registration_pool_index
Index in VLIB's brain (not shared memory). 
 
#define hash_get_mem(h, key)
 
static api_main_t * vlibapi_get_main(void)
 
void api_cli_output(void *notused, const char *fmt,...)
 
u16 vl_client_get_first_plugin_msg_id(const char *plugin_name)
 
void * vl_msg_push_heap(void)
 
vlib_cli_output_function_t * output_function
 
uword * msg_range_by_name
Message range by name hash. 
 
vl_api_interface_index_t sw_if_index