diff options
Diffstat (limited to 'src/vat/api_format.c')
-rw-r--r-- | src/vat/api_format.c | 559 |
1 files changed, 7 insertions, 552 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c index bb168f8459e..8f23d773d99 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -579,185 +579,6 @@ ip_set (ip46_address_t * dst, void *src, u8 is_ip4) } -static void -vl_api_cli_reply_t_handler (vl_api_cli_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - - vam->retval = retval; - vam->shmem_result = uword_to_pointer (mp->reply_in_shmem, u8 *); - vam->result_ready = 1; -} - -static void -vl_api_cli_reply_t_handler_json (vl_api_cli_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - void *oldheap; - u8 *reply; - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_uint (&node, "reply_in_shmem", - ntohl (mp->reply_in_shmem)); - /* Toss the shared-memory original... */ - oldheap = vl_msg_push_heap (); - - reply = uword_to_pointer (mp->reply_in_shmem, u8 *); - vec_free (reply); - - vl_msg_pop_heap (oldheap); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - -static void -vl_api_cli_inband_reply_t_handler (vl_api_cli_inband_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - - vec_reset_length (vam->cmd_reply); - - vam->retval = retval; - if (retval == 0) - vam->cmd_reply = vl_api_from_api_to_new_vec (mp, &mp->reply); - vam->result_ready = 1; -} - -static void -vl_api_cli_inband_reply_t_handler_json (vl_api_cli_inband_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - u8 *reply = 0; /* reply vector */ - - reply = vl_api_from_api_to_new_vec (mp, &mp->reply); - vec_reset_length (vam->cmd_reply); - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_string_copy (&node, "reply", reply); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - vec_free (reply); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - -static void vl_api_get_node_index_reply_t_handler - (vl_api_get_node_index_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - if (vam->async_mode) - { - vam->async_errors += (retval < 0); - } - else - { - vam->retval = retval; - if (retval == 0) - errmsg ("node index %d", ntohl (mp->node_index)); - vam->result_ready = 1; - } -} - -static void vl_api_get_node_index_reply_t_handler_json - (vl_api_get_node_index_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_uint (&node, "node_index", ntohl (mp->node_index)); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - -static void vl_api_get_next_index_reply_t_handler - (vl_api_get_next_index_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - if (vam->async_mode) - { - vam->async_errors += (retval < 0); - } - else - { - vam->retval = retval; - if (retval == 0) - errmsg ("next node index %d", ntohl (mp->next_index)); - vam->result_ready = 1; - } -} - -static void vl_api_get_next_index_reply_t_handler_json - (vl_api_get_next_index_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_uint (&node, "next_index", ntohl (mp->next_index)); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - -static void vl_api_add_node_next_reply_t_handler - (vl_api_add_node_next_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - if (vam->async_mode) - { - vam->async_errors += (retval < 0); - } - else - { - vam->retval = retval; - if (retval == 0) - errmsg ("next index %d", ntohl (mp->next_index)); - vam->result_ready = 1; - } -} - -static void vl_api_add_node_next_reply_t_handler_json - (vl_api_add_node_next_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_uint (&node, "next_index", ntohl (mp->next_index)); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - static void vl_api_show_version_reply_t_handler (vl_api_show_version_reply_t * mp) { @@ -796,80 +617,6 @@ static void vl_api_show_version_reply_t_handler_json vam->result_ready = 1; } -static void vl_api_show_threads_reply_t_handler - (vl_api_show_threads_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - int i, count = 0; - - if (retval >= 0) - count = ntohl (mp->count); - - for (i = 0; i < count; i++) - print (vam->ofp, - "\n%-2d %-11s %-11s %-5d %-6d %-4d %-6d", - ntohl (mp->thread_data[i].id), mp->thread_data[i].name, - mp->thread_data[i].type, ntohl (mp->thread_data[i].pid), - ntohl (mp->thread_data[i].cpu_id), ntohl (mp->thread_data[i].core), - ntohl (mp->thread_data[i].cpu_socket)); - - vam->retval = retval; - vam->result_ready = 1; -} - -static void vl_api_show_threads_reply_t_handler_json - (vl_api_show_threads_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - vat_json_node_t node; - vl_api_thread_data_t *td; - i32 retval = ntohl (mp->retval); - int i, count = 0; - - if (retval >= 0) - count = ntohl (mp->count); - - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", retval); - vat_json_object_add_uint (&node, "count", count); - - for (i = 0; i < count; i++) - { - td = &mp->thread_data[i]; - vat_json_object_add_uint (&node, "id", ntohl (td->id)); - vat_json_object_add_string_copy (&node, "name", td->name); - vat_json_object_add_string_copy (&node, "type", td->type); - vat_json_object_add_uint (&node, "pid", ntohl (td->pid)); - vat_json_object_add_int (&node, "cpu_id", ntohl (td->cpu_id)); - vat_json_object_add_int (&node, "core", ntohl (td->id)); - vat_json_object_add_int (&node, "cpu_socket", ntohl (td->cpu_socket)); - } - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = retval; - vam->result_ready = 1; -} - -static int -api_show_threads (vat_main_t * vam) -{ - vl_api_show_threads_t *mp; - int ret; - - print (vam->ofp, - "\n%-2s %-11s %-11s %-5s %-6s %-4s %-6s", - "ID", "Name", "Type", "LWP", "cpu_id", "Core", "Socket"); - - M (SHOW_THREADS, mp); - - S (mp); - W (ret); - return ret; -} - #define vl_api_bridge_domain_details_t_endian vl_noop_handler #define vl_api_bridge_domain_details_t_print vl_noop_handler @@ -955,95 +702,6 @@ static void vl_api_get_first_msg_id_reply_t_handler_json vam->result_ready = 1; } -static void vl_api_get_node_graph_reply_t_handler - (vl_api_get_node_graph_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - u8 *pvt_copy, *reply; - void *oldheap; - vlib_node_t *node; - int i; - - if (vam->async_mode) - { - vam->async_errors += (retval < 0); - } - else - { - vam->retval = retval; - vam->result_ready = 1; - } - - /* "Should never happen..." */ - if (retval != 0) - return; - - reply = uword_to_pointer (mp->reply_in_shmem, u8 *); - pvt_copy = vec_dup (reply); - - /* Toss the shared-memory original... */ - oldheap = vl_msg_push_heap (); - - vec_free (reply); - - vl_msg_pop_heap (oldheap); - - if (vam->graph_nodes) - { - hash_free (vam->graph_node_index_by_name); - - for (i = 0; i < vec_len (vam->graph_nodes[0]); i++) - { - node = vam->graph_nodes[0][i]; - vec_free (node->name); - vec_free (node->next_nodes); - vec_free (node); - } - vec_free (vam->graph_nodes[0]); - vec_free (vam->graph_nodes); - } - - vam->graph_node_index_by_name = hash_create_string (0, sizeof (uword)); - vam->graph_nodes = vlib_node_unserialize (pvt_copy); - vec_free (pvt_copy); - - for (i = 0; i < vec_len (vam->graph_nodes[0]); i++) - { - node = vam->graph_nodes[0][i]; - hash_set_mem (vam->graph_node_index_by_name, node->name, i); - } -} - -static void vl_api_get_node_graph_reply_t_handler_json - (vl_api_get_node_graph_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - void *oldheap; - vat_json_node_t node; - u8 *reply; - - /* $$$$ make this real? */ - vat_json_init_object (&node); - vat_json_object_add_int (&node, "retval", ntohl (mp->retval)); - vat_json_object_add_uint (&node, "reply_in_shmem", mp->reply_in_shmem); - - reply = uword_to_pointer (mp->reply_in_shmem, u8 *); - - /* Toss the shared-memory original... */ - oldheap = vl_msg_push_heap (); - - vec_free (reply); - - vl_msg_pop_heap (oldheap); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - /* Format hex dump. */ u8 * format_hex_bytes (u8 * s, va_list * va) @@ -1120,15 +778,8 @@ foreach_standard_reply_retval_handler; #define foreach_vpe_api_reply_msg \ _ (GET_FIRST_MSG_ID_REPLY, get_first_msg_id_reply) \ - _ (GET_NODE_GRAPH_REPLY, get_node_graph_reply) \ _ (CONTROL_PING_REPLY, control_ping_reply) \ - _ (CLI_REPLY, cli_reply) \ - _ (CLI_INBAND_REPLY, cli_inband_reply) \ - _ (GET_NODE_INDEX_REPLY, get_node_index_reply) \ - _ (GET_NEXT_INDEX_REPLY, get_next_index_reply) \ - _ (ADD_NODE_NEXT_REPLY, add_node_next_reply) \ _ (SHOW_VERSION_REPLY, show_version_reply) \ - _ (SHOW_THREADS_REPLY, show_threads_reply) \ #define foreach_standalone_reply_msg \ @@ -1142,53 +793,6 @@ typedef struct case L2_VTR_ ## op: \ return "" # op; -/* - * Pass CLI buffers directly in the CLI_INBAND API message, - * instead of an additional shared memory area. - */ -static int -exec_inband (vat_main_t * vam) -{ - vl_api_cli_inband_t *mp; - unformat_input_t *i = vam->input; - int ret; - - if (vec_len (i->buffer) == 0) - return -1; - - if (vam->exec_mode == 0 && unformat (i, "mode")) - { - vam->exec_mode = 1; - return 0; - } - if (vam->exec_mode == 1 && (unformat (i, "exit") || unformat (i, "quit"))) - { - vam->exec_mode = 0; - return 0; - } - - /* - * In order for the CLI command to work, it - * must be a vector ending in \n, not a C-string ending - * in \n\0. - */ - M2 (CLI_INBAND, mp, vec_len (vam->input->buffer)); - vl_api_vec_to_api_string (vam->input->buffer, &mp->cmd); - - S (mp); - W (ret); - /* json responses may or may not include a useful reply... */ - if (vec_len (vam->cmd_reply)) - print (vam->ofp, "%v", (char *) (vam->cmd_reply)); - return ret; -} - -int -exec (vat_main_t *vam) -{ - return exec_inband (vam); -} - int api_sw_interface_dump (vat_main_t *vam) { @@ -2442,140 +2046,6 @@ api_unformat_classify_match (unformat_input_t * input, va_list * args) return 0; } -static int -api_get_node_index (vat_main_t *vam) -{ - unformat_input_t *i = vam->input; - vl_api_get_node_index_t *mp; - u8 *name = 0; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "node %s", &name)) - ; - else - break; - } - if (name == 0) - { - errmsg ("node name required"); - return -99; - } - if (vec_len (name) >= ARRAY_LEN (mp->node_name)) - { - errmsg ("node name too long, max %d", ARRAY_LEN (mp->node_name)); - return -99; - } - - M (GET_NODE_INDEX, mp); - clib_memcpy (mp->node_name, name, vec_len (name)); - vec_free (name); - - S (mp); - W (ret); - return ret; -} - -static int -api_get_next_index (vat_main_t *vam) -{ - unformat_input_t *i = vam->input; - vl_api_get_next_index_t *mp; - u8 *node_name = 0, *next_node_name = 0; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "node-name %s", &node_name)) - ; - else if (unformat (i, "next-node-name %s", &next_node_name)) - break; - } - - if (node_name == 0) - { - errmsg ("node name required"); - return -99; - } - if (vec_len (node_name) >= ARRAY_LEN (mp->node_name)) - { - errmsg ("node name too long, max %d", ARRAY_LEN (mp->node_name)); - return -99; - } - - if (next_node_name == 0) - { - errmsg ("next node name required"); - return -99; - } - if (vec_len (next_node_name) >= ARRAY_LEN (mp->next_name)) - { - errmsg ("next node name too long, max %d", ARRAY_LEN (mp->next_name)); - return -99; - } - - M (GET_NEXT_INDEX, mp); - clib_memcpy (mp->node_name, node_name, vec_len (node_name)); - clib_memcpy (mp->next_name, next_node_name, vec_len (next_node_name)); - vec_free (node_name); - vec_free (next_node_name); - - S (mp); - W (ret); - return ret; -} - -static int -api_add_node_next (vat_main_t *vam) -{ - unformat_input_t *i = vam->input; - vl_api_add_node_next_t *mp; - u8 *name = 0; - u8 *next = 0; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "node %s", &name)) - ; - else if (unformat (i, "next %s", &next)) - ; - else - break; - } - if (name == 0) - { - errmsg ("node name required"); - return -99; - } - if (vec_len (name) >= ARRAY_LEN (mp->node_name)) - { - errmsg ("node name too long, max %d", ARRAY_LEN (mp->node_name)); - return -99; - } - if (next == 0) - { - errmsg ("next node required"); - return -99; - } - if (vec_len (next) >= ARRAY_LEN (mp->next_name)) - { - errmsg ("next name too long, max %d", ARRAY_LEN (mp->next_name)); - return -99; - } - - M (ADD_NODE_NEXT, mp); - clib_memcpy (mp->node_name, name, vec_len (name)); - clib_memcpy (mp->next_name, next, vec_len (next)); - vec_free (name); - vec_free (next); - - S (mp); - W (ret); - return ret; -} - #define foreach_vtr_op \ _ ("disable", L2_VTR_DISABLED) \ _ ("push-1", L2_VTR_PUSH_1) \ @@ -2637,21 +2107,6 @@ api_get_first_msg_id (vat_main_t *vam) return ret; } -static int -api_get_node_graph (vat_main_t *vam) -{ - vl_api_get_node_graph_t *mp; - int ret; - - M (GET_NODE_GRAPH, mp); - - /* send it... */ - S (mp); - /* Wait for the reply */ - W (ret); - return ret; -} - #define foreach_pbb_vtr_op \ _("disable", L2_VTR_DISABLED) \ _("pop", L2_VTR_POP_2) \ @@ -3218,15 +2673,17 @@ echo (vat_main_t * vam) return 0; } +int exec (vat_main_t *vam) __attribute__ ((weak)); +int +exec (vat_main_t *vam) +{ + return -1; +} + /* List of API message constructors, CLI names map to api_xxx */ #define foreach_vpe_api_msg \ -_(get_node_index, "node <node-name") \ -_(add_node_next, "node <node-name> next <next-node-name>") \ _(show_version, "") \ -_(show_threads, "") \ _(get_first_msg_id, "client <name>") \ -_(get_node_graph, " ") \ -_(get_next_index, "node-name <node-name> next-node-name <node-name>") \ _(sock_init_shm, "size <nnn>") \ /* List of command functions, CLI names map directly to functions */ #define foreach_cli_function \ @@ -3239,8 +2696,6 @@ _(elog_enable, "usage: elog_enable") \ _(elog_save, "usage: elog_save <filename>") \ _(get_msg_id, "usage: get_msg_id name_and_crc") \ _(echo, "usage: echo <message>") \ -_(exec, "usage: exec <vpe-debug-CLI-command>") \ -_(exec_inband, "usage: exec_inband <vpe-debug-CLI-command>") \ _(help, "usage: help") \ _(q, "usage: quit") \ _(quit, "usage: quit") \ |