X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fapi_format.c;h=14e78817b61c0deb685ca155cadfba0018083354;hb=c3a814be9dc769be942ff8029c7b6eccd4b3af05;hp=653cf79f3db464fde0fcc07a4104ea93fb2d4ec0;hpb=fe6bdfd84573cd8813a211f9094ee734f088ce16;p=vpp.git diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 653cf79f3db..14e78817b61 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -48,6 +48,7 @@ #include #include #include +#include #include "vat/json_format.h" @@ -70,6 +71,7 @@ #include #undef vl_printfun +#define __plugin_msg_base 0 #include f64 @@ -110,6 +112,7 @@ errmsg (char *fmt, ...) vec_free (s); } +#if VPP_API_TEST_BUILTIN == 0 static uword api_unformat_sw_if_index (unformat_input_t * input, va_list * args) { @@ -128,7 +131,6 @@ api_unformat_sw_if_index (unformat_input_t * input, va_list * args) return 1; } -#if VPP_API_TEST_BUILTIN == 0 /* Parse an IP4 address %d.%d.%d.%d. */ uword unformat_ip4_address (unformat_input_t * input, va_list * args) @@ -385,6 +387,21 @@ unformat_ikev2_id_type (unformat_input_t * input, va_list * args) return 0; return 1; } +#else /* VPP_API_TEST_BUILTIN == 1 */ +static uword +api_unformat_sw_if_index (unformat_input_t * input, va_list * args) +{ + vat_main_t *vam __attribute__ ((unused)) = va_arg (*args, vat_main_t *); + vnet_main_t *vnm = vnet_get_main (); + u32 *result = va_arg (*args, u32 *); + u32 sw_if_index; + + if (!unformat (input, "%U", unformat_vnet_sw_interface, vnm, &sw_if_index)) + return 0; + + *result = sw_if_index; + return 1; +} #endif /* VPP_API_TEST_BUILTIN */ static uword @@ -504,7 +521,54 @@ unformat_flow_classify_table_type (unformat_input_t * input, va_list * va) return 1; } +static const char *mfib_flag_names[] = MFIB_ENTRY_NAMES_SHORT; +static const char *mfib_flag_long_names[] = MFIB_ENTRY_NAMES_LONG; +static const char *mfib_itf_flag_long_names[] = MFIB_ITF_NAMES_LONG; +static const char *mfib_itf_flag_names[] = MFIB_ITF_NAMES_SHORT; + #if (VPP_API_TEST_BUILTIN==0) +uword +unformat_mfib_itf_flags (unformat_input_t * input, va_list * args) +{ + mfib_itf_flags_t old, *iflags = va_arg (*args, mfib_itf_flags_t *); + mfib_itf_attribute_t attr; + + old = *iflags; + FOR_EACH_MFIB_ITF_ATTRIBUTE (attr) + { + if (unformat (input, mfib_itf_flag_long_names[attr])) + *iflags |= (1 << attr); + } + FOR_EACH_MFIB_ITF_ATTRIBUTE (attr) + { + if (unformat (input, mfib_itf_flag_names[attr])) + *iflags |= (1 << attr); + } + + return (old == *iflags ? 0 : 1); +} + +uword +unformat_mfib_entry_flags (unformat_input_t * input, va_list * args) +{ + mfib_entry_flags_t old, *eflags = va_arg (*args, mfib_entry_flags_t *); + mfib_entry_attribute_t attr; + + old = *eflags; + FOR_EACH_MFIB_ATTRIBUTE (attr) + { + if (unformat (input, mfib_flag_long_names[attr])) + *eflags |= (1 << attr); + } + FOR_EACH_MFIB_ATTRIBUTE (attr) + { + if (unformat (input, mfib_flag_names[attr])) + *eflags |= (1 << attr); + } + + return (old == *eflags ? 0 : 1); +} + u8 * format_ip4_address (u8 * s, va_list * args) { @@ -865,6 +929,19 @@ static void vl_api_sw_interface_details_t_handler_json ntohl (mp->vtr_push_dot1q)); vat_json_object_add_uint (node, "vtr_tag1", ntohl (mp->vtr_tag1)); vat_json_object_add_uint (node, "vtr_tag2", ntohl (mp->vtr_tag2)); + if (mp->sub_dot1ah) + { + vat_json_object_add_string_copy (node, "pbb_vtr_dmac", + format (0, "%U", + format_ethernet_address, + &mp->b_dmac)); + vat_json_object_add_string_copy (node, "pbb_vtr_smac", + format (0, "%U", + format_ethernet_address, + &mp->b_smac)); + vat_json_object_add_uint (node, "pbb_vtr_b_vlanid", mp->b_vlanid); + vat_json_object_add_uint (node, "pbb_vtr_i_sid", mp->i_sid); + } } static void vl_api_sw_interface_set_flags_t_handler @@ -1549,8 +1626,8 @@ static void vl_api_l2tpv3_create_tunnel_reply_t_handler_json } -static void vl_api_lisp_add_del_locator_set_reply_t_handler - (vl_api_lisp_add_del_locator_set_reply_t * mp) +static void vl_api_one_add_del_locator_set_reply_t_handler + (vl_api_one_add_del_locator_set_reply_t * mp) { vat_main_t *vam = &vat_main; i32 retval = ntohl (mp->retval); @@ -1565,8 +1642,8 @@ static void vl_api_lisp_add_del_locator_set_reply_t_handler } } -static void vl_api_lisp_add_del_locator_set_reply_t_handler_json - (vl_api_lisp_add_del_locator_set_reply_t * mp) +static void vl_api_one_add_del_locator_set_reply_t_handler_json + (vl_api_one_add_del_locator_set_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t node; @@ -2042,6 +2119,42 @@ static void vl_api_vnet_ip4_fib_counters_t_handler_json } } +static void vl_api_vnet_ip4_nbr_counters_t_handler + (vl_api_vnet_ip4_nbr_counters_t * mp) +{ + /* not supported */ +} + +static void vl_api_vnet_ip4_nbr_counters_t_handler_json + (vl_api_vnet_ip4_nbr_counters_t * mp) +{ + vat_main_t *vam = &vat_main; + vl_api_ip4_nbr_counter_t *v; + ip4_nbr_counter_t *counter; + u32 sw_if_index; + u32 count; + int i; + + sw_if_index = ntohl (mp->sw_if_index); + count = ntohl (mp->count); + vec_validate (vam->ip4_nbr_counters, sw_if_index); + + if (mp->begin) + vec_free (vam->ip4_nbr_counters[sw_if_index]); + + v = (vl_api_ip4_nbr_counter_t *) & mp->c; + for (i = 0; i < count; i++) + { + vec_validate (vam->ip4_nbr_counters[sw_if_index], i); + counter = &vam->ip4_nbr_counters[sw_if_index][i]; + counter->address.s_addr = v->address; + counter->packets = clib_net_to_host_u64 (v->packets); + counter->bytes = clib_net_to_host_u64 (v->bytes); + counter->linkt = v->link_type; + v++; + } +} + static void vl_api_vnet_ip6_fib_counters_t_handler (vl_api_vnet_ip6_fib_counters_t * mp) { @@ -2087,6 +2200,43 @@ static void vl_api_vnet_ip6_fib_counters_t_handler_json } } +static void vl_api_vnet_ip6_nbr_counters_t_handler + (vl_api_vnet_ip6_nbr_counters_t * mp) +{ + /* not supported */ +} + +static void vl_api_vnet_ip6_nbr_counters_t_handler_json + (vl_api_vnet_ip6_nbr_counters_t * mp) +{ + vat_main_t *vam = &vat_main; + vl_api_ip6_nbr_counter_t *v; + ip6_nbr_counter_t *counter; + struct in6_addr ip6; + u32 sw_if_index; + u32 count; + int i; + + sw_if_index = ntohl (mp->sw_if_index); + count = ntohl (mp->count); + vec_validate (vam->ip6_nbr_counters, sw_if_index); + + if (mp->begin) + vec_free (vam->ip6_nbr_counters[sw_if_index]); + + v = (vl_api_ip6_nbr_counter_t *) & mp->c; + for (i = 0; i < count; i++) + { + vec_validate (vam->ip6_nbr_counters[sw_if_index], i); + counter = &vam->ip6_nbr_counters[sw_if_index][i]; + clib_memcpy (&ip6, &v->address, sizeof (ip6)); + counter->address = ip6; + counter->packets = clib_net_to_host_u64 (v->packets); + counter->bytes = clib_net_to_host_u64 (v->bytes); + v++; + } +} + static void vl_api_get_first_msg_id_reply_t_handler (vl_api_get_first_msg_id_reply_t * mp) { @@ -2221,7 +2371,7 @@ static void vl_api_get_node_graph_reply_t_handler_json } static void -vl_api_lisp_locator_details_t_handler (vl_api_lisp_locator_details_t * mp) +vl_api_one_locator_details_t_handler (vl_api_one_locator_details_t * mp) { vat_main_t *vam = &vat_main; u8 *s = 0; @@ -2244,8 +2394,7 @@ vl_api_lisp_locator_details_t_handler (vl_api_lisp_locator_details_t * mp) } static void -vl_api_lisp_locator_details_t_handler_json (vl_api_lisp_locator_details_t * - mp) +vl_api_one_locator_details_t_handler_json (vl_api_one_locator_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2283,8 +2432,8 @@ vl_api_lisp_locator_details_t_handler_json (vl_api_lisp_locator_details_t * } static void -vl_api_lisp_locator_set_details_t_handler (vl_api_lisp_locator_set_details_t * - mp) +vl_api_one_locator_set_details_t_handler (vl_api_one_locator_set_details_t * + mp) { vat_main_t *vam = &vat_main; u8 *ls_name = 0; @@ -2297,8 +2446,8 @@ vl_api_lisp_locator_set_details_t_handler (vl_api_lisp_locator_set_details_t * } static void - vl_api_lisp_locator_set_details_t_handler_json - (vl_api_lisp_locator_set_details_t * mp) + vl_api_one_locator_set_details_t_handler_json + (vl_api_one_locator_set_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = 0; @@ -2359,7 +2508,7 @@ format_lisp_eid_vat (u8 * s, va_list * args) } static void -vl_api_lisp_eid_table_details_t_handler (vl_api_lisp_eid_table_details_t * mp) +vl_api_one_eid_table_details_t_handler (vl_api_one_eid_table_details_t * mp) { vat_main_t *vam = &vat_main; u8 *s = 0, *eid = 0; @@ -2388,8 +2537,8 @@ vl_api_lisp_eid_table_details_t_handler (vl_api_lisp_eid_table_details_t * mp) } static void -vl_api_lisp_eid_table_details_t_handler_json (vl_api_lisp_eid_table_details_t - * mp) +vl_api_one_eid_table_details_t_handler_json (vl_api_one_eid_table_details_t + * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = 0; @@ -2431,8 +2580,8 @@ vl_api_lisp_eid_table_details_t_handler_json (vl_api_lisp_eid_table_details_t } static void - vl_api_lisp_eid_table_map_details_t_handler - (vl_api_lisp_eid_table_map_details_t * mp) + vl_api_one_eid_table_map_details_t_handler + (vl_api_one_eid_table_map_details_t * mp) { vat_main_t *vam = &vat_main; @@ -2444,8 +2593,8 @@ static void } static void - vl_api_lisp_eid_table_map_details_t_handler_json - (vl_api_lisp_eid_table_map_details_t * mp) + vl_api_one_eid_table_map_details_t_handler_json + (vl_api_one_eid_table_map_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2463,8 +2612,8 @@ static void } static void - vl_api_lisp_eid_table_vni_details_t_handler - (vl_api_lisp_eid_table_vni_details_t * mp) + vl_api_one_eid_table_vni_details_t_handler + (vl_api_one_eid_table_vni_details_t * mp) { vat_main_t *vam = &vat_main; @@ -2474,8 +2623,8 @@ static void } static void - vl_api_lisp_eid_table_vni_details_t_handler_json - (vl_api_lisp_eid_table_vni_details_t * mp) + vl_api_one_eid_table_vni_details_t_handler_json + (vl_api_one_eid_table_vni_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2491,8 +2640,8 @@ static void } static void - vl_api_show_lisp_map_register_state_reply_t_handler - (vl_api_show_lisp_map_register_state_reply_t * mp) + vl_api_show_one_map_register_state_reply_t_handler + (vl_api_show_one_map_register_state_reply_t * mp) { vat_main_t *vam = &vat_main; int retval = clib_net_to_host_u32 (mp->retval); @@ -2504,8 +2653,8 @@ static void } static void - vl_api_show_lisp_map_register_state_reply_t_handler_json - (vl_api_show_lisp_map_register_state_reply_t * mp) + vl_api_show_one_map_register_state_reply_t_handler_json + (vl_api_show_one_map_register_state_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t _node, *node = &_node; @@ -2525,8 +2674,8 @@ static void } static void - vl_api_show_lisp_rloc_probe_state_reply_t_handler - (vl_api_show_lisp_rloc_probe_state_reply_t * mp) + vl_api_show_one_rloc_probe_state_reply_t_handler + (vl_api_show_one_rloc_probe_state_reply_t * mp) { vat_main_t *vam = &vat_main; int retval = clib_net_to_host_u32 (mp->retval); @@ -2541,8 +2690,8 @@ end: } static void - vl_api_show_lisp_rloc_probe_state_reply_t_handler_json - (vl_api_show_lisp_rloc_probe_state_reply_t * mp) + vl_api_show_one_rloc_probe_state_reply_t_handler_json + (vl_api_show_one_rloc_probe_state_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t _node, *node = &_node; @@ -2561,13 +2710,215 @@ static void } static void - vl_api_lisp_adjacencies_get_reply_t_handler - (vl_api_lisp_adjacencies_get_reply_t * mp) +api_gpe_fwd_entry_net_to_host (vl_api_gpe_fwd_entry_t * e) +{ + e->dp_table = clib_net_to_host_u32 (e->dp_table); + e->fwd_entry_index = clib_net_to_host_u32 (e->fwd_entry_index); +} + +static void + gpe_fwd_entries_get_reply_t_net_to_host + (vl_api_gpe_fwd_entries_get_reply_t * mp) +{ + u32 i; + + mp->count = clib_net_to_host_u32 (mp->count); + for (i = 0; i < mp->count; i++) + { + api_gpe_fwd_entry_net_to_host (&mp->entries[i]); + } +} + +static u8 * +format_gpe_encap_mode (u8 * s, va_list * args) +{ + u32 mode = va_arg (*args, u32); + + switch (mode) + { + case 0: + return format (s, "lisp"); + case 1: + return format (s, "vxlan"); + } + return 0; +} + +static void + vl_api_gpe_get_encap_mode_reply_t_handler + (vl_api_gpe_get_encap_mode_reply_t * mp) +{ + vat_main_t *vam = &vat_main; + + print (vam->ofp, "gpe mode: %U", format_gpe_encap_mode, mp->encap_mode); + vam->retval = ntohl (mp->retval); + vam->result_ready = 1; +} + +static void + vl_api_gpe_get_encap_mode_reply_t_handler_json + (vl_api_gpe_get_encap_mode_reply_t * mp) +{ + vat_main_t *vam = &vat_main; + vat_json_node_t node; + + u8 *encap_mode = format (0, "%U", format_gpe_encap_mode, mp->encap_mode); + vec_add1 (encap_mode, 0); + + vat_json_init_object (&node); + vat_json_object_add_string_copy (&node, "gpe_mode", encap_mode); + + vec_free (encap_mode); + vat_json_print (vam->ofp, &node); + vat_json_free (&node); + + vam->retval = ntohl (mp->retval); + vam->result_ready = 1; +} + +static void + vl_api_gpe_fwd_entry_path_details_t_handler + (vl_api_gpe_fwd_entry_path_details_t * mp) +{ + vat_main_t *vam = &vat_main; + u8 *(*format_ip_address_fcn) (u8 *, va_list *) = 0; + + if (mp->lcl_loc.is_ip4) + format_ip_address_fcn = format_ip4_address; + else + format_ip_address_fcn = format_ip6_address; + + print (vam->ofp, "w:%d %30U %30U", mp->rmt_loc.weight, + format_ip_address_fcn, &mp->lcl_loc, + format_ip_address_fcn, &mp->rmt_loc); +} + +static void +lisp_fill_locator_node (vat_json_node_t * n, vl_api_gpe_locator_t * loc) +{ + struct in6_addr ip6; + struct in_addr ip4; + + if (loc->is_ip4) + { + clib_memcpy (&ip4, loc->addr, sizeof (ip4)); + vat_json_object_add_ip4 (n, "address", ip4); + } + else + { + clib_memcpy (&ip6, loc->addr, sizeof (ip6)); + vat_json_object_add_ip6 (n, "address", ip6); + } + vat_json_object_add_uint (n, "weight", loc->weight); +} + +static void + vl_api_gpe_fwd_entry_path_details_t_handler_json + (vl_api_gpe_fwd_entry_path_details_t * mp) +{ + vat_main_t *vam = &vat_main; + vat_json_node_t *node = NULL; + vat_json_node_t *loc_node; + + if (VAT_JSON_ARRAY != vam->json_tree.type) + { + ASSERT (VAT_JSON_NONE == vam->json_tree.type); + vat_json_init_array (&vam->json_tree); + } + node = vat_json_array_add (&vam->json_tree); + vat_json_init_object (node); + + loc_node = vat_json_object_add (node, "local_locator"); + vat_json_init_object (loc_node); + lisp_fill_locator_node (loc_node, &mp->lcl_loc); + + loc_node = vat_json_object_add (node, "remote_locator"); + vat_json_init_object (loc_node); + lisp_fill_locator_node (loc_node, &mp->rmt_loc); +} + +static void + vl_api_gpe_fwd_entries_get_reply_t_handler + (vl_api_gpe_fwd_entries_get_reply_t * mp) +{ + vat_main_t *vam = &vat_main; + u32 i; + int retval = clib_net_to_host_u32 (mp->retval); + vl_api_gpe_fwd_entry_t *e; + + if (retval) + goto end; + + gpe_fwd_entries_get_reply_t_net_to_host (mp); + + for (i = 0; i < mp->count; i++) + { + e = &mp->entries[i]; + print (vam->ofp, "%10d %10d %U %40U", e->fwd_entry_index, e->dp_table, + format_lisp_flat_eid, e->eid_type, e->leid, e->leid_prefix_len, + format_lisp_flat_eid, e->eid_type, e->reid, e->reid_prefix_len); + } + +end: + vam->retval = retval; + vam->result_ready = 1; +} + +static void + vl_api_gpe_fwd_entries_get_reply_t_handler_json + (vl_api_gpe_fwd_entries_get_reply_t * mp) +{ + u8 *s = 0; + vat_main_t *vam = &vat_main; + vat_json_node_t *e = 0, root; + u32 i; + int retval = clib_net_to_host_u32 (mp->retval); + vl_api_gpe_fwd_entry_t *fwd; + + if (retval) + goto end; + + gpe_fwd_entries_get_reply_t_net_to_host (mp); + vat_json_init_array (&root); + + for (i = 0; i < mp->count; i++) + { + e = vat_json_array_add (&root); + fwd = &mp->entries[i]; + + vat_json_init_object (e); + vat_json_object_add_int (e, "fwd_entry_index", fwd->fwd_entry_index); + vat_json_object_add_int (e, "dp_table", fwd->dp_table); + + s = format (0, "%U", format_lisp_flat_eid, fwd->eid_type, fwd->leid, + fwd->leid_prefix_len); + vec_add1 (s, 0); + vat_json_object_add_string_copy (e, "leid", s); + vec_free (s); + + s = format (0, "%U", format_lisp_flat_eid, fwd->eid_type, fwd->reid, + fwd->reid_prefix_len); + vec_add1 (s, 0); + vat_json_object_add_string_copy (e, "reid", s); + vec_free (s); + } + + vat_json_print (vam->ofp, &root); + vat_json_free (&root); + +end: + vam->retval = retval; + vam->result_ready = 1; +} + +static void + vl_api_one_adjacencies_get_reply_t_handler + (vl_api_one_adjacencies_get_reply_t * mp) { vat_main_t *vam = &vat_main; u32 i, n; int retval = clib_net_to_host_u32 (mp->retval); - vl_api_lisp_adjacency_t *a; + vl_api_one_adjacency_t *a; if (retval) goto end; @@ -2588,15 +2939,15 @@ end: } static void - vl_api_lisp_adjacencies_get_reply_t_handler_json - (vl_api_lisp_adjacencies_get_reply_t * mp) + vl_api_one_adjacencies_get_reply_t_handler_json + (vl_api_one_adjacencies_get_reply_t * mp) { u8 *s = 0; vat_main_t *vam = &vat_main; vat_json_node_t *e = 0, root; u32 i, n; int retval = clib_net_to_host_u32 (mp->retval); - vl_api_lisp_adjacency_t *a; + vl_api_one_adjacency_t *a; if (retval) goto end; @@ -2632,8 +2983,7 @@ end: } static void -vl_api_lisp_map_server_details_t_handler (vl_api_lisp_map_server_details_t - * mp) +vl_api_one_map_server_details_t_handler (vl_api_one_map_server_details_t * mp) { vat_main_t *vam = &vat_main; @@ -2643,8 +2993,8 @@ vl_api_lisp_map_server_details_t_handler (vl_api_lisp_map_server_details_t } static void - vl_api_lisp_map_server_details_t_handler_json - (vl_api_lisp_map_server_details_t * mp) + vl_api_one_map_server_details_t_handler_json + (vl_api_one_map_server_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2672,8 +3022,8 @@ static void } static void -vl_api_lisp_map_resolver_details_t_handler (vl_api_lisp_map_resolver_details_t - * mp) +vl_api_one_map_resolver_details_t_handler (vl_api_one_map_resolver_details_t + * mp) { vat_main_t *vam = &vat_main; @@ -2683,8 +3033,8 @@ vl_api_lisp_map_resolver_details_t_handler (vl_api_lisp_map_resolver_details_t } static void - vl_api_lisp_map_resolver_details_t_handler_json - (vl_api_lisp_map_resolver_details_t * mp) + vl_api_one_map_resolver_details_t_handler_json + (vl_api_one_map_resolver_details_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2712,8 +3062,7 @@ static void } static void - vl_api_show_lisp_status_reply_t_handler - (vl_api_show_lisp_status_reply_t * mp) +vl_api_show_one_status_reply_t_handler (vl_api_show_one_status_reply_t * mp) { vat_main_t *vam = &vat_main; i32 retval = ntohl (mp->retval); @@ -2730,8 +3079,8 @@ static void } static void - vl_api_show_lisp_status_reply_t_handler_json - (vl_api_show_lisp_status_reply_t * mp) + vl_api_show_one_status_reply_t_handler_json + (vl_api_show_one_status_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t node; @@ -2759,8 +3108,8 @@ static void } static void - vl_api_lisp_get_map_request_itr_rlocs_reply_t_handler - (vl_api_lisp_get_map_request_itr_rlocs_reply_t * mp) + vl_api_one_get_map_request_itr_rlocs_reply_t_handler + (vl_api_one_get_map_request_itr_rlocs_reply_t * mp) { vat_main_t *vam = &vat_main; i32 retval = ntohl (mp->retval); @@ -2775,8 +3124,8 @@ static void } static void - vl_api_lisp_get_map_request_itr_rlocs_reply_t_handler_json - (vl_api_lisp_get_map_request_itr_rlocs_reply_t * mp) + vl_api_one_get_map_request_itr_rlocs_reply_t_handler_json + (vl_api_one_get_map_request_itr_rlocs_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t *node = NULL; @@ -2814,8 +3163,8 @@ format_lisp_map_request_mode (u8 * s, va_list * args) } static void - vl_api_show_lisp_map_request_mode_reply_t_handler - (vl_api_show_lisp_map_request_mode_reply_t * mp) + vl_api_show_one_map_request_mode_reply_t_handler + (vl_api_show_one_map_request_mode_reply_t * mp) { vat_main_t *vam = &vat_main; i32 retval = ntohl (mp->retval); @@ -2832,8 +3181,8 @@ static void } static void - vl_api_show_lisp_map_request_mode_reply_t_handler_json - (vl_api_show_lisp_map_request_mode_reply_t * mp) + vl_api_show_one_map_request_mode_reply_t_handler_json + (vl_api_show_one_map_request_mode_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t node; @@ -2855,7 +3204,7 @@ static void } static void -vl_api_show_lisp_pitr_reply_t_handler (vl_api_show_lisp_pitr_reply_t * mp) +vl_api_show_one_pitr_reply_t_handler (vl_api_show_one_pitr_reply_t * mp) { vat_main_t *vam = &vat_main; i32 retval = ntohl (mp->retval); @@ -2872,8 +3221,7 @@ vl_api_show_lisp_pitr_reply_t_handler (vl_api_show_lisp_pitr_reply_t * mp) } static void -vl_api_show_lisp_pitr_reply_t_handler_json (vl_api_show_lisp_pitr_reply_t * - mp) +vl_api_show_one_pitr_reply_t_handler_json (vl_api_show_one_pitr_reply_t * mp) { vat_main_t *vam = &vat_main; vat_json_node_t node; @@ -3490,8 +3838,12 @@ static void vl_api_flow_classify_details_t_handler_json #define vl_api_vnet_ip4_fib_counters_t_print vl_noop_handler #define vl_api_vnet_ip6_fib_counters_t_endian vl_noop_handler #define vl_api_vnet_ip6_fib_counters_t_print vl_noop_handler -#define vl_api_lisp_adjacencies_get_reply_t_endian vl_noop_handler -#define vl_api_lisp_adjacencies_get_reply_t_print vl_noop_handler +#define vl_api_vnet_ip4_nbr_counters_t_endian vl_noop_handler +#define vl_api_vnet_ip4_nbr_counters_t_print vl_noop_handler +#define vl_api_vnet_ip6_nbr_counters_t_endian vl_noop_handler +#define vl_api_vnet_ip6_nbr_counters_t_print vl_noop_handler +#define vl_api_one_adjacencies_get_reply_t_endian vl_noop_handler +#define vl_api_one_adjacencies_get_reply_t_print vl_noop_handler /* * Generate boilerplate reply handlers, which @@ -3514,6 +3866,7 @@ _(bridge_domain_add_del_reply) \ _(sw_interface_set_l2_xconnect_reply) \ _(l2fib_add_del_reply) \ _(ip_add_del_route_reply) \ +_(ip_mroute_add_del_reply) \ _(mpls_route_add_del_reply) \ _(mpls_ip_bind_unbind_reply) \ _(proxy_arp_add_del_reply) \ @@ -3524,7 +3877,6 @@ _(reset_vrf_reply) \ _(oam_add_del_reply) \ _(reset_fib_reply) \ _(dhcp_proxy_config_reply) \ -_(dhcp_proxy_config_2_reply) \ _(dhcp_proxy_set_vss_reply) \ _(dhcp_client_config_reply) \ _(set_ip_flow_hash_reply) \ @@ -3561,6 +3913,14 @@ _(ikev2_profile_set_auth_reply) \ _(ikev2_profile_set_id_reply) \ _(ikev2_profile_set_ts_reply) \ _(ikev2_set_local_key_reply) \ +_(ikev2_set_responder_reply) \ +_(ikev2_set_ike_transforms_reply) \ +_(ikev2_set_esp_transforms_reply) \ +_(ikev2_set_sa_lifetime_reply) \ +_(ikev2_initiate_sa_init_reply) \ +_(ikev2_initiate_del_ike_sa_reply) \ +_(ikev2_initiate_del_child_sa_reply) \ +_(ikev2_initiate_rekey_child_sa_reply) \ _(delete_loopback_reply) \ _(bd_ip_mac_add_del_reply) \ _(map_del_domain_reply) \ @@ -3572,22 +3932,23 @@ _(cop_whitelist_enable_disable_reply) \ _(sw_interface_clear_stats_reply) \ _(ioam_enable_reply) \ _(ioam_disable_reply) \ -_(lisp_add_del_locator_reply) \ -_(lisp_add_del_local_eid_reply) \ -_(lisp_add_del_remote_mapping_reply) \ -_(lisp_add_del_adjacency_reply) \ -_(lisp_gpe_add_del_fwd_entry_reply) \ -_(lisp_add_del_map_resolver_reply) \ -_(lisp_add_del_map_server_reply) \ -_(lisp_gpe_enable_disable_reply) \ -_(lisp_gpe_add_del_iface_reply) \ -_(lisp_enable_disable_reply) \ -_(lisp_rloc_probe_enable_disable_reply) \ -_(lisp_map_register_enable_disable_reply) \ -_(lisp_pitr_set_locator_set_reply) \ -_(lisp_map_request_mode_reply) \ -_(lisp_add_del_map_request_itr_rlocs_reply) \ -_(lisp_eid_table_add_del_map_reply) \ +_(one_add_del_locator_reply) \ +_(one_add_del_local_eid_reply) \ +_(one_add_del_remote_mapping_reply) \ +_(one_add_del_adjacency_reply) \ +_(one_add_del_map_resolver_reply) \ +_(one_add_del_map_server_reply) \ +_(one_enable_disable_reply) \ +_(one_rloc_probe_enable_disable_reply) \ +_(one_map_register_enable_disable_reply) \ +_(one_pitr_set_locator_set_reply) \ +_(one_map_request_mode_reply) \ +_(one_add_del_map_request_itr_rlocs_reply) \ +_(one_eid_table_add_del_map_reply) \ +_(gpe_add_del_fwd_entry_reply) \ +_(gpe_enable_disable_reply) \ +_(gpe_set_encap_mode_reply) \ +_(gpe_add_del_iface_reply) \ _(vxlan_gpe_add_del_tunnel_reply) \ _(af_packet_delete_reply) \ _(policer_classify_set_interface_reply) \ @@ -3609,13 +3970,6 @@ _(feature_enable_disable_reply) \ _(sw_interface_tag_add_del_reply) \ _(sw_interface_set_mtu_reply) -#if DPDK > 0 -#define foreach_standard_dpdk_reply_retval_handler \ -_(sw_interface_set_dpdk_hqos_pipe_reply) \ -_(sw_interface_set_dpdk_hqos_subport_reply) \ -_(sw_interface_set_dpdk_hqos_tctbl_reply) -#endif - #define _(n) \ static void vl_api_##n##_t_handler \ (vl_api_##n##_t * mp) \ @@ -3647,39 +4001,6 @@ foreach_standard_reply_retval_handler; foreach_standard_reply_retval_handler; #undef _ -#if DPDK > 0 -#define _(n) \ - static void vl_api_##n##_t_handler \ - (vl_api_##n##_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; \ - vam->result_ready = 1; \ - } \ - } -foreach_standard_dpdk_reply_retval_handler; -#undef _ - -#define _(n) \ - static void vl_api_##n##_t_handler_json \ - (vl_api_##n##_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_print(vam->ofp, &node); \ - vam->retval = ntohl(mp->retval); \ - vam->result_ready = 1; \ - } -foreach_standard_dpdk_reply_retval_handler; -#undef _ -#endif - /* * Table of message reply handlers, must include boilerplate handlers * we just generated @@ -3714,6 +4035,7 @@ _(TAP_MODIFY_REPLY, tap_modify_reply) \ _(TAP_DELETE_REPLY, tap_delete_reply) \ _(SW_INTERFACE_TAP_DETAILS, sw_interface_tap_details) \ _(IP_ADD_DEL_ROUTE_REPLY, ip_add_del_route_reply) \ +_(IP_MROUTE_ADD_DEL_REPLY, ip_mroute_add_del_reply) \ _(MPLS_ROUTE_ADD_DEL_REPLY, mpls_route_add_del_reply) \ _(MPLS_IP_BIND_UNBIND_REPLY, mpls_ip_bind_unbind_reply) \ _(PROXY_ARP_ADD_DEL_REPLY, proxy_arp_add_del_reply) \ @@ -3729,8 +4051,8 @@ _(CREATE_SUBIF_REPLY, create_subif_reply) \ _(OAM_ADD_DEL_REPLY, oam_add_del_reply) \ _(RESET_FIB_REPLY, reset_fib_reply) \ _(DHCP_PROXY_CONFIG_REPLY, dhcp_proxy_config_reply) \ -_(DHCP_PROXY_CONFIG_2_REPLY, dhcp_proxy_config_2_reply) \ _(DHCP_PROXY_SET_VSS_REPLY, dhcp_proxy_set_vss_reply) \ +_(DHCP_PROXY_DETAILS, dhcp_proxy_details) \ _(DHCP_CLIENT_CONFIG_REPLY, dhcp_client_config_reply) \ _(SET_IP_FLOW_HASH_REPLY, set_ip_flow_hash_reply) \ _(SW_INTERFACE_IP6_ENABLE_DISABLE_REPLY, \ @@ -3793,12 +4115,22 @@ _(IKEV2_PROFILE_SET_AUTH_REPLY, ikev2_profile_set_auth_reply) \ _(IKEV2_PROFILE_SET_ID_REPLY, ikev2_profile_set_id_reply) \ _(IKEV2_PROFILE_SET_TS_REPLY, ikev2_profile_set_ts_reply) \ _(IKEV2_SET_LOCAL_KEY_REPLY, ikev2_set_local_key_reply) \ +_(IKEV2_SET_RESPONDER_REPLY, ikev2_set_responder_reply) \ +_(IKEV2_SET_IKE_TRANSFORMS_REPLY, ikev2_set_ike_transforms_reply) \ +_(IKEV2_SET_ESP_TRANSFORMS_REPLY, ikev2_set_esp_transforms_reply) \ +_(IKEV2_SET_SA_LIFETIME_REPLY, ikev2_set_sa_lifetime_reply) \ +_(IKEV2_INITIATE_SA_INIT_REPLY, ikev2_initiate_sa_init_reply) \ +_(IKEV2_INITIATE_DEL_IKE_SA_REPLY, ikev2_initiate_del_ike_sa_reply) \ +_(IKEV2_INITIATE_DEL_CHILD_SA_REPLY, ikev2_initiate_del_child_sa_reply) \ +_(IKEV2_INITIATE_REKEY_CHILD_SA_REPLY, ikev2_initiate_rekey_child_sa_reply) \ _(DELETE_LOOPBACK_REPLY, delete_loopback_reply) \ _(BD_IP_MAC_ADD_DEL_REPLY, bd_ip_mac_add_del_reply) \ _(DHCP_COMPL_EVENT, dhcp_compl_event) \ _(VNET_INTERFACE_COUNTERS, vnet_interface_counters) \ _(VNET_IP4_FIB_COUNTERS, vnet_ip4_fib_counters) \ _(VNET_IP6_FIB_COUNTERS, vnet_ip6_fib_counters) \ +_(VNET_IP4_NBR_COUNTERS, vnet_ip4_nbr_counters) \ +_(VNET_IP6_NBR_COUNTERS, vnet_ip6_nbr_counters) \ _(MAP_ADD_DOMAIN_REPLY, map_add_domain_reply) \ _(MAP_DEL_DOMAIN_REPLY, map_del_domain_reply) \ _(MAP_ADD_DEL_RULE_REPLY, map_add_del_rule_reply) \ @@ -3813,42 +4145,47 @@ _(GET_NODE_GRAPH_REPLY, get_node_graph_reply) \ _(SW_INTERFACE_CLEAR_STATS_REPLY, sw_interface_clear_stats_reply) \ _(IOAM_ENABLE_REPLY, ioam_enable_reply) \ _(IOAM_DISABLE_REPLY, ioam_disable_reply) \ -_(LISP_ADD_DEL_LOCATOR_SET_REPLY, lisp_add_del_locator_set_reply) \ -_(LISP_ADD_DEL_LOCATOR_REPLY, lisp_add_del_locator_reply) \ -_(LISP_ADD_DEL_LOCAL_EID_REPLY, lisp_add_del_local_eid_reply) \ -_(LISP_ADD_DEL_REMOTE_MAPPING_REPLY, lisp_add_del_remote_mapping_reply) \ -_(LISP_ADD_DEL_ADJACENCY_REPLY, lisp_add_del_adjacency_reply) \ -_(LISP_GPE_ADD_DEL_FWD_ENTRY_REPLY, lisp_gpe_add_del_fwd_entry_reply) \ -_(LISP_ADD_DEL_MAP_RESOLVER_REPLY, lisp_add_del_map_resolver_reply) \ -_(LISP_ADD_DEL_MAP_SERVER_REPLY, lisp_add_del_map_server_reply) \ -_(LISP_GPE_ENABLE_DISABLE_REPLY, lisp_gpe_enable_disable_reply) \ -_(LISP_ENABLE_DISABLE_REPLY, lisp_enable_disable_reply) \ -_(LISP_MAP_REGISTER_ENABLE_DISABLE_REPLY, \ - lisp_map_register_enable_disable_reply) \ -_(LISP_RLOC_PROBE_ENABLE_DISABLE_REPLY, \ - lisp_rloc_probe_enable_disable_reply) \ -_(LISP_PITR_SET_LOCATOR_SET_REPLY, lisp_pitr_set_locator_set_reply) \ -_(LISP_MAP_REQUEST_MODE_REPLY, lisp_map_request_mode_reply) \ -_(LISP_EID_TABLE_ADD_DEL_MAP_REPLY, lisp_eid_table_add_del_map_reply) \ -_(LISP_GPE_ADD_DEL_IFACE_REPLY, lisp_gpe_add_del_iface_reply) \ -_(LISP_LOCATOR_SET_DETAILS, lisp_locator_set_details) \ -_(LISP_LOCATOR_DETAILS, lisp_locator_details) \ -_(LISP_EID_TABLE_DETAILS, lisp_eid_table_details) \ -_(LISP_EID_TABLE_MAP_DETAILS, lisp_eid_table_map_details) \ -_(LISP_EID_TABLE_VNI_DETAILS, lisp_eid_table_vni_details) \ -_(LISP_MAP_RESOLVER_DETAILS, lisp_map_resolver_details) \ -_(LISP_MAP_SERVER_DETAILS, lisp_map_server_details) \ -_(LISP_ADJACENCIES_GET_REPLY, lisp_adjacencies_get_reply) \ -_(SHOW_LISP_STATUS_REPLY, show_lisp_status_reply) \ -_(LISP_ADD_DEL_MAP_REQUEST_ITR_RLOCS_REPLY, \ - lisp_add_del_map_request_itr_rlocs_reply) \ -_(LISP_GET_MAP_REQUEST_ITR_RLOCS_REPLY, \ - lisp_get_map_request_itr_rlocs_reply) \ -_(SHOW_LISP_PITR_REPLY, show_lisp_pitr_reply) \ -_(SHOW_LISP_MAP_REQUEST_MODE_REPLY, show_lisp_map_request_mode_reply) \ -_(SHOW_LISP_RLOC_PROBE_STATE_REPLY, show_lisp_rloc_probe_state_reply) \ -_(SHOW_LISP_MAP_REGISTER_STATE_REPLY, \ - show_lisp_map_register_state_reply) \ +_(ONE_ADD_DEL_LOCATOR_SET_REPLY, one_add_del_locator_set_reply) \ +_(ONE_ADD_DEL_LOCATOR_REPLY, one_add_del_locator_reply) \ +_(ONE_ADD_DEL_LOCAL_EID_REPLY, one_add_del_local_eid_reply) \ +_(ONE_ADD_DEL_REMOTE_MAPPING_REPLY, one_add_del_remote_mapping_reply) \ +_(ONE_ADD_DEL_ADJACENCY_REPLY, one_add_del_adjacency_reply) \ +_(ONE_ADD_DEL_MAP_RESOLVER_REPLY, one_add_del_map_resolver_reply) \ +_(ONE_ADD_DEL_MAP_SERVER_REPLY, one_add_del_map_server_reply) \ +_(ONE_ENABLE_DISABLE_REPLY, one_enable_disable_reply) \ +_(ONE_MAP_REGISTER_ENABLE_DISABLE_REPLY, \ + one_map_register_enable_disable_reply) \ +_(ONE_RLOC_PROBE_ENABLE_DISABLE_REPLY, \ + one_rloc_probe_enable_disable_reply) \ +_(ONE_PITR_SET_LOCATOR_SET_REPLY, one_pitr_set_locator_set_reply) \ +_(ONE_MAP_REQUEST_MODE_REPLY, one_map_request_mode_reply) \ +_(ONE_EID_TABLE_ADD_DEL_MAP_REPLY, one_eid_table_add_del_map_reply) \ +_(ONE_LOCATOR_SET_DETAILS, one_locator_set_details) \ +_(ONE_LOCATOR_DETAILS, one_locator_details) \ +_(ONE_EID_TABLE_DETAILS, one_eid_table_details) \ +_(ONE_EID_TABLE_MAP_DETAILS, one_eid_table_map_details) \ +_(ONE_EID_TABLE_VNI_DETAILS, one_eid_table_vni_details) \ +_(ONE_MAP_RESOLVER_DETAILS, one_map_resolver_details) \ +_(ONE_MAP_SERVER_DETAILS, one_map_server_details) \ +_(ONE_ADJACENCIES_GET_REPLY, one_adjacencies_get_reply) \ +_(GPE_SET_ENCAP_MODE_REPLY, gpe_set_encap_mode_reply) \ +_(GPE_GET_ENCAP_MODE_REPLY, gpe_get_encap_mode_reply) \ +_(GPE_ADD_DEL_IFACE_REPLY, gpe_add_del_iface_reply) \ +_(GPE_ENABLE_DISABLE_REPLY, gpe_enable_disable_reply) \ +_(GPE_ADD_DEL_FWD_ENTRY_REPLY, gpe_add_del_fwd_entry_reply) \ +_(GPE_FWD_ENTRIES_GET_REPLY, gpe_fwd_entries_get_reply) \ +_(GPE_FWD_ENTRY_PATH_DETAILS, \ + gpe_fwd_entry_path_details) \ +_(SHOW_ONE_STATUS_REPLY, show_one_status_reply) \ +_(ONE_ADD_DEL_MAP_REQUEST_ITR_RLOCS_REPLY, \ + one_add_del_map_request_itr_rlocs_reply) \ +_(ONE_GET_MAP_REQUEST_ITR_RLOCS_REPLY, \ + one_get_map_request_itr_rlocs_reply) \ +_(SHOW_ONE_PITR_REPLY, show_one_pitr_reply) \ +_(SHOW_ONE_MAP_REQUEST_MODE_REPLY, show_one_map_request_mode_reply) \ +_(SHOW_ONE_RLOC_PROBE_STATE_REPLY, show_one_rloc_probe_state_reply) \ +_(SHOW_ONE_MAP_REGISTER_STATE_REPLY, \ + show_one_map_register_state_reply) \ _(AF_PACKET_CREATE_REPLY, af_packet_create_reply) \ _(AF_PACKET_DELETE_REPLY, af_packet_delete_reply) \ _(POLICER_ADD_DEL_REPLY, policer_add_del_reply) \ @@ -3895,16 +4232,6 @@ _(SW_INTERFACE_SET_MTU_REPLY, sw_interface_set_mtu_reply) \ _(IP_NEIGHBOR_DETAILS, ip_neighbor_details) \ _(SW_INTERFACE_GET_TABLE_REPLY, sw_interface_get_table_reply) -#if DPDK > 0 -#define foreach_vpe_dpdk_api_reply_msg \ -_(SW_INTERFACE_SET_DPDK_HQOS_PIPE_REPLY, \ - sw_interface_set_dpdk_hqos_pipe_reply) \ -_(SW_INTERFACE_SET_DPDK_HQOS_SUBPORT_REPLY, \ - sw_interface_set_dpdk_hqos_subport_reply) \ -_(SW_INTERFACE_SET_DPDK_HQOS_TCTBL_REPLY, \ - sw_interface_set_dpdk_hqos_tctbl_reply) -#endif - typedef struct { u8 *name; @@ -4131,6 +4458,8 @@ dump_stats_table (vat_main_t * vam) u64 packets; ip4_fib_counter_t *c4; ip6_fib_counter_t *c6; + ip4_nbr_counter_t *n4; + ip6_nbr_counter_t *n6; int i, j; if (!vam->json_output) @@ -4226,8 +4555,51 @@ dump_stats_table (vat_main_t * vam) } } - vat_json_print (vam->ofp, &node); - vat_json_free (&node); + /* ip4 nbr counters */ + msg_array = vat_json_object_add (&node, "ip4_nbr_counters"); + vat_json_init_array (msg_array); + for (i = 0; i < vec_len (vam->ip4_nbr_counters); i++) + { + msg = vat_json_array_add (msg_array); + vat_json_init_object (msg); + vat_json_object_add_uint (msg, "sw_if_index", i); + counter_array = vat_json_object_add (msg, "c"); + vat_json_init_array (counter_array); + for (j = 0; j < vec_len (vam->ip4_nbr_counters[i]); j++) + { + counter = vat_json_array_add (counter_array); + vat_json_init_object (counter); + n4 = &vam->ip4_nbr_counters[i][j]; + vat_json_object_add_ip4 (counter, "address", n4->address); + vat_json_object_add_uint (counter, "link-type", n4->linkt); + vat_json_object_add_uint (counter, "packets", n4->packets); + vat_json_object_add_uint (counter, "bytes", n4->bytes); + } + } + + /* ip6 nbr counters */ + msg_array = vat_json_object_add (&node, "ip6_nbr_counters"); + vat_json_init_array (msg_array); + for (i = 0; i < vec_len (vam->ip6_nbr_counters); i++) + { + msg = vat_json_array_add (msg_array); + vat_json_init_object (msg); + vat_json_object_add_uint (msg, "sw_if_index", i); + counter_array = vat_json_object_add (msg, "c"); + vat_json_init_array (counter_array); + for (j = 0; j < vec_len (vam->ip6_nbr_counters[i]); j++) + { + counter = vat_json_array_add (counter_array); + vat_json_init_object (counter); + n6 = &vam->ip6_nbr_counters[i][j]; + vat_json_object_add_ip6 (counter, "address", n6->address); + vat_json_object_add_uint (counter, "packets", n6->packets); + vat_json_object_add_uint (counter, "bytes", n6->bytes); + } + } + + vat_json_print (vam->ofp, &node); + vat_json_free (&node); return 0; } @@ -4257,7 +4629,7 @@ exec (vat_main_t * vam) } - M (CLI_REQUEST, cli_request); + M (CLI_REQUEST, mp); /* * Copy cmd into shared memory. @@ -4275,7 +4647,7 @@ exec (vat_main_t * vam) pthread_mutex_unlock (&am->vlib_rp->mutex); mp->cmd_in_shmem = (u64) cmd; - S; + S (mp); timeout = vat_time_now (vam) + 10.0; while (vat_time_now (vam) < timeout) @@ -4307,8 +4679,8 @@ static int exec_inband (vat_main_t * vam) { vl_api_cli_inband_t *mp; - f64 timeout; unformat_input_t *i = vam->input; + int ret; if (vec_len (i->buffer) == 0) return -1; @@ -4330,12 +4702,13 @@ exec_inband (vat_main_t * vam) * in \n\0. */ u32 len = vec_len (vam->input->buffer); - M2 (CLI_INBAND, cli_inband, len); + M2 (CLI_INBAND, mp, len); clib_memcpy (mp->cmd, vam->input->buffer, len); mp->length = htonl (len); - S; - W2 (print (vam->ofp, "%s", vam->cmd_reply)); + S (mp); + W2 (ret, print (vam->ofp, "%s", vam->cmd_reply)); + return ret; } static int @@ -4343,9 +4716,9 @@ api_create_loopback (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_create_loopback_t *mp; - f64 timeout; u8 mac_address[6]; u8 mac_set = 0; + int ret; memset (mac_address, 0, sizeof (mac_address)); @@ -4358,12 +4731,13 @@ api_create_loopback (vat_main_t * vam) } /* Construct the API message */ - M (CREATE_LOOPBACK, create_loopback); + M (CREATE_LOOPBACK, mp); if (mac_set) clib_memcpy (mp->mac_address, mac_address, sizeof (mac_address)); - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -4371,8 +4745,8 @@ api_delete_loopback (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_delete_loopback_t *mp; - f64 timeout; u32 sw_if_index = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -4389,11 +4763,12 @@ api_delete_loopback (vat_main_t * vam) } /* Construct the API message */ - M (DELETE_LOOPBACK, delete_loopback); + M (DELETE_LOOPBACK, mp); mp->sw_if_index = ntohl (sw_if_index); - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -4401,8 +4776,8 @@ api_want_stats (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_want_stats_t *mp; - f64 timeout; int enable = -1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -4420,11 +4795,12 @@ api_want_stats (vat_main_t * vam) return -99; } - M (WANT_STATS, want_stats); + M (WANT_STATS, mp); mp->enable_disable = enable; - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -4432,8 +4808,8 @@ api_want_interface_events (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_want_interface_events_t *mp; - f64 timeout; int enable = -1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -4451,13 +4827,14 @@ api_want_interface_events (vat_main_t * vam) return -99; } - M (WANT_INTERFACE_EVENTS, want_interface_events); + M (WANT_INTERFACE_EVENTS, mp); mp->enable_disable = enable; vam->interface_event_display = enable; - S; - W; + S (mp); + W (ret); + return ret; } @@ -4466,10 +4843,11 @@ int api_sw_interface_dump (vat_main_t * vam) { vl_api_sw_interface_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; hash_pair_t *p; name_sort_t *nses = 0, *ns; sw_interface_subif_t *sub = NULL; + int ret; /* Toss the old name table */ /* *INDENT-OFF* */ @@ -4497,75 +4875,74 @@ api_sw_interface_dump (vat_main_t * vam) vam->sw_if_index_by_interface_name = hash_create_string (0, sizeof (uword)); /* Get list of ethernets */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "Ether", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and local / loopback interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "lo", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and packet-generator interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "pg", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and vxlan-gpe tunnel interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "vxlan_gpe", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and vxlan tunnel interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "vxlan", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and host (af_packet) interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "host", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and l2tpv3 tunnel interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "l2tpv3_tunnel", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and GRE tunnel interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "gre", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and LISP-GPE interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "lisp_gpe", sizeof (mp->name_filter) - 1); - S; + S (mp); /* and IPSEC tunnel interfaces */ - M (SW_INTERFACE_DUMP, sw_interface_dump); + M (SW_INTERFACE_DUMP, mp); mp->name_filter_valid = 1; strncpy ((char *) mp->name_filter, "ipsec", sizeof (mp->name_filter) - 1); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -4573,10 +4950,10 @@ api_sw_interface_set_flags (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_flags_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 admin_up = 0, link_up = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -4605,16 +4982,17 @@ api_sw_interface_set_flags (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_FLAGS, sw_interface_set_flags); + M (SW_INTERFACE_SET_FLAGS, mp); mp->sw_if_index = ntohl (sw_if_index); mp->admin_up_down = admin_up; mp->link_up_down = link_up; /* send it... */ - S; + S (mp); /* Wait for a reply, return the good/bad news... */ - W; + W (ret); + return ret; } static int @@ -4622,9 +5000,9 @@ api_sw_interface_clear_stats (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_clear_stats_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -4638,7 +5016,7 @@ api_sw_interface_clear_stats (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_CLEAR_STATS, sw_interface_clear_stats); + M (SW_INTERFACE_CLEAR_STATS, mp); if (sw_if_index_set == 1) mp->sw_if_index = ntohl (sw_if_index); @@ -4646,241 +5024,18 @@ api_sw_interface_clear_stats (vat_main_t * vam) mp->sw_if_index = ~0; /* send it... */ - S; + S (mp); /* Wait for a reply, return the good/bad news... */ - W; -} - -#if DPDK >0 -static int -api_sw_interface_set_dpdk_hqos_pipe (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_sw_interface_set_dpdk_hqos_pipe_t *mp; - f64 timeout; - u32 sw_if_index; - u8 sw_if_index_set = 0; - u32 subport; - u8 subport_set = 0; - u32 pipe; - u8 pipe_set = 0; - u32 profile; - u8 profile_set = 0; - - /* Parse args required to build the message */ - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "rx %U", api_unformat_sw_if_index, vam, &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "sw_if_index %u", &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "subport %u", &subport)) - subport_set = 1; - else - if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "pipe %u", &pipe)) - pipe_set = 1; - else if (unformat (i, "profile %u", &profile)) - profile_set = 1; - else - break; - } - - if (sw_if_index_set == 0) - { - errmsg ("missing interface name or sw_if_index"); - return -99; - } - - if (subport_set == 0) - { - errmsg ("missing subport "); - return -99; - } - - if (pipe_set == 0) - { - errmsg ("missing pipe"); - return -99; - } - - if (profile_set == 0) - { - errmsg ("missing profile"); - return -99; - } - - M (SW_INTERFACE_SET_DPDK_HQOS_PIPE, sw_interface_set_dpdk_hqos_pipe); - - mp->sw_if_index = ntohl (sw_if_index); - mp->subport = ntohl (subport); - mp->pipe = ntohl (pipe); - mp->profile = ntohl (profile); - - - S; - W; - /* NOTREACHED */ - return 0; -} - -static int -api_sw_interface_set_dpdk_hqos_subport (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_sw_interface_set_dpdk_hqos_subport_t *mp; - f64 timeout; - u32 sw_if_index; - u8 sw_if_index_set = 0; - u32 subport; - u8 subport_set = 0; - u32 tb_rate = 1250000000; /* 10GbE */ - u32 tb_size = 1000000; - u32 tc_rate[] = { 1250000000, 1250000000, 1250000000, 1250000000 }; - u32 tc_period = 10; - - /* Parse args required to build the message */ - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "rx %U", api_unformat_sw_if_index, vam, &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "sw_if_index %u", &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "subport %u", &subport)) - subport_set = 1; - else - if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "rate %u", &tb_rate)) - { - u32 tc_id; - - for (tc_id = 0; tc_id < (sizeof (tc_rate) / sizeof (tc_rate[0])); - tc_id++) - tc_rate[tc_id] = tb_rate; - } - else if (unformat (i, "bktsize %u", &tb_size)) - ; - else if (unformat (i, "tc0 %u", &tc_rate[0])) - ; - else if (unformat (i, "tc1 %u", &tc_rate[1])) - ; - else if (unformat (i, "tc2 %u", &tc_rate[2])) - ; - else if (unformat (i, "tc3 %u", &tc_rate[3])) - ; - else if (unformat (i, "period %u", &tc_period)) - ; - else - break; - } - - if (sw_if_index_set == 0) - { - errmsg ("missing interface name or sw_if_index"); - return -99; - } - - if (subport_set == 0) - { - errmsg ("missing subport "); - return -99; - } - - M (SW_INTERFACE_SET_DPDK_HQOS_SUBPORT, sw_interface_set_dpdk_hqos_subport); - - mp->sw_if_index = ntohl (sw_if_index); - mp->subport = ntohl (subport); - mp->tb_rate = ntohl (tb_rate); - mp->tb_size = ntohl (tb_size); - mp->tc_rate[0] = ntohl (tc_rate[0]); - mp->tc_rate[1] = ntohl (tc_rate[1]); - mp->tc_rate[2] = ntohl (tc_rate[2]); - mp->tc_rate[3] = ntohl (tc_rate[3]); - mp->tc_period = ntohl (tc_period); - - S; - W; - /* NOTREACHED */ - return 0; -} - -static int -api_sw_interface_set_dpdk_hqos_tctbl (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_sw_interface_set_dpdk_hqos_tctbl_t *mp; - f64 timeout; - u32 sw_if_index; - u8 sw_if_index_set = 0; - u8 entry_set = 0; - u8 tc_set = 0; - u8 queue_set = 0; - u32 entry, tc, queue; - - /* Parse args required to build the message */ - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "rx %U", api_unformat_sw_if_index, vam, &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "sw_if_index %u", &sw_if_index)) - sw_if_index_set = 1; - else if (unformat (i, "entry %d", &entry)) - entry_set = 1; - else if (unformat (i, "tc %d", &tc)) - tc_set = 1; - else if (unformat (i, "queue %d", &queue)) - queue_set = 1; - else - break; - } - - if (sw_if_index_set == 0) - { - errmsg ("missing interface name or sw_if_index"); - return -99; - } - - if (entry_set == 0) - { - errmsg ("missing entry "); - return -99; - } - - if (tc_set == 0) - { - errmsg ("missing traffic class "); - return -99; - } - - if (queue_set == 0) - { - errmsg ("missing queue "); - return -99; - } - - M (SW_INTERFACE_SET_DPDK_HQOS_TCTBL, sw_interface_set_dpdk_hqos_tctbl); - - mp->sw_if_index = ntohl (sw_if_index); - mp->entry = ntohl (entry); - mp->tc = ntohl (tc); - mp->queue = ntohl (queue); - - S; - W; - /* NOTREACHED */ - return 0; + W (ret); + return ret; } -#endif static int api_sw_interface_add_del_address (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_add_del_address_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 is_add = 1, del_all = 0; @@ -4889,6 +5044,7 @@ api_sw_interface_add_del_address (vat_main_t * vam) u8 v6_address_set = 0; ip4_address_t v4address; ip6_address_t v6address; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -4929,7 +5085,7 @@ api_sw_interface_add_del_address (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_ADD_DEL_ADDRESS, sw_interface_add_del_address); + M (SW_INTERFACE_ADD_DEL_ADDRESS, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_add = is_add; @@ -4946,10 +5102,11 @@ api_sw_interface_add_del_address (vat_main_t * vam) mp->address_length = address_length; /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; + W (ret); + return ret; } static int @@ -4957,10 +5114,10 @@ api_sw_interface_set_mpls_enable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_mpls_enable_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 enable = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -4984,16 +5141,17 @@ api_sw_interface_set_mpls_enable (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_MPLS_ENABLE, sw_interface_set_mpls_enable); + M (SW_INTERFACE_SET_MPLS_ENABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = enable; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5001,10 +5159,10 @@ api_sw_interface_set_table (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_table_t *mp; - f64 timeout; u32 sw_if_index, vrf_id = 0; u8 sw_if_index_set = 0; u8 is_ipv6 = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5028,17 +5186,18 @@ api_sw_interface_set_table (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_TABLE, sw_interface_set_table); + M (SW_INTERFACE_SET_TABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_ipv6 = is_ipv6; mp->vrf_id = ntohl (vrf_id); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static void vl_api_sw_interface_get_table_reply_t_handler @@ -5078,7 +5237,7 @@ api_sw_interface_get_table (vat_main_t * vam) u32 sw_if_index; u8 sw_if_index_set = 0; u8 is_ipv6 = 0; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -5098,12 +5257,13 @@ api_sw_interface_get_table (vat_main_t * vam) return -99; } - M (SW_INTERFACE_GET_TABLE, sw_interface_get_table); + M (SW_INTERFACE_GET_TABLE, mp); mp->sw_if_index = htonl (sw_if_index); mp->is_ipv6 = is_ipv6; - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -5111,10 +5271,10 @@ api_sw_interface_set_vpath (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_vpath_t *mp; - f64 timeout; u32 sw_if_index = 0; u8 sw_if_index_set = 0; u8 is_enable = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5138,16 +5298,17 @@ api_sw_interface_set_vpath (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_VPATH, sw_interface_set_vpath); + M (SW_INTERFACE_SET_VPATH, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = is_enable; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5155,11 +5316,11 @@ api_sw_interface_set_vxlan_bypass (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_vxlan_bypass_t *mp; - f64 timeout; u32 sw_if_index = 0; u8 sw_if_index_set = 0; - u8 is_enable = 0; + u8 is_enable = 1; u8 is_ipv6 = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5187,17 +5348,18 @@ api_sw_interface_set_vxlan_bypass (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_VXLAN_BYPASS, sw_interface_set_vxlan_bypass); + M (SW_INTERFACE_SET_VXLAN_BYPASS, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = is_enable; mp->is_ipv6 = is_ipv6; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5205,12 +5367,12 @@ api_sw_interface_set_l2_xconnect (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_l2_xconnect_t *mp; - f64 timeout; u32 rx_sw_if_index; u8 rx_sw_if_index_set = 0; u32 tx_sw_if_index; u8 tx_sw_if_index_set = 0; u8 enable = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5261,16 +5423,15 @@ api_sw_interface_set_l2_xconnect (vat_main_t * vam) return -99; } - M (SW_INTERFACE_SET_L2_XCONNECT, sw_interface_set_l2_xconnect); + M (SW_INTERFACE_SET_L2_XCONNECT, mp); mp->rx_sw_if_index = ntohl (rx_sw_if_index); mp->tx_sw_if_index = ntohl (tx_sw_if_index); mp->enable = enable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5278,7 +5439,6 @@ api_sw_interface_set_l2_bridge (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_l2_bridge_t *mp; - f64 timeout; u32 rx_sw_if_index; u8 rx_sw_if_index_set = 0; u32 bd_id; @@ -5286,6 +5446,7 @@ api_sw_interface_set_l2_bridge (vat_main_t * vam) u8 bvi = 0; u32 shg = 0; u8 enable = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5322,7 +5483,7 @@ api_sw_interface_set_l2_bridge (vat_main_t * vam) return -99; } - M (SW_INTERFACE_SET_L2_BRIDGE, sw_interface_set_l2_bridge); + M (SW_INTERFACE_SET_L2_BRIDGE, mp); mp->rx_sw_if_index = ntohl (rx_sw_if_index); mp->bd_id = ntohl (bd_id); @@ -5330,10 +5491,9 @@ api_sw_interface_set_l2_bridge (vat_main_t * vam) mp->bvi = bvi; mp->enable = enable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5341,8 +5501,9 @@ api_bridge_domain_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_bridge_domain_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 bd_id = ~0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5353,20 +5514,16 @@ api_bridge_domain_dump (vat_main_t * vam) break; } - M (BRIDGE_DOMAIN_DUMP, bridge_domain_dump); + M (BRIDGE_DOMAIN_DUMP, mp); mp->bd_id = ntohl (bd_id); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } + M (CONTROL_PING, mp_ping); + S (mp_ping); - W; - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int @@ -5374,11 +5531,11 @@ api_bridge_domain_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_bridge_domain_add_del_t *mp; - f64 timeout; u32 bd_id = ~0; u8 is_add = 1; u32 flood = 1, forward = 1, learn = 1, uu_flood = 1, arp_term = 0; u32 mac_age = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5418,7 +5575,7 @@ api_bridge_domain_add_del (vat_main_t * vam) return -99; } - M (BRIDGE_DOMAIN_ADD_DEL, bridge_domain_add_del); + M (BRIDGE_DOMAIN_ADD_DEL, mp); mp->bd_id = ntohl (bd_id); mp->flood = flood; @@ -5429,10 +5586,9 @@ api_bridge_domain_add_del (vat_main_t * vam) mp->is_add = is_add; mp->mac_age = (u8) mac_age; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5523,7 +5679,7 @@ api_l2fib_add_del (vat_main_t * vam) for (j = 0; j < count; j++) { - M (L2FIB_ADD_DEL, l2fib_add_del); + M (L2FIB_ADD_DEL, mp); mp->mac = mac; mp->bd_id = ntohl (bd_id); @@ -5538,19 +5694,19 @@ api_l2fib_add_del (vat_main_t * vam) } increment_mac_address (&mac); /* send it... */ - S; + S (mp); } if (count > 1) { - vl_api_control_ping_t *mp; + vl_api_control_ping_t *mp_ping; f64 after; /* Shut off async mode */ vam->async_mode = 0; - M (CONTROL_PING, control_ping); - S; + M (CONTROL_PING, mp_ping); + S (mp_ping); timeout = vat_time_now (vam) + 1.0; while (vat_time_now (vam) < timeout) @@ -5575,8 +5731,11 @@ api_l2fib_add_del (vat_main_t * vam) } else { + int ret; + /* Wait for a reply... */ - W; + W (ret); + return ret; } /* Return the good/bad news */ return (vam->retval); @@ -5587,10 +5746,10 @@ api_l2_flags (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_flags_t *mp; - f64 timeout; u32 sw_if_index; u32 feature_bitmap = 0; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5626,15 +5785,14 @@ api_l2_flags (vat_main_t * vam) return -99; } - M (L2_FLAGS, l2_flags); + M (L2_FLAGS, mp); mp->sw_if_index = ntohl (sw_if_index); mp->feature_bitmap = ntohl (feature_bitmap); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5642,11 +5800,11 @@ api_bridge_flags (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_bridge_flags_t *mp; - f64 timeout; u32 bd_id; u8 bd_id_set = 0; u8 is_set = 1; u32 flags = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5677,16 +5835,15 @@ api_bridge_flags (vat_main_t * vam) return -99; } - M (BRIDGE_FLAGS, bridge_flags); + M (BRIDGE_FLAGS, mp); mp->bd_id = ntohl (bd_id); mp->feature_bitmap = ntohl (flags); mp->is_set = is_set; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5694,7 +5851,6 @@ api_bd_ip_mac_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_bd_ip_mac_add_del_t *mp; - f64 timeout; u32 bd_id; u8 is_ipv6 = 0; u8 is_add = 1; @@ -5704,6 +5860,7 @@ api_bd_ip_mac_add_del (vat_main_t * vam) ip4_address_t v4addr; ip6_address_t v6addr; u8 macaddr[6]; + int ret; /* Parse args required to build the message */ @@ -5748,7 +5905,7 @@ api_bd_ip_mac_add_del (vat_main_t * vam) return -99; } - M (BD_IP_MAC_ADD_DEL, bd_ip_mac_add_del); + M (BD_IP_MAC_ADD_DEL, mp); mp->bd_id = ntohl (bd_id); mp->is_ipv6 = is_ipv6; @@ -5758,10 +5915,9 @@ api_bd_ip_mac_add_del (vat_main_t * vam) else clib_memcpy (mp->ip_address, &v4addr, sizeof (v4addr)); clib_memcpy (mp->mac_address, macaddr, 6); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -5769,7 +5925,6 @@ api_tap_connect (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_tap_connect_t *mp; - f64 timeout; u8 mac_address[6]; u8 random_mac = 1; u8 name_set = 0; @@ -5781,6 +5936,7 @@ api_tap_connect (vat_main_t * vam) ip6_address_t ip6_address; u32 ip6_mask_width; int ip6_address_set = 0; + int ret; memset (mac_address, 0, sizeof (mac_address)); @@ -5826,7 +5982,7 @@ api_tap_connect (vat_main_t * vam) } /* Construct the API message */ - M (TAP_CONNECT, tap_connect); + M (TAP_CONNECT, mp); mp->use_random_mac = random_mac; clib_memcpy (mp->mac_address, mac_address, 6); @@ -5851,10 +6007,11 @@ api_tap_connect (vat_main_t * vam) vec_free (tag); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5862,13 +6019,13 @@ api_tap_modify (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_tap_modify_t *mp; - f64 timeout; u8 mac_address[6]; u8 random_mac = 1; u8 name_set = 0; u8 *tap_name; u32 sw_if_index = ~0; u8 sw_if_index_set = 0; + int ret; memset (mac_address, 0, sizeof (mac_address)); @@ -5908,7 +6065,7 @@ api_tap_modify (vat_main_t * vam) vec_add1 (tap_name, 0); /* Construct the API message */ - M (TAP_MODIFY, tap_modify); + M (TAP_MODIFY, mp); mp->use_random_mac = random_mac; mp->sw_if_index = ntohl (sw_if_index); @@ -5917,10 +6074,11 @@ api_tap_modify (vat_main_t * vam) vec_free (tap_name); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5928,9 +6086,9 @@ api_tap_delete (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_tap_delete_t *mp; - f64 timeout; u32 sw_if_index = ~0; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -5950,15 +6108,16 @@ api_tap_delete (vat_main_t * vam) } /* Construct the API message */ - M (TAP_DELETE, tap_delete); + M (TAP_DELETE, mp); mp->sw_if_index = ntohl (sw_if_index); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -5966,7 +6125,6 @@ api_ip_add_del_route (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ip_add_del_route_t *mp; - f64 timeout; u32 sw_if_index = ~0, vrf_id = 0; u8 is_ipv6 = 0; u8 is_local = 0, is_drop = 0; @@ -6151,7 +6309,7 @@ api_ip_add_del_route (vat_main_t * vam) for (j = 0; j < count; j++) { /* Construct the API message */ - M2 (IP_ADD_DEL_ROUTE, ip_add_del_route, + M2 (IP_ADD_DEL_ROUTE, mp, sizeof (mpls_label_t) * vec_len (next_hop_out_label_stack)); mp->next_hop_sw_if_index = ntohl (sw_if_index); @@ -6205,7 +6363,7 @@ api_ip_add_del_route (vat_main_t * vam) increment_v4_address (&v4_dst_address); } /* send it... */ - S; + S (mp); /* If we receive SIGTERM, stop now... */ if (vam->do_exit) break; @@ -6214,14 +6372,15 @@ api_ip_add_del_route (vat_main_t * vam) /* When testing multiple add/del ops, use a control-ping to sync */ if (count > 1) { - vl_api_control_ping_t *mp; + vl_api_control_ping_t *mp_ping; f64 after; + f64 timeout; /* Shut off async mode */ vam->async_mode = 0; - M (CONTROL_PING, control_ping); - S; + M (CONTROL_PING, mp_ping); + S (mp_ping); timeout = vat_time_now (vam) + 1.0; while (vat_time_now (vam) < timeout) @@ -6250,8 +6409,11 @@ api_ip_add_del_route (vat_main_t * vam) } else { + int ret; + /* Wait for a reply... */ - W; + W (ret); + return ret; } /* Return the good/bad news */ @@ -6259,59 +6421,176 @@ api_ip_add_del_route (vat_main_t * vam) } static int -api_mpls_route_add_del (vat_main_t * vam) +api_ip_mroute_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; - vl_api_mpls_route_add_del_t *mp; - f64 timeout; - u32 sw_if_index = ~0, table_id = 0; - u8 create_table_if_needed = 0; + vl_api_ip_mroute_add_del_t *mp; + u32 sw_if_index = ~0, vrf_id = 0; + u8 is_ipv6 = 0; + u8 is_local = 0; + u8 create_vrf_if_needed = 0; u8 is_add = 1; - u32 next_hop_weight = 1; - u8 is_multipath = 0; - u32 next_hop_table_id = 0; - u8 next_hop_set = 0; - ip4_address_t v4_next_hop_address = { - .as_u32 = 0, - }; - ip6_address_t v6_next_hop_address = { {0} }; - int count = 1; - int j; - f64 before = 0; - u32 classify_table_index = ~0; - u8 is_classify = 0; - u8 resolve_host = 0, resolve_attached = 0; - mpls_label_t next_hop_via_label = MPLS_LABEL_INVALID; - mpls_label_t next_hop_out_label = MPLS_LABEL_INVALID; - mpls_label_t *next_hop_out_label_stack = NULL; - mpls_label_t local_label = MPLS_LABEL_INVALID; - u8 is_eos = 0; - u8 next_hop_proto_is_ip4 = 1; + u8 address_set = 0; + u32 grp_address_length = 0; + ip4_address_t v4_grp_address, v4_src_address; + ip6_address_t v6_grp_address, v6_src_address; + mfib_itf_flags_t iflags = 0; + mfib_entry_flags_t eflags = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { - if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) - ; - else if (unformat (i, "sw_if_index %d", &sw_if_index)) - ; - else if (unformat (i, "%d", &local_label)) + if (unformat (i, "sw_if_index %d", &sw_if_index)) ; - else if (unformat (i, "eos")) - is_eos = 1; - else if (unformat (i, "non-eos")) - is_eos = 0; - else if (unformat (i, "via %U", unformat_ip4_address, - &v4_next_hop_address)) + else if (unformat (i, "%U %U", + unformat_ip4_address, &v4_src_address, + unformat_ip4_address, &v4_grp_address)) { - next_hop_set = 1; - next_hop_proto_is_ip4 = 1; + grp_address_length = 64; + address_set = 1; + is_ipv6 = 0; } - else if (unformat (i, "via %U", unformat_ip6_address, - &v6_next_hop_address)) + else if (unformat (i, "%U %U", + unformat_ip6_address, &v6_src_address, + unformat_ip6_address, &v6_grp_address)) { - next_hop_set = 1; - next_hop_proto_is_ip4 = 0; + grp_address_length = 256; + address_set = 1; + is_ipv6 = 1; + } + else if (unformat (i, "%U", unformat_ip4_address, &v4_grp_address)) + { + memset (&v4_src_address, 0, sizeof (v4_src_address)); + grp_address_length = 32; + address_set = 1; + is_ipv6 = 0; + } + else if (unformat (i, "%U", unformat_ip6_address, &v6_grp_address)) + { + memset (&v6_src_address, 0, sizeof (v6_src_address)); + grp_address_length = 128; + address_set = 1; + is_ipv6 = 1; + } + else if (unformat (i, "/%d", &grp_address_length)) + ; + else if (unformat (i, "local")) + { + is_local = 1; + } + else if (unformat (i, "del")) + is_add = 0; + else if (unformat (i, "add")) + is_add = 1; + else if (unformat (i, "vrf %d", &vrf_id)) + ; + else if (unformat (i, "create-vrf")) + create_vrf_if_needed = 1; + else if (unformat (i, "%U", unformat_mfib_itf_flags, &iflags)) + ; + else if (unformat (i, "%U", unformat_mfib_entry_flags, &eflags)) + ; + else + { + clib_warning ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (address_set == 0) + { + errmsg ("missing addresses\n"); + return -99; + } + + /* Construct the API message */ + M (IP_MROUTE_ADD_DEL, mp); + + mp->next_hop_sw_if_index = ntohl (sw_if_index); + mp->table_id = ntohl (vrf_id); + mp->create_vrf_if_needed = create_vrf_if_needed; + + mp->is_add = is_add; + mp->is_ipv6 = is_ipv6; + mp->is_local = is_local; + mp->itf_flags = ntohl (iflags); + mp->entry_flags = ntohl (eflags); + mp->grp_address_length = grp_address_length; + mp->grp_address_length = ntohs (mp->grp_address_length); + + if (is_ipv6) + { + clib_memcpy (mp->grp_address, &v6_grp_address, sizeof (v6_grp_address)); + clib_memcpy (mp->src_address, &v6_src_address, sizeof (v6_src_address)); + } + else + { + clib_memcpy (mp->grp_address, &v4_grp_address, sizeof (v4_grp_address)); + clib_memcpy (mp->src_address, &v4_src_address, sizeof (v4_src_address)); + + } + + /* send it... */ + S (mp); + /* Wait for a reply... */ + W (ret); + return ret; +} + +static int +api_mpls_route_add_del (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_mpls_route_add_del_t *mp; + u32 sw_if_index = ~0, table_id = 0; + u8 create_table_if_needed = 0; + u8 is_add = 1; + u32 next_hop_weight = 1; + u8 is_multipath = 0; + u32 next_hop_table_id = 0; + u8 next_hop_set = 0; + ip4_address_t v4_next_hop_address = { + .as_u32 = 0, + }; + ip6_address_t v6_next_hop_address = { {0} }; + int count = 1; + int j; + f64 before = 0; + u32 classify_table_index = ~0; + u8 is_classify = 0; + u8 resolve_host = 0, resolve_attached = 0; + mpls_label_t next_hop_via_label = MPLS_LABEL_INVALID; + mpls_label_t next_hop_out_label = MPLS_LABEL_INVALID; + mpls_label_t *next_hop_out_label_stack = NULL; + mpls_label_t local_label = MPLS_LABEL_INVALID; + u8 is_eos = 0; + u8 next_hop_proto_is_ip4 = 1; + + /* Parse args required to build the message */ + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) + ; + else if (unformat (i, "sw_if_index %d", &sw_if_index)) + ; + else if (unformat (i, "%d", &local_label)) + ; + else if (unformat (i, "eos")) + is_eos = 1; + else if (unformat (i, "non-eos")) + is_eos = 0; + else if (unformat (i, "via %U", unformat_ip4_address, + &v4_next_hop_address)) + { + next_hop_set = 1; + next_hop_proto_is_ip4 = 1; + } + else if (unformat (i, "via %U", unformat_ip6_address, + &v6_next_hop_address)) + { + next_hop_set = 1; + next_hop_proto_is_ip4 = 0; } else if (unformat (i, "weight %d", &next_hop_weight)) ; @@ -6379,7 +6658,7 @@ api_mpls_route_add_del (vat_main_t * vam) for (j = 0; j < count; j++) { /* Construct the API message */ - M2 (MPLS_ROUTE_ADD_DEL, mpls_route_add_del, + M2 (MPLS_ROUTE_ADD_DEL, mp, sizeof (mpls_label_t) * vec_len (next_hop_out_label_stack)); mp->mr_next_hop_sw_if_index = ntohl (sw_if_index); @@ -6426,7 +6705,7 @@ api_mpls_route_add_del (vat_main_t * vam) local_label++; /* send it... */ - S; + S (mp); /* If we receive SIGTERM, stop now... */ if (vam->do_exit) break; @@ -6435,14 +6714,15 @@ api_mpls_route_add_del (vat_main_t * vam) /* When testing multiple add/del ops, use a control-ping to sync */ if (count > 1) { - vl_api_control_ping_t *mp; + vl_api_control_ping_t *mp_ping; f64 after; + f64 timeout; /* Shut off async mode */ vam->async_mode = 0; - M (CONTROL_PING, control_ping); - S; + M (CONTROL_PING, mp_ping); + S (mp_ping); timeout = vat_time_now (vam) + 1.0; while (vat_time_now (vam) < timeout) @@ -6471,8 +6751,11 @@ api_mpls_route_add_del (vat_main_t * vam) } else { + int ret; + /* Wait for a reply... */ - W; + W (ret); + return ret; } /* Return the good/bad news */ @@ -6484,7 +6767,6 @@ api_mpls_ip_bind_unbind (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_mpls_ip_bind_unbind_t *mp; - f64 timeout; u32 ip_table_id = 0; u8 create_table_if_needed = 0; u8 is_bind = 1; @@ -6494,6 +6776,7 @@ api_mpls_ip_bind_unbind (vat_main_t * vam) u32 address_length; u8 address_set = 0; mpls_label_t local_label = MPLS_LABEL_INVALID; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -6540,7 +6823,7 @@ api_mpls_ip_bind_unbind (vat_main_t * vam) } /* Construct the API message */ - M (MPLS_IP_BIND_UNBIND, mpls_ip_bind_unbind); + M (MPLS_IP_BIND_UNBIND, mp); mp->mb_create_table_if_needed = create_table_if_needed; mp->mb_is_bind = is_bind; @@ -6556,10 +6839,11 @@ api_mpls_ip_bind_unbind (vat_main_t * vam) clib_memcpy (mp->mb_address, &v6_address, sizeof (v6_address)); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -6567,11 +6851,11 @@ api_proxy_arp_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_proxy_arp_add_del_t *mp; - f64 timeout; u32 vrf_id = 0; u8 is_add = 1; ip4_address_t lo, hi; u8 range_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6595,17 +6879,16 @@ api_proxy_arp_add_del (vat_main_t * vam) return -99; } - M (PROXY_ARP_ADD_DEL, proxy_arp_add_del); + M (PROXY_ARP_ADD_DEL, mp); mp->vrf_id = ntohl (vrf_id); mp->is_add = is_add; clib_memcpy (mp->low_address, &lo, sizeof (mp->low_address)); clib_memcpy (mp->hi_address, &hi, sizeof (mp->hi_address)); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -6613,10 +6896,10 @@ api_proxy_arp_intfc_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_proxy_arp_intfc_enable_disable_t *mp; - f64 timeout; u32 sw_if_index; u8 enable = 1; u8 sw_if_index_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6641,15 +6924,14 @@ api_proxy_arp_intfc_enable_disable (vat_main_t * vam) return -99; } - M (PROXY_ARP_INTFC_ENABLE_DISABLE, proxy_arp_intfc_enable_disable); + M (PROXY_ARP_INTFC_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable_disable = enable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -6657,7 +6939,6 @@ api_mpls_tunnel_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_mpls_tunnel_add_del_t *mp; - f64 timeout; u8 is_add = 1; u8 l2_only = 0; @@ -6671,6 +6952,7 @@ api_mpls_tunnel_add_del (vat_main_t * vam) }; ip6_address_t v6_next_hop_address = { {0} }; mpls_label_t next_hop_out_label = MPLS_LABEL_INVALID, *labels = NULL; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6703,8 +6985,7 @@ api_mpls_tunnel_add_del (vat_main_t * vam) } } - M2 (MPLS_TUNNEL_ADD_DEL, mpls_tunnel_add_del, - sizeof (mpls_label_t) * vec_len (labels)); + M2 (MPLS_TUNNEL_ADD_DEL, mp, sizeof (mpls_label_t) * vec_len (labels)); mp->mt_next_hop_sw_if_index = ntohl (next_hop_sw_if_index); mp->mt_sw_if_index = ntohl (sw_if_index); @@ -6733,10 +7014,9 @@ api_mpls_tunnel_add_del (vat_main_t * vam) &v6_next_hop_address, sizeof (v6_next_hop_address)); } - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -6744,11 +7024,11 @@ api_sw_interface_set_unnumbered (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_unnumbered_t *mp; - f64 timeout; u32 sw_if_index; u32 unnum_sw_index = ~0; u8 is_add = 1; u8 sw_if_index_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6773,16 +7053,15 @@ api_sw_interface_set_unnumbered (vat_main_t * vam) return -99; } - M (SW_INTERFACE_SET_UNNUMBERED, sw_interface_set_unnumbered); + M (SW_INTERFACE_SET_UNNUMBERED, mp); mp->sw_if_index = ntohl (sw_if_index); mp->unnumbered_sw_if_index = ntohl (unnum_sw_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -6790,7 +7069,6 @@ api_ip_neighbor_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ip_neighbor_add_del_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u32 vrf_id = 0; @@ -6802,6 +7080,7 @@ api_ip_neighbor_add_del (vat_main_t * vam) u8 v6_address_set = 0; ip4_address_t v4address; ip6_address_t v6address; + int ret; memset (mac_address, 0, sizeof (mac_address)); @@ -6851,7 +7130,7 @@ api_ip_neighbor_add_del (vat_main_t * vam) } /* Construct the API message */ - M (IP_NEIGHBOR_ADD_DEL, ip_neighbor_add_del); + M (IP_NEIGHBOR_ADD_DEL, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_add = is_add; @@ -6871,13 +7150,11 @@ api_ip_neighbor_add_del (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int @@ -6885,10 +7162,10 @@ api_reset_vrf (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_reset_vrf_t *mp; - f64 timeout; u32 vrf_id = 0; u8 is_ipv6 = 0; u8 vrf_id_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6909,15 +7186,14 @@ api_reset_vrf (vat_main_t * vam) return -99; } - M (RESET_VRF, reset_vrf); + M (RESET_VRF, mp); mp->vrf_id = ntohl (vrf_id); mp->is_ipv6 = is_ipv6; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -6925,11 +7201,11 @@ api_create_vlan_subif (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_create_vlan_subif_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u32 vlan_id; u8 vlan_id_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -6958,15 +7234,14 @@ api_create_vlan_subif (vat_main_t * vam) errmsg ("missing vlan_id"); return -99; } - M (CREATE_VLAN_SUBIF, create_vlan_subif); + M (CREATE_VLAN_SUBIF, mp); mp->sw_if_index = ntohl (sw_if_index); mp->vlan_id = ntohl (vlan_id); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } #define foreach_create_subif_bit \ @@ -6984,7 +7259,6 @@ api_create_subif (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_create_subif_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u32 sub_id; @@ -7000,6 +7274,7 @@ api_create_subif (vat_main_t * vam) u32 tmp; u16 outer_vlan_id = 0; u16 inner_vlan_id = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7036,7 +7311,7 @@ api_create_subif (vat_main_t * vam) errmsg ("missing sub_id"); return -99; } - M (CREATE_SUBIF, create_subif); + M (CREATE_SUBIF, mp); mp->sw_if_index = ntohl (sw_if_index); mp->sub_id = ntohl (sub_id); @@ -7048,10 +7323,9 @@ api_create_subif (vat_main_t * vam) mp->outer_vlan_id = ntohs (outer_vlan_id); mp->inner_vlan_id = ntohs (inner_vlan_id); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7059,12 +7333,12 @@ api_oam_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_oam_add_del_t *mp; - f64 timeout; u32 vrf_id = 0; u8 is_add = 1; ip4_address_t src, dst; u8 src_set = 0; u8 dst_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7095,17 +7369,16 @@ api_oam_add_del (vat_main_t * vam) return -99; } - M (OAM_ADD_DEL, oam_add_del); + M (OAM_ADD_DEL, mp); mp->vrf_id = ntohl (vrf_id); mp->is_add = is_add; clib_memcpy (mp->src_address, &src, sizeof (mp->src_address)); clib_memcpy (mp->dst_address, &dst, sizeof (mp->dst_address)); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7113,11 +7386,11 @@ api_reset_fib (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_reset_fib_t *mp; - f64 timeout; u32 vrf_id = 0; u8 is_ipv6 = 0; u8 vrf_id_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { if (unformat (i, "vrf %d", &vrf_id)) @@ -7137,15 +7410,14 @@ api_reset_fib (vat_main_t * vam) return -99; } - M (RESET_FIB, reset_fib); + M (RESET_FIB, mp); mp->vrf_id = ntohl (vrf_id); mp->is_ipv6 = is_ipv6; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7153,10 +7425,9 @@ api_dhcp_proxy_config (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_dhcp_proxy_config_t *mp; - f64 timeout; - u32 vrf_id = 0; + u32 rx_vrf_id = 0; + u32 server_vrf_id = 0; u8 is_add = 1; - u8 insert_cid = 1; u8 v4_address_set = 0; u8 v6_address_set = 0; ip4_address_t v4address; @@ -7165,15 +7436,16 @@ api_dhcp_proxy_config (vat_main_t * vam) u8 v6_src_address_set = 0; ip4_address_t v4srcaddress; ip6_address_t v6srcaddress; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { if (unformat (i, "del")) is_add = 0; - else if (unformat (i, "vrf %d", &vrf_id)) + else if (unformat (i, "rx_vrf_id %d", &rx_vrf_id)) ; - else if (unformat (i, "insert-cid %d", &insert_cid)) + else if (unformat (i, "server_vrf_id %d", &server_vrf_id)) ; else if (unformat (i, "svr %U", unformat_ip4_address, &v4address)) v4_address_set = 1; @@ -7217,11 +7489,11 @@ api_dhcp_proxy_config (vat_main_t * vam) } /* Construct the API message */ - M (DHCP_PROXY_CONFIG, dhcp_proxy_config); + M (DHCP_PROXY_CONFIG, mp); - mp->insert_circuit_id = insert_cid; mp->is_add = is_add; - mp->vrf_id = ntohl (vrf_id); + mp->rx_vrf_id = ntohl (rx_vrf_id); + mp->server_vrf_id = ntohl (server_vrf_id); if (v6_address_set) { mp->is_ipv6 = 1; @@ -7235,127 +7507,123 @@ api_dhcp_proxy_config (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - /* NOTREACHED */ - return 0; + W (ret); + return ret; } -static int -api_dhcp_proxy_config_2 (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_dhcp_proxy_config_2_t *mp; - f64 timeout; - u32 rx_vrf_id = 0; - u32 server_vrf_id = 0; - u8 is_add = 1; - u8 insert_cid = 1; - u8 v4_address_set = 0; - u8 v6_address_set = 0; - ip4_address_t v4address; - ip6_address_t v6address; - u8 v4_src_address_set = 0; - u8 v6_src_address_set = 0; - ip4_address_t v4srcaddress; - ip6_address_t v6srcaddress; +#define vl_api_dhcp_proxy_details_t_endian vl_noop_handler +#define vl_api_dhcp_proxy_details_t_print vl_noop_handler - /* Parse args required to build the message */ - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "del")) - is_add = 0; - else if (unformat (i, "rx_vrf_id %d", &rx_vrf_id)) - ; - else if (unformat (i, "server_vrf_id %d", &server_vrf_id)) - ; - else if (unformat (i, "insert-cid %d", &insert_cid)) - ; - else if (unformat (i, "svr %U", unformat_ip4_address, &v4address)) - v4_address_set = 1; - else if (unformat (i, "svr %U", unformat_ip6_address, &v6address)) - v6_address_set = 1; - else if (unformat (i, "src %U", unformat_ip4_address, &v4srcaddress)) - v4_src_address_set = 1; - else if (unformat (i, "src %U", unformat_ip6_address, &v6srcaddress)) - v6_src_address_set = 1; - else - break; - } +static void +vl_api_dhcp_proxy_details_t_handler (vl_api_dhcp_proxy_details_t * mp) +{ + vat_main_t *vam = &vat_main; - if (v4_address_set && v6_address_set) - { - errmsg ("both v4 and v6 server addresses set"); - return -99; - } - if (!v4_address_set && !v6_address_set) - { - errmsg ("no server addresses set"); - return -99; - } + if (mp->is_ipv6) + print (vam->ofp, + "RX Table-ID %d, Server Table-ID %d, Server Address %U, Source Address %U, VSS FIB-ID %d, VSS OUI %d", + ntohl (mp->rx_vrf_id), + ntohl (mp->server_vrf_id), + format_ip6_address, mp->dhcp_server, + format_ip6_address, mp->dhcp_src_address, + ntohl (mp->vss_oui), ntohl (mp->vss_fib_id)); + else + print (vam->ofp, + "RX Table-ID %d, Server Table-ID %d, Server Address %U, Source Address %U, VSS FIB-ID %d, VSS OUI %d", + ntohl (mp->rx_vrf_id), + ntohl (mp->server_vrf_id), + format_ip4_address, mp->dhcp_server, + format_ip4_address, mp->dhcp_src_address, + ntohl (mp->vss_oui), ntohl (mp->vss_fib_id)); +} - if (v4_src_address_set && v6_src_address_set) - { - errmsg ("both v4 and v6 src addresses set"); - return -99; - } - if (!v4_src_address_set && !v6_src_address_set) - { - errmsg ("no src addresses set"); - return -99; - } +static void vl_api_dhcp_proxy_details_t_handler_json + (vl_api_dhcp_proxy_details_t * mp) +{ + vat_main_t *vam = &vat_main; + vat_json_node_t *node = NULL; + struct in_addr ip4; + struct in6_addr ip6; - if (!(v4_src_address_set && v4_address_set) && - !(v6_src_address_set && v6_address_set)) + if (VAT_JSON_ARRAY != vam->json_tree.type) { - errmsg ("no matching server and src addresses set"); - return -99; + ASSERT (VAT_JSON_NONE == vam->json_tree.type); + vat_json_init_array (&vam->json_tree); } + node = vat_json_array_add (&vam->json_tree); - /* Construct the API message */ - M (DHCP_PROXY_CONFIG_2, dhcp_proxy_config_2); - - mp->insert_circuit_id = insert_cid; - mp->is_add = is_add; - mp->rx_vrf_id = ntohl (rx_vrf_id); - mp->server_vrf_id = ntohl (server_vrf_id); - if (v6_address_set) + vat_json_init_object (node); + vat_json_object_add_uint (node, "rx-table-id", ntohl (mp->rx_vrf_id)); + vat_json_object_add_uint (node, "server-table-id", + ntohl (mp->server_vrf_id)); + if (mp->is_ipv6) { - mp->is_ipv6 = 1; - clib_memcpy (mp->dhcp_server, &v6address, sizeof (v6address)); - clib_memcpy (mp->dhcp_src_address, &v6srcaddress, sizeof (v6address)); + clib_memcpy (&ip6, &mp->dhcp_server, sizeof (ip6)); + vat_json_object_add_ip6 (node, "server_address", ip6); + clib_memcpy (&ip6, &mp->dhcp_src_address, sizeof (ip6)); + vat_json_object_add_ip6 (node, "src_address", ip6); } else { - clib_memcpy (mp->dhcp_server, &v4address, sizeof (v4address)); - clib_memcpy (mp->dhcp_src_address, &v4srcaddress, sizeof (v4address)); + clib_memcpy (&ip4, &mp->dhcp_server, sizeof (ip4)); + vat_json_object_add_ip4 (node, "server_address", ip4); + clib_memcpy (&ip4, &mp->dhcp_src_address, sizeof (ip4)); + vat_json_object_add_ip4 (node, "src_address", ip4); } - - /* send it... */ - S; - - /* Wait for a reply, return good/bad news */ - W; - /* NOTREACHED */ - return 0; + vat_json_object_add_uint (node, "vss-fib-id", ntohl (mp->vss_fib_id)); + vat_json_object_add_uint (node, "vss-oui", ntohl (mp->vss_oui)); } static int -api_dhcp_proxy_set_vss (vat_main_t * vam) +api_dhcp_proxy_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; - vl_api_dhcp_proxy_set_vss_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + vl_api_dhcp_proxy_dump_t *mp; u8 is_ipv6 = 0; - u8 is_add = 1; - u32 tbl_id; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "ipv6")) + is_ipv6 = 1; + else + { + clib_warning ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + M (DHCP_PROXY_DUMP, mp); + + mp->is_ip6 = is_ipv6; + S (mp); + + /* Use a control ping for synchronization */ + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; +} + +static int +api_dhcp_proxy_set_vss (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_dhcp_proxy_set_vss_t *mp; + u8 is_ipv6 = 0; + u8 is_add = 1; + u32 tbl_id; u8 tbl_id_set = 0; u32 oui; u8 oui_set = 0; u32 fib_id; u8 fib_id_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7393,17 +7661,16 @@ api_dhcp_proxy_set_vss (vat_main_t * vam) return -99; } - M (DHCP_PROXY_SET_VSS, dhcp_proxy_set_vss); + M (DHCP_PROXY_SET_VSS, mp); mp->tbl_id = ntohl (tbl_id); mp->fib_id = ntohl (fib_id); mp->oui = ntohl (oui); mp->is_ipv6 = is_ipv6; mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7411,12 +7678,12 @@ api_dhcp_client_config (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_dhcp_client_config_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 is_add = 1; u8 *hostname = 0; u8 disable_event = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -7449,7 +7716,7 @@ api_dhcp_client_config (vat_main_t * vam) vec_add1 (hostname, 0); /* Construct the API message */ - M (DHCP_CLIENT_CONFIG, dhcp_client_config); + M (DHCP_CLIENT_CONFIG, mp); mp->sw_if_index = ntohl (sw_if_index); clib_memcpy (mp->hostname, hostname, vec_len (hostname)); @@ -7459,12 +7726,11 @@ api_dhcp_client_config (vat_main_t * vam) mp->pid = getpid (); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int @@ -7472,7 +7738,6 @@ api_set_ip_flow_hash (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_set_ip_flow_hash_t *mp; - f64 timeout; u32 vrf_id = 0; u8 is_ipv6 = 0; u8 vrf_id_set = 0; @@ -7482,6 +7747,7 @@ api_set_ip_flow_hash (vat_main_t * vam) u8 dport = 0; u8 proto = 0; u8 reverse = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7515,7 +7781,7 @@ api_set_ip_flow_hash (vat_main_t * vam) return -99; } - M (SET_IP_FLOW_HASH, set_ip_flow_hash); + M (SET_IP_FLOW_HASH, mp); mp->src = src; mp->dst = dst; mp->sport = sport; @@ -7525,10 +7791,9 @@ api_set_ip_flow_hash (vat_main_t * vam) mp->vrf_id = ntohl (vrf_id); mp->is_ipv6 = is_ipv6; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7536,10 +7801,10 @@ api_sw_interface_ip6_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_ip6_enable_disable_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 enable = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7564,15 +7829,14 @@ api_sw_interface_ip6_enable_disable (vat_main_t * vam) return -99; } - M (SW_INTERFACE_IP6_ENABLE_DISABLE, sw_interface_ip6_enable_disable); + M (SW_INTERFACE_IP6_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = enable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7580,11 +7844,11 @@ api_sw_interface_ip6_set_link_local_address (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_ip6_set_link_local_address_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 v6_address_set = 0; ip6_address_t v6address; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -7611,20 +7875,17 @@ api_sw_interface_ip6_set_link_local_address (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_IP6_SET_LINK_LOCAL_ADDRESS, - sw_interface_ip6_set_link_local_address); + M (SW_INTERFACE_IP6_SET_LINK_LOCAL_ADDRESS, mp); mp->sw_if_index = ntohl (sw_if_index); clib_memcpy (mp->address, &v6address, sizeof (v6address)); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } @@ -7633,7 +7894,6 @@ api_sw_interface_ip6nd_ra_prefix (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_ip6nd_ra_prefix_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u32 address_length = 0; @@ -7647,6 +7907,7 @@ api_sw_interface_ip6nd_ra_prefix (vat_main_t * vam) u8 is_no = 0; u32 val_lifetime = 0; u32 pref_lifetime = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -7693,7 +7954,7 @@ api_sw_interface_ip6nd_ra_prefix (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_IP6ND_RA_PREFIX, sw_interface_ip6nd_ra_prefix); + M (SW_INTERFACE_IP6ND_RA_PREFIX, mp); mp->sw_if_index = ntohl (sw_if_index); clib_memcpy (mp->address, &v6address, sizeof (v6address)); @@ -7708,13 +7969,11 @@ api_sw_interface_ip6nd_ra_prefix (vat_main_t * vam) mp->pref_lifetime = ntohl (pref_lifetime); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int @@ -7722,7 +7981,6 @@ api_sw_interface_ip6nd_ra_config (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_ip6nd_ra_config_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 suppress = 0; @@ -7738,6 +7996,7 @@ api_sw_interface_ip6nd_ra_config (vat_main_t * vam) u32 lifetime = 0; u32 initial_count = 0; u32 initial_interval = 0; + int ret; /* Parse args required to build the message */ @@ -7787,7 +8046,7 @@ api_sw_interface_ip6nd_ra_config (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_IP6ND_RA_CONFIG, sw_interface_ip6nd_ra_config); + M (SW_INTERFACE_IP6ND_RA_CONFIG, mp); mp->sw_if_index = ntohl (sw_if_index); mp->max_interval = ntohl (max_interval); @@ -7805,13 +8064,11 @@ api_sw_interface_ip6nd_ra_config (vat_main_t * vam) mp->default_router = default_router; /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int @@ -7819,10 +8076,10 @@ api_set_arp_neighbor_limit (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_set_arp_neighbor_limit_t *mp; - f64 timeout; u32 arp_nbr_limit; u8 limit_set = 0; u8 is_ipv6 = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -7843,15 +8100,14 @@ api_set_arp_neighbor_limit (vat_main_t * vam) return -99; } - M (SET_ARP_NEIGHBOR_LIMIT, set_arp_neighbor_limit); + M (SET_ARP_NEIGHBOR_LIMIT, mp); mp->arp_neighbor_limit = ntohl (arp_nbr_limit); mp->is_ipv6 = is_ipv6; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7859,12 +8115,12 @@ api_l2_patch_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_patch_add_del_t *mp; - f64 timeout; u32 rx_sw_if_index; u8 rx_sw_if_index_set = 0; u32 tx_sw_if_index; u8 tx_sw_if_index_set = 0; u8 is_add = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -7913,16 +8169,15 @@ api_l2_patch_add_del (vat_main_t * vam) return -99; } - M (L2_PATCH_ADD_DEL, l2_patch_add_del); + M (L2_PATCH_ADD_DEL, mp); mp->rx_sw_if_index = ntohl (rx_sw_if_index); mp->tx_sw_if_index = ntohl (tx_sw_if_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -7930,12 +8185,12 @@ api_ioam_enable (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_ioam_enable_t *mp; - f64 timeout; u32 id = 0; int has_trace_option = 0; int has_pot_option = 0; int has_seqno_option = 0; int has_analyse_option = 0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -7950,18 +8205,16 @@ api_ioam_enable (vat_main_t * vam) else break; } - M (IOAM_ENABLE, ioam_enable); + M (IOAM_ENABLE, mp); mp->id = htons (id); mp->seqno = has_seqno_option; mp->analyse = has_analyse_option; mp->pot_enable = has_pot_option; mp->trace_enable = has_trace_option; - S; - W; - - return (0); - + S (mp); + W (ret); + return ret; } @@ -7969,12 +8222,12 @@ static int api_ioam_disable (vat_main_t * vam) { vl_api_ioam_disable_t *mp; - f64 timeout; + int ret; - M (IOAM_DISABLE, ioam_disable); - S; - W; - return 0; + M (IOAM_DISABLE, mp); + S (mp); + W (ret); + return ret; } static int @@ -7982,7 +8235,6 @@ api_sr_tunnel_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sr_tunnel_add_del_t *mp; - f64 timeout; int is_del = 0; int pl_index; ip6_address_t src_address; @@ -8000,6 +8252,7 @@ api_sr_tunnel_add_del (vat_main_t * vam) ip6_address_t next_address, tag; u8 *name = 0; u8 *policy_name = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -8080,7 +8333,7 @@ api_sr_tunnel_add_del (vat_main_t * vam) return -99; } - M2 (SR_TUNNEL_ADD_DEL, sr_tunnel_add_del, + M2 (SR_TUNNEL_ADD_DEL, mp, vec_len (segments) * sizeof (ip6_address_t) + vec_len (tags) * sizeof (ip6_address_t)); @@ -8105,9 +8358,9 @@ api_sr_tunnel_add_del (vat_main_t * vam) vec_free (segments); vec_free (tags); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -8115,7 +8368,6 @@ api_sr_policy_add_del (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_sr_policy_add_del_t *mp; - f64 timeout; int is_del = 0; u8 *name = 0; u8 *tunnel_name = 0; @@ -8126,6 +8378,7 @@ api_sr_policy_add_del (vat_main_t * vam) int j = 0; int tunnel_names_length = 1; // Init to 1 to offset the #tunnel_names counter byte int tun_name_len = 0; // Different naming convention used as confusing these would be "bad" (TM) + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -8163,7 +8416,7 @@ api_sr_policy_add_del (vat_main_t * vam) return -99; } - M2 (SR_POLICY_ADD_DEL, sr_policy_add_del, tunnel_names_length); + M2 (SR_POLICY_ADD_DEL, mp, tunnel_names_length); @@ -8189,9 +8442,9 @@ api_sr_policy_add_del (vat_main_t * vam) vec_free (tunnel_names); vec_free (tunnel_name); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -8199,11 +8452,11 @@ api_sr_multicast_map_add_del (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_sr_multicast_map_add_del_t *mp; - f64 timeout; int is_del = 0; ip6_address_t multicast_address; u8 *policy_name = 0; int multicast_address_set = 0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -8232,7 +8485,7 @@ api_sr_multicast_map_add_del (vat_main_t * vam) return -99; } - M (SR_MULTICAST_MAP_ADD_DEL, sr_multicast_map_add_del); + M (SR_MULTICAST_MAP_ADD_DEL, mp); mp->is_add = !is_del; memcpy (mp->policy_name, policy_name, vec_len (policy_name)); @@ -8242,9 +8495,9 @@ api_sr_multicast_map_add_del (vat_main_t * vam) vec_free (policy_name); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } @@ -8266,6 +8519,12 @@ _(ttl) \ _(protocol) \ _(checksum) +typedef struct +{ + u16 src_port, dst_port; +} tcpudp_header_t; + +#if VPP_API_TEST_BUILTIN == 0 uword unformat_tcp_mask (unformat_input_t * input, va_list * args) { @@ -8348,11 +8607,6 @@ unformat_udp_mask (unformat_input_t * input, va_list * args) return 1; } -typedef struct -{ - u16 src_port, dst_port; -} tcpudp_header_t; - uword unformat_l4_mask (unformat_input_t * input, va_list * args) { @@ -8746,6 +9000,7 @@ unformat_classify_mask (unformat_input_t * input, va_list * args) return 0; } +#endif /* VPP_API_TEST_BUILTIN */ #define foreach_l2_next \ _(drop, DROP) \ @@ -8784,7 +9039,7 @@ _(local, LOCAL) \ _(rewrite, REWRITE) uword -unformat_ip_next_index (unformat_input_t * input, va_list * args) +api_unformat_ip_next_index (unformat_input_t * input, va_list * args) { u32 *miss_next_indexp = va_arg (*args, u32 *); u32 next_index = 0; @@ -8812,7 +9067,7 @@ out: _(deny, DENY) uword -unformat_acl_next_index (unformat_input_t * input, va_list * args) +api_unformat_acl_next_index (unformat_input_t * input, va_list * args) { u32 *miss_next_indexp = va_arg (*args, u32 *); u32 next_index = 0; @@ -8872,9 +9127,9 @@ api_classify_add_del_table (vat_main_t * vam) u32 miss_next_index = ~0; u32 memory_size = 32 << 20; u8 *mask = 0; - f64 timeout; u32 current_data_flag = 0; int current_data_offset = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -8900,13 +9155,13 @@ api_classify_add_del_table (vat_main_t * vam) ; else if (unformat (i, "next-table %d", &next_table_index)) ; - else if (unformat (i, "miss-next %U", unformat_ip_next_index, + else if (unformat (i, "miss-next %U", api_unformat_ip_next_index, &miss_next_index)) ; else if (unformat (i, "l2-miss-next %U", unformat_l2_next_index, &miss_next_index)) ; - else if (unformat (i, "acl-miss-next %U", unformat_acl_next_index, + else if (unformat (i, "acl-miss-next %U", api_unformat_acl_next_index, &miss_next_index)) ; else if (unformat (i, "current-data-flag %d", ¤t_data_flag)) @@ -8941,7 +9196,7 @@ api_classify_add_del_table (vat_main_t * vam) return -99; } - M2 (CLASSIFY_ADD_DEL_TABLE, classify_add_del_table, vec_len (mask)); + M2 (CLASSIFY_ADD_DEL_TABLE, mp, vec_len (mask)); mp->is_add = is_add; mp->del_chain = del_chain; @@ -8958,11 +9213,12 @@ api_classify_add_del_table (vat_main_t * vam) vec_free (mask); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } +#if VPP_API_TEST_BUILTIN == 0 uword unformat_l4_match (unformat_input_t * input, va_list * args) { @@ -9327,10 +9583,10 @@ unformat_l2_match (unformat_input_t * input, va_list * args) *matchp = match; return 1; } - +#endif uword -unformat_classify_match (unformat_input_t * input, va_list * args) +api_unformat_classify_match (unformat_input_t * input, va_list * args) { u8 **matchp = va_arg (*args, u8 **); u32 skip_n_vectors = va_arg (*args, u32); @@ -9410,11 +9666,11 @@ api_classify_add_del_session (vat_main_t * vam) u32 opaque_index = ~0; u8 *match = 0; i32 advance = 0; - f64 timeout; u32 skip_n_vectors = 0; u32 match_n_vectors = 0; u32 action = 0; u32 metadata = 0; + int ret; /* * Warning: you have to supply skip_n and match_n @@ -9426,13 +9682,13 @@ api_classify_add_del_session (vat_main_t * vam) { if (unformat (i, "del")) is_add = 0; - else if (unformat (i, "hit-next %U", unformat_ip_next_index, + else if (unformat (i, "hit-next %U", api_unformat_ip_next_index, &hit_next_index)) ; else if (unformat (i, "l2-hit-next %U", unformat_l2_next_index, &hit_next_index)) ; - else if (unformat (i, "acl-hit-next %U", unformat_acl_next_index, + else if (unformat (i, "acl-hit-next %U", api_unformat_acl_next_index, &hit_next_index)) ; else if (unformat (i, "policer-hit-next %d", &hit_next_index)) @@ -9445,7 +9701,7 @@ api_classify_add_del_session (vat_main_t * vam) ; else if (unformat (i, "match_n %d", &match_n_vectors)) ; - else if (unformat (i, "match %U", unformat_classify_match, + else if (unformat (i, "match %U", api_unformat_classify_match, &match, skip_n_vectors, match_n_vectors)) ; else if (unformat (i, "advance %d", &advance)) @@ -9476,7 +9732,7 @@ api_classify_add_del_session (vat_main_t * vam) return -99; } - M2 (CLASSIFY_ADD_DEL_SESSION, classify_add_del_session, vec_len (match)); + M2 (CLASSIFY_ADD_DEL_SESSION, mp, vec_len (match)); mp->is_add = is_add; mp->table_index = ntohl (table_index); @@ -9488,9 +9744,9 @@ api_classify_add_del_session (vat_main_t * vam) clib_memcpy (mp->match, match, vec_len (match)); vec_free (match); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -9498,11 +9754,11 @@ api_classify_set_interface_ip_table (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_classify_set_interface_ip_table_t *mp; - f64 timeout; u32 sw_if_index; int sw_if_index_set; u32 table_index = ~0; u8 is_ipv6 = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9526,16 +9782,15 @@ api_classify_set_interface_ip_table (vat_main_t * vam) } - M (CLASSIFY_SET_INTERFACE_IP_TABLE, classify_set_interface_ip_table); + M (CLASSIFY_SET_INTERFACE_IP_TABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->table_index = ntohl (table_index); mp->is_ipv6 = is_ipv6; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9543,13 +9798,13 @@ api_classify_set_interface_l2_tables (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_classify_set_interface_l2_tables_t *mp; - f64 timeout; u32 sw_if_index; int sw_if_index_set; u32 ip4_table_index = ~0; u32 ip6_table_index = ~0; u32 other_table_index = ~0; u32 is_input = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9579,7 +9834,7 @@ api_classify_set_interface_l2_tables (vat_main_t * vam) } - M (CLASSIFY_SET_INTERFACE_L2_TABLES, classify_set_interface_l2_tables); + M (CLASSIFY_SET_INTERFACE_L2_TABLES, mp); mp->sw_if_index = ntohl (sw_if_index); mp->ip4_table_index = ntohl (ip4_table_index); @@ -9587,10 +9842,9 @@ api_classify_set_interface_l2_tables (vat_main_t * vam) mp->other_table_index = ntohl (other_table_index); mp->is_input = (u8) is_input; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9607,7 +9861,7 @@ api_set_ipfix_exporter (vat_main_t * vam) u32 path_mtu = ~0; u32 template_interval = ~0; u8 udp_checksum = 0; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9643,7 +9897,7 @@ api_set_ipfix_exporter (vat_main_t * vam) return -99; } - M (SET_IPFIX_EXPORTER, set_ipfix_exporter); + M (SET_IPFIX_EXPORTER, mp); memcpy (mp->collector_address, collector_address.data, sizeof (collector_address.data)); @@ -9654,9 +9908,9 @@ api_set_ipfix_exporter (vat_main_t * vam) mp->template_interval = htonl (template_interval); mp->udp_checksum = udp_checksum; - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -9666,7 +9920,7 @@ api_set_ipfix_classify_stream (vat_main_t * vam) vl_api_set_ipfix_classify_stream_t *mp; u32 domain_id = 0; u32 src_port = UDP_DST_PORT_ipfix; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9681,14 +9935,14 @@ api_set_ipfix_classify_stream (vat_main_t * vam) } } - M (SET_IPFIX_CLASSIFY_STREAM, set_ipfix_classify_stream); + M (SET_IPFIX_CLASSIFY_STREAM, mp); mp->domain_id = htonl (domain_id); mp->src_port = htons ((u16) src_port); - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -9700,7 +9954,7 @@ api_ipfix_classify_table_add_del (vat_main_t * vam) u32 classify_table_index = ~0; u8 ip_version = 0; u8 transport_protocol = 255; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9741,16 +9995,16 @@ api_ipfix_classify_table_add_del (vat_main_t * vam) return -99; } - M (IPFIX_CLASSIFY_TABLE_ADD_DEL, ipfix_classify_table_add_del); + M (IPFIX_CLASSIFY_TABLE_ADD_DEL, mp); mp->is_add = is_add; mp->table_id = htonl (classify_table_index); mp->ip_version = ip_version; mp->transport_protocol = transport_protocol; - S; - W; - /* NOTREACHED */ + S (mp); + W (ret); + return ret; } static int @@ -9758,8 +10012,8 @@ api_get_node_index (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_get_node_index_t *mp; - f64 timeout; u8 *name = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9779,14 +10033,13 @@ api_get_node_index (vat_main_t * vam) return -99; } - M (GET_NODE_INDEX, get_node_index); + M (GET_NODE_INDEX, mp); clib_memcpy (mp->node_name, name, vec_len (name)); vec_free (name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9794,8 +10047,8 @@ api_get_next_index (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_get_next_index_t *mp; - f64 timeout; u8 *node_name = 0, *next_node_name = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9827,16 +10080,15 @@ api_get_next_index (vat_main_t * vam) return -99; } - M (GET_NEXT_INDEX, get_next_index); + 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; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9844,9 +10096,9 @@ api_add_node_next (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_add_node_next_t *mp; - f64 timeout; u8 *name = 0; u8 *next = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9878,16 +10130,15 @@ api_add_node_next (vat_main_t * vam) return -99; } - M (ADD_NODE_NEXT, add_node_next); + 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; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9903,7 +10154,7 @@ api_l2tpv3_create_tunnel (vat_main_t * vam) u64 remote_cookie = 0; u8 l2_sublayer_present = 0; vl_api_l2tpv3_create_tunnel_t *mp; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9939,7 +10190,7 @@ api_l2tpv3_create_tunnel (vat_main_t * vam) return -99; } - M (L2TPV3_CREATE_TUNNEL, l2tpv3_create_tunnel); + M (L2TPV3_CREATE_TUNNEL, mp); clib_memcpy (mp->client_address, client_address.as_u8, sizeof (mp->client_address)); @@ -9953,10 +10204,9 @@ api_l2tpv3_create_tunnel (vat_main_t * vam) mp->l2_sublayer_present = l2_sublayer_present; mp->is_ipv6 = 1; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -9968,7 +10218,7 @@ api_l2tpv3_set_tunnel_cookies (vat_main_t * vam) u64 new_local_cookie = 0; u64 new_remote_cookie = 0; vl_api_l2tpv3_set_tunnel_cookies_t *mp; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -9990,16 +10240,15 @@ api_l2tpv3_set_tunnel_cookies (vat_main_t * vam) return -99; } - M (L2TPV3_SET_TUNNEL_COOKIES, l2tpv3_set_tunnel_cookies); + M (L2TPV3_SET_TUNNEL_COOKIES, mp); mp->sw_if_index = ntohl (sw_if_index); mp->new_local_cookie = clib_host_to_net_u64 (new_local_cookie); mp->new_remote_cookie = clib_host_to_net_u64 (new_remote_cookie); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10007,10 +10256,10 @@ api_l2tpv3_interface_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2tpv3_interface_enable_disable_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 enable_disable = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10032,15 +10281,14 @@ api_l2tpv3_interface_enable_disable (vat_main_t * vam) return -99; } - M (L2TPV3_INTERFACE_ENABLE_DISABLE, l2tpv3_interface_enable_disable); + M (L2TPV3_INTERFACE_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable_disable = enable_disable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10048,8 +10296,8 @@ api_l2tpv3_set_lookup_key (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2tpv3_set_lookup_key_t *mp; - f64 timeout; u8 key = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10069,14 +10317,13 @@ api_l2tpv3_set_lookup_key (vat_main_t * vam) return -99; } - M (L2TPV3_SET_LOOKUP_KEY, l2tpv3_set_lookup_key); + M (L2TPV3_SET_LOOKUP_KEY, mp); mp->key = key; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_sw_if_l2tpv3_tunnel_details_t_handler @@ -10146,19 +10393,19 @@ static int api_sw_if_l2tpv3_tunnel_dump (vat_main_t * vam) { vl_api_sw_if_l2tpv3_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; /* Get list of l2tpv3-tunnel interfaces */ - M (SW_IF_L2TPV3_TUNNEL_DUMP, sw_if_l2tpv3_tunnel_dump); - S; + M (SW_IF_L2TPV3_TUNNEL_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } @@ -10193,20 +10440,20 @@ static int api_sw_interface_tap_dump (vat_main_t * vam) { vl_api_sw_interface_tap_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; print (vam->ofp, "\n%-16s %s", "dev_name", "sw_if_index"); /* Get list of tap interfaces */ - M (SW_INTERFACE_TAP_DUMP, sw_interface_tap_dump); - S; + M (SW_INTERFACE_TAP_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static uword unformat_vxlan_decap_next @@ -10229,7 +10476,6 @@ api_vxlan_add_del_tunnel (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_vxlan_add_del_tunnel_t *mp; - f64 timeout; ip46_address_t src, dst; u8 is_add = 1; u8 ipv4_set = 0, ipv6_set = 0; @@ -10240,6 +10486,7 @@ api_vxlan_add_del_tunnel (vat_main_t * vam) u32 encap_vrf_id = 0; u32 decap_next_index = ~0; u32 vni = 0; + int ret; /* Can't "universally zero init" (={0}) due to GCC bug 53119 */ memset (&src, 0, sizeof src); @@ -10356,7 +10603,7 @@ api_vxlan_add_del_tunnel (vat_main_t * vam) return -99; } - M (VXLAN_ADD_DEL_TUNNEL, vxlan_add_del_tunnel); + M (VXLAN_ADD_DEL_TUNNEL, mp); if (ipv6_set) { @@ -10375,10 +10622,9 @@ api_vxlan_add_del_tunnel (vat_main_t * vam) mp->is_add = is_add; mp->is_ipv6 = ipv6_set; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_vxlan_tunnel_details_t_handler @@ -10446,9 +10692,10 @@ api_vxlan_tunnel_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_vxlan_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 sw_if_index; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -10472,19 +10719,18 @@ api_vxlan_tunnel_dump (vat_main_t * vam) } /* Get list of vxlan-tunnel interfaces */ - M (VXLAN_TUNNEL_DUMP, vxlan_tunnel_dump); + M (VXLAN_TUNNEL_DUMP, mp); mp->sw_if_index = htonl (sw_if_index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -10492,13 +10738,13 @@ api_gre_add_del_tunnel (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_gre_add_del_tunnel_t *mp; - f64 timeout; ip4_address_t src4, dst4; u8 is_add = 1; u8 teb = 0; u8 src_set = 0; u8 dst_set = 0; u32 outer_fib_id = 0; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -10531,7 +10777,7 @@ api_gre_add_del_tunnel (vat_main_t * vam) } - M (GRE_ADD_DEL_TUNNEL, gre_add_del_tunnel); + M (GRE_ADD_DEL_TUNNEL, mp); clib_memcpy (&mp->src_address, &src4, sizeof (src4)); clib_memcpy (&mp->dst_address, &dst4, sizeof (dst4)); @@ -10539,10 +10785,9 @@ api_gre_add_del_tunnel (vat_main_t * vam) mp->is_add = is_add; mp->teb = teb; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_gre_tunnel_details_t_handler @@ -10586,9 +10831,10 @@ api_gre_tunnel_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_gre_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 sw_if_index; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -10612,19 +10858,18 @@ api_gre_tunnel_dump (vat_main_t * vam) } /* Get list of gre-tunnel interfaces */ - M (GRE_TUNNEL_DUMP, gre_tunnel_dump); + M (GRE_TUNNEL_DUMP, mp); mp->sw_if_index = htonl (sw_if_index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -10632,14 +10877,13 @@ api_l2_fib_clear_table (vat_main_t * vam) { // unformat_input_t * i = vam->input; vl_api_l2_fib_clear_table_t *mp; - f64 timeout; + int ret; - M (L2_FIB_CLEAR_TABLE, l2_fib_clear_table); + M (L2_FIB_CLEAR_TABLE, mp); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10647,10 +10891,10 @@ api_l2_interface_efp_filter (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_interface_efp_filter_t *mp; - f64 timeout; u32 sw_if_index; u8 enable = 1; u8 sw_if_index_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10675,15 +10919,14 @@ api_l2_interface_efp_filter (vat_main_t * vam) return -99; } - M (L2_INTERFACE_EFP_FILTER, l2_interface_efp_filter); + M (L2_INTERFACE_EFP_FILTER, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable_disable = enable; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } #define foreach_vtr_op \ @@ -10702,7 +10945,6 @@ api_l2_interface_vlan_tag_rewrite (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_interface_vlan_tag_rewrite_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u8 vtr_op_set = 0; @@ -10710,6 +10952,7 @@ api_l2_interface_vlan_tag_rewrite (vat_main_t * vam) u32 push_dot1q = 1; u32 tag1 = ~0; u32 tag2 = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10741,17 +10984,16 @@ api_l2_interface_vlan_tag_rewrite (vat_main_t * vam) return -99; } - M (L2_INTERFACE_VLAN_TAG_REWRITE, l2_interface_vlan_tag_rewrite) - mp->sw_if_index = ntohl (sw_if_index); + M (L2_INTERFACE_VLAN_TAG_REWRITE, mp); + mp->sw_if_index = ntohl (sw_if_index); mp->vtr_op = ntohl (vtr_op); mp->push_dot1q = ntohl (push_dot1q); mp->tag1 = ntohl (tag1); mp->tag2 = ntohl (tag2); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10759,7 +11001,6 @@ api_create_vhost_user_if (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_create_vhost_user_if_t *mp; - f64 timeout; u8 *file_name; u8 is_server = 0; u8 file_name_set = 0; @@ -10767,6 +11008,7 @@ api_create_vhost_user_if (vat_main_t * vam) u8 hwaddr[6]; u8 use_custom_mac = 0; u8 *tag = 0; + int ret; /* Shut up coverity */ memset (hwaddr, 0, sizeof (hwaddr)); @@ -10802,7 +11044,7 @@ api_create_vhost_user_if (vat_main_t * vam) } vec_add1 (file_name, 0); - M (CREATE_VHOST_USER_IF, create_vhost_user_if); + M (CREATE_VHOST_USER_IF, mp); mp->is_server = is_server; clib_memcpy (mp->sock_filename, file_name, vec_len (file_name)); @@ -10818,10 +11060,9 @@ api_create_vhost_user_if (vat_main_t * vam) strncpy ((char *) mp->tag, (char *) tag, ARRAY_LEN (mp->tag) - 1); vec_free (tag); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10829,13 +11070,13 @@ api_modify_vhost_user_if (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_modify_vhost_user_if_t *mp; - f64 timeout; u8 *file_name; u8 is_server = 0; u8 file_name_set = 0; u32 custom_dev_instance = ~0; u8 sw_if_index_set = 0; u32 sw_if_index = (u32) ~ 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10874,7 +11115,7 @@ api_modify_vhost_user_if (vat_main_t * vam) } vec_add1 (file_name, 0); - M (MODIFY_VHOST_USER_IF, modify_vhost_user_if); + M (MODIFY_VHOST_USER_IF, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_server = is_server; @@ -10886,10 +11127,9 @@ api_modify_vhost_user_if (vat_main_t * vam) mp->custom_dev_instance = ntohl (custom_dev_instance); } - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -10897,9 +11137,9 @@ api_delete_vhost_user_if (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_delete_vhost_user_if_t *mp; - f64 timeout; u32 sw_if_index = ~0; u8 sw_if_index_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -10918,14 +11158,13 @@ api_delete_vhost_user_if (vat_main_t * vam) } - M (DELETE_VHOST_USER_IF, delete_vhost_user_if); + M (DELETE_VHOST_USER_IF, mp); mp->sw_if_index = ntohl (sw_if_index); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_sw_interface_vhost_user_details_t_handler @@ -10972,35 +11211,34 @@ static int api_sw_interface_vhost_user_dump (vat_main_t * vam) { vl_api_sw_interface_vhost_user_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; print (vam->ofp, "Interface name idx hdr_sz features server regions filename"); /* Get list of vhost-user interfaces */ - M (SW_INTERFACE_VHOST_USER_DUMP, sw_interface_vhost_user_dump); - S; + M (SW_INTERFACE_VHOST_USER_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int api_show_version (vat_main_t * vam) { vl_api_show_version_t *mp; - f64 timeout; + int ret; - M (SHOW_VERSION, show_version); + M (SHOW_VERSION, mp); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } @@ -11009,7 +11247,6 @@ api_vxlan_gpe_add_del_tunnel (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_vxlan_gpe_add_del_tunnel_t *mp; - f64 timeout; ip4_address_t local4, remote4; ip6_address_t local6, remote6; u8 is_add = 1; @@ -11021,6 +11258,7 @@ api_vxlan_gpe_add_del_tunnel (vat_main_t * vam) u8 protocol = ~0; u32 vni; u8 vni_set = 0; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -11093,7 +11331,7 @@ api_vxlan_gpe_add_del_tunnel (vat_main_t * vam) return -99; } - M (VXLAN_GPE_ADD_DEL_TUNNEL, vxlan_gpe_add_del_tunnel); + M (VXLAN_GPE_ADD_DEL_TUNNEL, mp); if (ipv6_set) @@ -11114,10 +11352,9 @@ api_vxlan_gpe_add_del_tunnel (vat_main_t * vam) mp->is_add = is_add; mp->is_ipv6 = ipv6_set; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_vxlan_gpe_tunnel_details_t_handler @@ -11177,9 +11414,10 @@ api_vxlan_gpe_tunnel_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_vxlan_gpe_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 sw_if_index; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -11203,19 +11441,18 @@ api_vxlan_gpe_tunnel_dump (vat_main_t * vam) } /* Get list of vxlan-tunnel interfaces */ - M (VXLAN_GPE_TUNNEL_DUMP, vxlan_gpe_tunnel_dump); + M (VXLAN_GPE_TUNNEL_DUMP, mp); mp->sw_if_index = htonl (sw_if_index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } u8 * @@ -11266,9 +11503,10 @@ api_l2_fib_table_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_fib_table_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 bd_id; u8 bd_id_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -11288,18 +11526,17 @@ api_l2_fib_table_dump (vat_main_t * vam) print (vam->ofp, "BD-ID Mac Address sw-ndx Static Filter BVI"); /* Get list of l2 fib entries */ - M (L2_FIB_TABLE_DUMP, l2_fib_table_dump); + M (L2_FIB_TABLE_DUMP, mp); mp->bd_id = ntohl (bd_id); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } @@ -11309,8 +11546,8 @@ api_interface_name_renumber (vat_main_t * vam) unformat_input_t *line_input = vam->input; vl_api_interface_name_renumber_t *mp; u32 sw_if_index = ~0; - f64 timeout; u32 new_show_dev_instance = ~0; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -11338,13 +11575,14 @@ api_interface_name_renumber (vat_main_t * vam) return -99; } - M (INTERFACE_NAME_RENUMBER, interface_name_renumber); + M (INTERFACE_NAME_RENUMBER, mp); mp->sw_if_index = ntohl (sw_if_index); mp->new_show_dev_instance = ntohl (new_show_dev_instance); - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -11352,10 +11590,10 @@ api_want_ip4_arp_events (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_want_ip4_arp_events_t *mp; - f64 timeout; ip4_address_t address; int address_set = 0; u32 enable_disable = 1; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -11373,13 +11611,14 @@ api_want_ip4_arp_events (vat_main_t * vam) return -99; } - M (WANT_IP4_ARP_EVENTS, want_ip4_arp_events); + M (WANT_IP4_ARP_EVENTS, mp); mp->enable_disable = enable_disable; mp->pid = getpid (); mp->address = address.as_u32; - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -11387,10 +11626,10 @@ api_want_ip6_nd_events (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_want_ip6_nd_events_t *mp; - f64 timeout; ip6_address_t address; int address_set = 0; u32 enable_disable = 1; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -11408,13 +11647,14 @@ api_want_ip6_nd_events (vat_main_t * vam) return -99; } - M (WANT_IP6_ND_EVENTS, want_ip6_nd_events); + M (WANT_IP6_ND_EVENTS, mp); mp->enable_disable = enable_disable; mp->pid = getpid (); clib_memcpy (mp->address, &address, sizeof (ip6_address_t)); - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -11422,13 +11662,13 @@ api_input_acl_set_interface (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_input_acl_set_interface_t *mp; - f64 timeout; u32 sw_if_index; int sw_if_index_set; u32 ip4_table_index = ~0; u32 ip6_table_index = ~0; u32 l2_table_index = ~0; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -11457,7 +11697,7 @@ api_input_acl_set_interface (vat_main_t * vam) return -99; } - M (INPUT_ACL_SET_INTERFACE, input_acl_set_interface); + M (INPUT_ACL_SET_INTERFACE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->ip4_table_index = ntohl (ip4_table_index); @@ -11465,10 +11705,9 @@ api_input_acl_set_interface (vat_main_t * vam) mp->l2_table_index = ntohl (l2_table_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -11476,11 +11715,12 @@ api_ip_address_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ip_address_dump_t *mp; + vl_api_control_ping_t *mp_ping; u32 sw_if_index = ~0; u8 sw_if_index_set = 0; u8 ipv4_set = 0; u8 ipv6_set = 0; - f64 timeout; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -11518,30 +11758,30 @@ api_ip_address_dump (vat_main_t * vam) vam->current_sw_if_index = sw_if_index; vam->is_ipv6 = ipv6_set; - M (IP_ADDRESS_DUMP, ip_address_dump); + M (IP_ADDRESS_DUMP, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_ipv6 = ipv6_set; - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int api_ip_dump (vat_main_t * vam) { vl_api_ip_dump_t *mp; + vl_api_control_ping_t *mp_ping; unformat_input_t *in = vam->input; int ipv4_set = 0; int ipv6_set = 0; int is_ipv6; - f64 timeout; int i; + int ret; while (unformat_check_input (in) != UNFORMAT_END_OF_INPUT) { @@ -11575,17 +11815,16 @@ api_ip_dump (vat_main_t * vam) } vec_free (vam->ip_details_by_sw_if_index[is_ipv6]); - M (IP_DUMP, ip_dump); + M (IP_DUMP, mp); mp->is_ipv6 = ipv6_set; - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -11593,9 +11832,9 @@ api_ipsec_spd_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_spd_add_del_t *mp; - f64 timeout; u32 spd_id = ~0; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -11615,15 +11854,14 @@ api_ipsec_spd_add_del (vat_main_t * vam) return -99; } - M (IPSEC_SPD_ADD_DEL, ipsec_spd_add_del); + M (IPSEC_SPD_ADD_DEL, mp); mp->spd_id = ntohl (spd_id); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -11631,11 +11869,11 @@ api_ipsec_interface_add_del_spd (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_interface_add_del_spd_t *mp; - f64 timeout; u32 sw_if_index; u8 sw_if_index_set = 0; u32 spd_id = (u32) ~ 0; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -11668,16 +11906,15 @@ api_ipsec_interface_add_del_spd (vat_main_t * vam) return -99; } - M (IPSEC_INTERFACE_ADD_DEL_SPD, ipsec_interface_add_del_spd); + M (IPSEC_INTERFACE_ADD_DEL_SPD, mp); mp->spd_id = ntohl (spd_id); mp->sw_if_index = ntohl (sw_if_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -11685,7 +11922,6 @@ api_ipsec_spd_add_del_entry (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_spd_add_del_entry_t *mp; - f64 timeout; u8 is_add = 1, is_outbound = 0, is_ipv6 = 0, is_ip_any = 1; u32 spd_id = 0, sa_id = 0, protocol = 0, policy = 0; i32 priority = 0; @@ -11693,6 +11929,7 @@ api_ipsec_spd_add_del_entry (vat_main_t * vam) u32 lport_start = 0, lport_stop = (u32) ~ 0; ip4_address_t laddr4_start, laddr4_stop, raddr4_start, raddr4_stop; ip6_address_t laddr6_start, laddr6_stop, raddr6_start, raddr6_stop; + int ret; laddr4_start.as_u32 = raddr4_start.as_u32 = 0; laddr4_stop.as_u32 = raddr4_stop.as_u32 = (u32) ~ 0; @@ -11794,7 +12031,7 @@ api_ipsec_spd_add_del_entry (vat_main_t * vam) } - M (IPSEC_SPD_ADD_DEL_ENTRY, ipsec_spd_add_del_entry); + M (IPSEC_SPD_ADD_DEL_ENTRY, mp); mp->spd_id = ntohl (spd_id); mp->priority = ntohl (priority); @@ -11832,10 +12069,9 @@ api_ipsec_spd_add_del_entry (vat_main_t * vam) mp->sa_id = ntohl (sa_id); mp->is_add = is_add; mp->is_ip_any = is_ip_any; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -11843,7 +12079,6 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_sad_add_del_entry_t *mp; - f64 timeout; u32 sad_id = 0, spi = 0; u8 *ck = 0, *ik = 0; u8 is_add = 1; @@ -11855,6 +12090,7 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) ip4_address_t tun_dst4; ip6_address_t tun_src6; ip6_address_t tun_dst6; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -11904,11 +12140,7 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) if (unformat (i, "integ_alg %U", unformat_ipsec_integ_alg, &integ_alg)) { -#if DPDK_CRYPTO==1 - if (integ_alg < IPSEC_INTEG_ALG_NONE || -#else if (integ_alg < IPSEC_INTEG_ALG_SHA1_96 || -#endif integ_alg >= IPSEC_INTEG_N_ALG) { clib_warning ("unsupported integ-alg: '%U'", @@ -11926,34 +12158,7 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) } -#if DPDK_CRYPTO==1 - /*Special cases, aes-gcm-128 encryption */ - if (crypto_alg == IPSEC_CRYPTO_ALG_AES_GCM_128) - { - if (integ_alg != IPSEC_INTEG_ALG_NONE - && integ_alg != IPSEC_INTEG_ALG_AES_GCM_128) - { - clib_warning - ("unsupported: aes-gcm-128 crypto-alg needs none as integ-alg"); - return -99; - } - else /*set integ-alg internally to aes-gcm-128 */ - integ_alg = IPSEC_INTEG_ALG_AES_GCM_128; - } - else if (integ_alg == IPSEC_INTEG_ALG_AES_GCM_128) - { - clib_warning ("unsupported integ-alg: aes-gcm-128"); - return -99; - } - else if (integ_alg == IPSEC_INTEG_ALG_NONE) - { - clib_warning ("unsupported integ-alg: none"); - return -99; - } -#endif - - - M (IPSEC_SAD_ADD_DEL_ENTRY, ipsec_sad_add_del_entry); + M (IPSEC_SAD_ADD_DEL_ENTRY, mp); mp->sad_id = ntohl (sad_id); mp->is_add = is_add; @@ -11995,10 +12200,9 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) } } - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12006,9 +12210,9 @@ api_ipsec_sa_set_key (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_sa_set_key_t *mp; - f64 timeout; u32 sa_id; u8 *ck = 0, *ik = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12025,7 +12229,7 @@ api_ipsec_sa_set_key (vat_main_t * vam) } } - M (IPSEC_SA_SET_KEY, ipsec_set_sa_key); + M (IPSEC_SA_SET_KEY, mp); mp->sa_id = ntohl (sa_id); mp->crypto_key_length = vec_len (ck); @@ -12042,10 +12246,9 @@ api_ipsec_sa_set_key (vat_main_t * vam) if (ik) clib_memcpy (mp->integrity_key, ik, mp->integrity_key_length); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12053,9 +12256,9 @@ api_ikev2_profile_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ikev2_profile_add_del_t *mp; - f64 timeout; u8 is_add = 1; u8 *name = 0; + int ret; const char *valid_chars = "a-zA-Z0-9_"; @@ -12084,16 +12287,15 @@ api_ikev2_profile_add_del (vat_main_t * vam) return -99; } - M (IKEV2_PROFILE_ADD_DEL, ikev2_profile_add_del); + M (IKEV2_PROFILE_ADD_DEL, mp); clib_memcpy (mp->name, name, vec_len (name)); mp->is_add = is_add; vec_free (name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12101,11 +12303,11 @@ api_ikev2_profile_set_auth (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ikev2_profile_set_auth_t *mp; - f64 timeout; u8 *name = 0; u8 *data = 0; u32 auth_method = 0; u8 is_hex = 0; + int ret; const char *valid_chars = "a-zA-Z0-9_"; @@ -12151,7 +12353,7 @@ api_ikev2_profile_set_auth (vat_main_t * vam) return -99; } - M (IKEV2_PROFILE_SET_AUTH, ikev2_profile_set_auth); + M (IKEV2_PROFILE_SET_AUTH, mp); mp->is_hex = is_hex; mp->auth_method = (u8) auth_method; @@ -12161,10 +12363,9 @@ api_ikev2_profile_set_auth (vat_main_t * vam) vec_free (name); vec_free (data); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12172,12 +12373,12 @@ api_ikev2_profile_set_id (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ikev2_profile_set_id_t *mp; - f64 timeout; u8 *name = 0; u8 *data = 0; u8 is_local = 0; u32 id_type = 0; ip4_address_t ip4; + int ret; const char *valid_chars = "a-zA-Z0-9_"; @@ -12231,7 +12432,7 @@ api_ikev2_profile_set_id (vat_main_t * vam) return -99; } - M (IKEV2_PROFILE_SET_ID, ikev2_profile_set_id); + M (IKEV2_PROFILE_SET_ID, mp); mp->is_local = is_local; mp->id_type = (u8) id_type; @@ -12241,10 +12442,9 @@ api_ikev2_profile_set_id (vat_main_t * vam) vec_free (name); vec_free (data); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12252,13 +12452,13 @@ api_ikev2_profile_set_ts (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ikev2_profile_set_ts_t *mp; - f64 timeout; u8 *name = 0; u8 is_local = 0; u32 proto = 0, start_port = 0, end_port = (u32) ~ 0; ip4_address_t start_addr, end_addr; const char *valid_chars = "a-zA-Z0-9_"; + int ret; start_addr.as_u32 = 0; end_addr.as_u32 = (u32) ~ 0; @@ -12295,41 +12495,354 @@ api_ikev2_profile_set_ts (vat_main_t * vam) return -99; } - if (vec_len (name) > 64) + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_PROFILE_SET_TS, mp); + + mp->is_local = is_local; + mp->proto = (u8) proto; + mp->start_port = (u16) start_port; + mp->end_port = (u16) end_port; + mp->start_addr = start_addr.as_u32; + mp->end_addr = end_addr.as_u32; + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_set_local_key (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_set_local_key_t *mp; + u8 *file = 0; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "file %v", &file)) + vec_add1 (file, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (file)) + { + errmsg ("RSA key file must be specified"); + return -99; + } + + if (vec_len (file) > 256) + { + errmsg ("file name too long"); + return -99; + } + + M (IKEV2_SET_LOCAL_KEY, mp); + + clib_memcpy (mp->key_file, file, vec_len (file)); + vec_free (file); + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_set_responder (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_set_responder_t *mp; + int ret; + u8 *name = 0; + u32 sw_if_index = ~0; + ip4_address_t address; + + const char *valid_chars = "a-zA-Z0-9_"; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat + (i, "%U interface %d address %U", unformat_token, valid_chars, + &name, &sw_if_index, unformat_ip4_address, &address)) + vec_add1 (name, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (name)) + { + errmsg ("profile name must be specified"); + return -99; + } + + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_SET_RESPONDER, mp); + + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + + mp->sw_if_index = sw_if_index; + clib_memcpy (mp->address, &address, sizeof (address)); + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_set_ike_transforms (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_set_ike_transforms_t *mp; + int ret; + u8 *name = 0; + u32 crypto_alg, crypto_key_size, integ_alg, dh_group; + + const char *valid_chars = "a-zA-Z0-9_"; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U %d %d %d %d", unformat_token, valid_chars, &name, + &crypto_alg, &crypto_key_size, &integ_alg, &dh_group)) + vec_add1 (name, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (name)) + { + errmsg ("profile name must be specified"); + return -99; + } + + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_SET_IKE_TRANSFORMS, mp); + + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + mp->crypto_alg = crypto_alg; + mp->crypto_key_size = crypto_key_size; + mp->integ_alg = integ_alg; + mp->dh_group = dh_group; + + S (mp); + W (ret); + return ret; +} + + +static int +api_ikev2_set_esp_transforms (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_set_esp_transforms_t *mp; + int ret; + u8 *name = 0; + u32 crypto_alg, crypto_key_size, integ_alg, dh_group; + + const char *valid_chars = "a-zA-Z0-9_"; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U %d %d %d %d", unformat_token, valid_chars, &name, + &crypto_alg, &crypto_key_size, &integ_alg, &dh_group)) + vec_add1 (name, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (name)) + { + errmsg ("profile name must be specified"); + return -99; + } + + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_SET_ESP_TRANSFORMS, mp); + + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + mp->crypto_alg = crypto_alg; + mp->crypto_key_size = crypto_key_size; + mp->integ_alg = integ_alg; + mp->dh_group = dh_group; + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_set_sa_lifetime (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_set_sa_lifetime_t *mp; + int ret; + u8 *name = 0; + u64 lifetime, lifetime_maxdata; + u32 lifetime_jitter, handover; + + const char *valid_chars = "a-zA-Z0-9_"; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U %lu %u %u %lu", unformat_token, valid_chars, &name, + &lifetime, &lifetime_jitter, &handover, + &lifetime_maxdata)) + vec_add1 (name, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (name)) + { + errmsg ("profile name must be specified"); + return -99; + } + + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_SET_SA_LIFETIME, mp); + + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + mp->lifetime = lifetime; + mp->lifetime_jitter = lifetime_jitter; + mp->handover = handover; + mp->lifetime_maxdata = lifetime_maxdata; + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_initiate_sa_init (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_initiate_sa_init_t *mp; + int ret; + u8 *name = 0; + + const char *valid_chars = "a-zA-Z0-9_"; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U", unformat_token, valid_chars, &name)) + vec_add1 (name, 0); + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vec_len (name)) + { + errmsg ("profile name must be specified"); + return -99; + } + + if (vec_len (name) > 64) + { + errmsg ("profile name too long"); + return -99; + } + + M (IKEV2_INITIATE_SA_INIT, mp); + + clib_memcpy (mp->name, name, vec_len (name)); + vec_free (name); + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_initiate_del_ike_sa (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_initiate_del_ike_sa_t *mp; + int ret; + u64 ispi; + + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { - errmsg ("profile name too long"); - return -99; + if (unformat (i, "%lx", &ispi)) + ; + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } } - M (IKEV2_PROFILE_SET_TS, ikev2_profile_set_ts); + M (IKEV2_INITIATE_DEL_IKE_SA, mp); - mp->is_local = is_local; - mp->proto = (u8) proto; - mp->start_port = (u16) start_port; - mp->end_port = (u16) end_port; - mp->start_addr = start_addr.as_u32; - mp->end_addr = end_addr.as_u32; - clib_memcpy (mp->name, name, vec_len (name)); - vec_free (name); + mp->ispi = ispi; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int -api_ikev2_set_local_key (vat_main_t * vam) +api_ikev2_initiate_del_child_sa (vat_main_t * vam) { unformat_input_t *i = vam->input; - vl_api_ikev2_set_local_key_t *mp; - f64 timeout; - u8 *file = 0; + vl_api_ikev2_initiate_del_child_sa_t *mp; + int ret; + u32 ispi; + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { - if (unformat (i, "file %v", &file)) - vec_add1 (file, 0); + if (unformat (i, "%x", &ispi)) + ; else { errmsg ("parse error '%U'", format_unformat_error, i); @@ -12337,27 +12850,42 @@ api_ikev2_set_local_key (vat_main_t * vam) } } - if (!vec_len (file)) - { - errmsg ("RSA key file must be specified"); - return -99; - } + M (IKEV2_INITIATE_DEL_CHILD_SA, mp); - if (vec_len (file) > 256) + mp->ispi = ispi; + + S (mp); + W (ret); + return ret; +} + +static int +api_ikev2_initiate_rekey_child_sa (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ikev2_initiate_rekey_child_sa_t *mp; + int ret; + u32 ispi; + + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { - errmsg ("file name too long"); - return -99; + if (unformat (i, "%x", &ispi)) + ; + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } } - M (IKEV2_SET_LOCAL_KEY, ikev2_set_local_key); + M (IKEV2_INITIATE_REKEY_CHILD_SA, mp); - clib_memcpy (mp->key_file, file, vec_len (file)); - vec_free (file); + mp->ispi = ispi; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } /* @@ -12368,7 +12896,6 @@ api_map_add_domain (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_map_add_domain_t *mp; - f64 timeout; ip4_address_t ip4_prefix; ip6_address_t ip6_prefix; @@ -12379,6 +12906,7 @@ api_map_add_domain (vat_main_t * vam) u8 is_translation = 0; u32 mtu = 0; u32 ip6_src_len = 128; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12419,7 +12947,7 @@ api_map_add_domain (vat_main_t * vam) } /* Construct the API message */ - M (MAP_ADD_DOMAIN, map_add_domain); + M (MAP_ADD_DOMAIN, mp); clib_memcpy (mp->ip4_prefix, &ip4_prefix, sizeof (ip4_prefix)); mp->ip4_prefix_len = ip4_prefix_len; @@ -12437,10 +12965,11 @@ api_map_add_domain (vat_main_t * vam) mp->mtu = htons (mtu); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; + W (ret); + return ret; } static int @@ -12448,10 +12977,10 @@ api_map_del_domain (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_map_del_domain_t *mp; - f64 timeout; u32 num_m_args = 0; u32 index; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12471,15 +13000,16 @@ api_map_del_domain (vat_main_t * vam) } /* Construct the API message */ - M (MAP_DEL_DOMAIN, map_del_domain); + M (MAP_DEL_DOMAIN, mp); mp->index = ntohl (index); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; + W (ret); + return ret; } static int @@ -12487,10 +13017,10 @@ api_map_add_del_rule (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_map_add_del_rule_t *mp; - f64 timeout; u8 is_add = 1; ip6_address_t ip6_dst; u32 num_m_args = 0, index, psid = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12512,7 +13042,7 @@ api_map_add_del_rule (vat_main_t * vam) } /* Construct the API message */ - M (MAP_ADD_DEL_RULE, map_add_del_rule); + M (MAP_ADD_DEL_RULE, mp); mp->index = ntohl (index); mp->is_add = is_add; @@ -12520,31 +13050,32 @@ api_map_add_del_rule (vat_main_t * vam) mp->psid = ntohs (psid); /* send it... */ - S; + S (mp); /* Wait for a reply, return good/bad news */ - W; + W (ret); + return ret; } static int api_map_domain_dump (vat_main_t * vam) { vl_api_map_domain_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; /* Construct the API message */ - M (MAP_DOMAIN_DUMP, map_domain_dump); + M (MAP_DOMAIN_DUMP, mp); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -12552,8 +13083,9 @@ api_map_rule_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_map_rule_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 domain_index = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12570,20 +13102,19 @@ api_map_rule_dump (vat_main_t * vam) } /* Construct the API message */ - M (MAP_RULE_DUMP, map_rule_dump); + M (MAP_RULE_DUMP, mp); mp->domain_index = htonl (domain_index); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static void vl_api_map_add_domain_reply_t_handler @@ -12624,10 +13155,10 @@ static int api_get_first_msg_id (vat_main_t * vam) { vl_api_get_first_msg_id_t *mp; - f64 timeout; unformat_input_t *i = vam->input; u8 *name; u8 name_set = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -12650,12 +13181,11 @@ api_get_first_msg_id (vat_main_t * vam) return -99; } - M (GET_FIRST_MSG_ID, get_first_msg_id); + M (GET_FIRST_MSG_ID, mp); clib_memcpy (mp->name, name, vec_len (name)); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -12663,9 +13193,9 @@ api_cop_interface_enable_disable (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_cop_interface_enable_disable_t *mp; - f64 timeout; u32 sw_if_index = ~0; u8 enable_disable = 1; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -12689,14 +13219,15 @@ api_cop_interface_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (COP_INTERFACE_ENABLE_DISABLE, cop_interface_enable_disable); + M (COP_INTERFACE_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable_disable = enable_disable; /* send it... */ - S; + S (mp); /* Wait for the reply */ - W; + W (ret); + return ret; } static int @@ -12704,10 +13235,10 @@ api_cop_whitelist_enable_disable (vat_main_t * vam) { unformat_input_t *line_input = vam->input; vl_api_cop_whitelist_enable_disable_t *mp; - f64 timeout; u32 sw_if_index = ~0; u8 ip4 = 0, ip6 = 0, default_cop = 0; u32 fib_id = 0; + int ret; while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) { @@ -12735,7 +13266,7 @@ api_cop_whitelist_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (COP_WHITELIST_ENABLE_DISABLE, cop_whitelist_enable_disable); + M (COP_WHITELIST_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->fib_id = ntohl (fib_id); mp->ip4 = ip4; @@ -12743,23 +13274,25 @@ api_cop_whitelist_enable_disable (vat_main_t * vam) mp->default_cop = default_cop; /* send it... */ - S; + S (mp); /* Wait for the reply */ - W; + W (ret); + return ret; } static int api_get_node_graph (vat_main_t * vam) { vl_api_get_node_graph_t *mp; - f64 timeout; + int ret; - M (GET_NODE_GRAPH, get_node_graph); + M (GET_NODE_GRAPH, mp); /* send it... */ - S; + S (mp); /* Wait for the reply */ - W; + W (ret); + return ret; } /* *INDENT-OFF* */ @@ -12824,29 +13357,19 @@ lisp_eid_put_vat (u8 * dst, u8 eid[16], u8 type) clib_memcpy (dst, eid, lisp_eid_size_vat (type)); } -/* *INDENT-OFF* */ -/** Used for transferring locators via VPP API */ -typedef CLIB_PACKED(struct -{ - u32 sw_if_index; /**< locator sw_if_index */ - u8 priority; /**< locator priority */ - u8 weight; /**< locator weight */ -}) ls_locator_t; -/* *INDENT-ON* */ - static int -api_lisp_add_del_locator_set (vat_main_t * vam) +api_one_add_del_locator_set (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_locator_set_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_locator_set_t *mp; u8 is_add = 1; u8 *locator_set_name = NULL; u8 locator_set_name_set = 0; - ls_locator_t locator, *locators = 0; + vl_api_local_locator_t locator, *locators = 0; u32 sw_if_index, priority, weight; u32 data_len = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -12896,10 +13419,10 @@ api_lisp_add_del_locator_set (vat_main_t * vam) } vec_add1 (locator_set_name, 0); - data_len = sizeof (ls_locator_t) * vec_len (locators); + data_len = sizeof (vl_api_local_locator_t) * vec_len (locators); /* Construct the API message */ - M2 (LISP_ADD_DEL_LOCATOR_SET, lisp_add_del_locator_set, data_len); + M2 (ONE_ADD_DEL_LOCATOR_SET, mp, data_len); mp->is_add = is_add; clib_memcpy (mp->locator_set_name, locator_set_name, @@ -12912,21 +13435,20 @@ api_lisp_add_del_locator_set (vat_main_t * vam) vec_free (locators); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_locator_set api_one_add_del_locator_set + static int -api_lisp_add_del_locator (vat_main_t * vam) +api_one_add_del_locator (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_locator_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_locator_t *mp; u32 tmp_if_index = ~0; u32 sw_if_index = ~0; u8 sw_if_index_set = 0; @@ -12938,6 +13460,7 @@ api_lisp_add_del_locator (vat_main_t * vam) u8 is_add = 1; u8 *locator_set_name = NULL; u8 locator_set_name_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13016,7 +13539,7 @@ api_lisp_add_del_locator (vat_main_t * vam) vec_add1 (locator_set_name, 0); /* Construct the API message */ - M (LISP_ADD_DEL_LOCATOR, lisp_add_del_locator); + M (ONE_ADD_DEL_LOCATOR, mp); mp->is_add = is_add; mp->sw_if_index = ntohl (sw_if_index); @@ -13027,15 +13550,15 @@ api_lisp_add_del_locator (vat_main_t * vam) vec_free (locator_set_name); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_locator api_one_add_del_locator + uword unformat_hmac_key_id (unformat_input_t * input, va_list * args) { @@ -13062,11 +13585,10 @@ unformat_hmac_key_id (unformat_input_t * input, va_list * args) } static int -api_lisp_add_del_local_eid (vat_main_t * vam) +api_one_add_del_local_eid (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_local_eid_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_local_eid_t *mp; u8 is_add = 1; u8 eid_set = 0; lisp_eid_vat_t _eid, *eid = &_eid; @@ -13075,6 +13597,7 @@ api_lisp_add_del_local_eid (vat_main_t * vam) u32 vni = 0; u16 key_id = 0; u8 *key = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13138,7 +13661,7 @@ api_lisp_add_del_local_eid (vat_main_t * vam) vec_add1 (locator_set_name, 0); /* Construct the API message */ - M (LISP_ADD_DEL_LOCAL_EID, lisp_add_del_local_eid); + M (ONE_ADD_DEL_LOCAL_EID, mp); mp->is_add = is_add; lisp_eid_put_vat (mp->eid, eid->addr, eid->type); @@ -13154,33 +13677,21 @@ api_lisp_add_del_local_eid (vat_main_t * vam) vec_free (key); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } -/* *INDENT-OFF* */ -/** Used for transferring locators via VPP API */ -typedef CLIB_PACKED(struct -{ - u8 is_ip4; /**< is locator an IPv4 address? */ - u8 priority; /**< locator priority */ - u8 weight; /**< locator weight */ - u8 addr[16]; /**< IPv4/IPv6 address */ -}) rloc_t; -/* *INDENT-ON* */ +#define api_lisp_add_del_local_eid api_one_add_del_local_eid static int api_lisp_gpe_add_del_fwd_entry (vat_main_t * vam) { u32 dp_table = 0, vni = 0;; unformat_input_t *input = vam->input; - vl_api_lisp_gpe_add_del_fwd_entry_t *mp; - f64 timeout = ~0; + vl_api_gpe_add_del_fwd_entry_t *mp; u8 is_add = 1; lisp_eid_vat_t _rmt_eid, *rmt_eid = &_rmt_eid; lisp_eid_vat_t _lcl_eid, *lcl_eid = &_lcl_eid; @@ -13188,8 +13699,8 @@ api_lisp_gpe_add_del_fwd_entry (vat_main_t * vam) u32 action = ~0, w; ip4_address_t rmt_rloc4, lcl_rloc4; ip6_address_t rmt_rloc6, lcl_rloc6; - vl_api_lisp_gpe_locator_t *rmt_locs = 0, *lcl_locs = 0, rloc, *curr_rloc = - 0; + vl_api_gpe_locator_t *rmt_locs = 0, *lcl_locs = 0, rloc, *curr_rloc = 0; + int ret; memset (&rloc, 0, sizeof (rloc)); @@ -13280,8 +13791,8 @@ api_lisp_gpe_add_del_fwd_entry (vat_main_t * vam) } /* Construct the API message */ - M2 (LISP_GPE_ADD_DEL_FWD_ENTRY, lisp_gpe_add_del_fwd_entry, - sizeof (vl_api_lisp_gpe_locator_t) * vec_len (rmt_locs) * 2); + M2 (GPE_ADD_DEL_FWD_ENTRY, mp, + sizeof (vl_api_gpe_locator_t) * vec_len (rmt_locs) * 2); mp->is_add = is_add; lisp_eid_put_vat (mp->rmt_eid, rmt_eid->addr, rmt_eid->type); @@ -13297,36 +13808,34 @@ api_lisp_gpe_add_del_fwd_entry (vat_main_t * vam) { mp->loc_num = clib_host_to_net_u32 (vec_len (rmt_locs) * 2); clib_memcpy (mp->locs, lcl_locs, - (sizeof (vl_api_lisp_gpe_locator_t) * vec_len (lcl_locs))); + (sizeof (vl_api_gpe_locator_t) * vec_len (lcl_locs))); - u32 offset = sizeof (vl_api_lisp_gpe_locator_t) * vec_len (lcl_locs); + u32 offset = sizeof (vl_api_gpe_locator_t) * vec_len (lcl_locs); clib_memcpy (((u8 *) mp->locs) + offset, rmt_locs, - (sizeof (vl_api_lisp_gpe_locator_t) * vec_len (rmt_locs))); + (sizeof (vl_api_gpe_locator_t) * vec_len (rmt_locs))); } vec_free (lcl_locs); vec_free (rmt_locs); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int -api_lisp_add_del_map_server (vat_main_t * vam) +api_one_add_del_map_server (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_map_server_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_map_server_t *mp; u8 is_add = 1; u8 ipv4_set = 0; u8 ipv6_set = 0; ip4_address_t ipv4; ip6_address_t ipv6; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13360,7 +13869,7 @@ api_lisp_add_del_map_server (vat_main_t * vam) } /* Construct the API message */ - M (LISP_ADD_DEL_MAP_SERVER, lisp_add_del_map_server); + M (ONE_ADD_DEL_MAP_SERVER, mp); mp->is_add = is_add; if (ipv6_set) @@ -13375,26 +13884,26 @@ api_lisp_add_del_map_server (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_map_server api_one_add_del_map_server + static int -api_lisp_add_del_map_resolver (vat_main_t * vam) +api_one_add_del_map_resolver (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_map_resolver_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_map_resolver_t *mp; u8 is_add = 1; u8 ipv4_set = 0; u8 ipv6_set = 0; ip4_address_t ipv4; ip6_address_t ipv6; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13428,7 +13937,7 @@ api_lisp_add_del_map_resolver (vat_main_t * vam) } /* Construct the API message */ - M (LISP_ADD_DEL_MAP_RESOLVER, lisp_add_del_map_resolver); + M (ONE_ADD_DEL_MAP_RESOLVER, mp); mp->is_add = is_add; if (ipv6_set) @@ -13443,23 +13952,23 @@ api_lisp_add_del_map_resolver (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_map_resolver api_one_add_del_map_resolver + static int api_lisp_gpe_enable_disable (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_gpe_enable_disable_t *mp; - f64 timeout = ~0; + vl_api_gpe_enable_disable_t *mp; u8 is_set = 0; u8 is_en = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13485,28 +13994,26 @@ api_lisp_gpe_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (LISP_GPE_ENABLE_DISABLE, lisp_gpe_enable_disable); + M (GPE_ENABLE_DISABLE, mp); mp->is_en = is_en; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } static int -api_lisp_rloc_probe_enable_disable (vat_main_t * vam) +api_one_rloc_probe_enable_disable (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_rloc_probe_enable_disable_t *mp; - f64 timeout = ~0; + vl_api_one_rloc_probe_enable_disable_t *mp; u8 is_set = 0; u8 is_en = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13529,28 +14036,28 @@ api_lisp_rloc_probe_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (LISP_RLOC_PROBE_ENABLE_DISABLE, lisp_rloc_probe_enable_disable); + M (ONE_RLOC_PROBE_ENABLE_DISABLE, mp); mp->is_enabled = is_en; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_rloc_probe_enable_disable api_one_rloc_probe_enable_disable + static int -api_lisp_map_register_enable_disable (vat_main_t * vam) +api_one_map_register_enable_disable (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_map_register_enable_disable_t *mp; - f64 timeout = ~0; + vl_api_one_map_register_enable_disable_t *mp; u8 is_set = 0; u8 is_en = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13573,28 +14080,28 @@ api_lisp_map_register_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (LISP_MAP_REGISTER_ENABLE_DISABLE, lisp_map_register_enable_disable); + M (ONE_MAP_REGISTER_ENABLE_DISABLE, mp); mp->is_enabled = is_en; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_map_register_enable_disable api_one_map_register_enable_disable + static int -api_lisp_enable_disable (vat_main_t * vam) +api_one_enable_disable (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_enable_disable_t *mp; - f64 timeout = ~0; + vl_api_one_enable_disable_t *mp; u8 is_set = 0; u8 is_en = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13619,78 +14126,81 @@ api_lisp_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (LISP_ENABLE_DISABLE, lisp_enable_disable); + M (ONE_ENABLE_DISABLE, mp); mp->is_en = is_en; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_enable_disable api_one_enable_disable + static int -api_show_lisp_map_register_state (vat_main_t * vam) +api_show_one_map_register_state (vat_main_t * vam) { - f64 timeout = ~0; - vl_api_show_lisp_map_register_state_t *mp; + vl_api_show_one_map_register_state_t *mp; + int ret; - M (SHOW_LISP_MAP_REGISTER_STATE, show_lisp_map_register_state); + M (SHOW_ONE_MAP_REGISTER_STATE, mp); /* send */ - S; + S (mp); /* wait for reply */ - W; - - return 0; + W (ret); + return ret; } +#define api_show_lisp_map_register_state api_show_one_map_register_state + static int -api_show_lisp_rloc_probe_state (vat_main_t * vam) +api_show_one_rloc_probe_state (vat_main_t * vam) { - f64 timeout = ~0; - vl_api_show_lisp_rloc_probe_state_t *mp; + vl_api_show_one_rloc_probe_state_t *mp; + int ret; - M (SHOW_LISP_RLOC_PROBE_STATE, show_lisp_rloc_probe_state); + M (SHOW_ONE_RLOC_PROBE_STATE, mp); /* send */ - S; + S (mp); /* wait for reply */ - W; - - return 0; + W (ret); + return ret; } +#define api_show_lisp_rloc_probe_state api_show_one_rloc_probe_state + static int -api_show_lisp_map_request_mode (vat_main_t * vam) +api_show_one_map_request_mode (vat_main_t * vam) { - f64 timeout = ~0; - vl_api_show_lisp_map_request_mode_t *mp; + vl_api_show_one_map_request_mode_t *mp; + int ret; - M (SHOW_LISP_MAP_REQUEST_MODE, show_lisp_map_request_mode); + M (SHOW_ONE_MAP_REQUEST_MODE, mp); /* send */ - S; + S (mp); /* wait for reply */ - W; - - return 0; + W (ret); + return ret; } +#define api_show_lisp_map_request_mode api_show_one_map_request_mode + static int -api_lisp_map_request_mode (vat_main_t * vam) +api_one_map_request_mode (vat_main_t * vam) { - f64 timeout = ~0; unformat_input_t *input = vam->input; - vl_api_lisp_map_request_mode_t *mp; + vl_api_one_map_request_mode_t *mp; u8 mode = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13706,35 +14216,35 @@ api_lisp_map_request_mode (vat_main_t * vam) } } - M (LISP_MAP_REQUEST_MODE, lisp_map_request_mode); + M (ONE_MAP_REQUEST_MODE, mp); mp->mode = mode; /* send */ - S; + S (mp); /* wait for reply */ - W; - - /* notreached */ - return 0; + W (ret); + return ret; } +#define api_lisp_map_request_mode api_one_map_request_mode + /** - * Enable/disable LISP proxy ITR. + * Enable/disable ONE proxy ITR. * * @param vam vpp API test context * @return return code */ static int -api_lisp_pitr_set_locator_set (vat_main_t * vam) +api_one_pitr_set_locator_set (vat_main_t * vam) { - f64 timeout = ~0; u8 ls_name_set = 0; unformat_input_t *input = vam->input; - vl_api_lisp_pitr_set_locator_set_t *mp; + vl_api_one_pitr_set_locator_set_t *mp; u8 is_add = 1; u8 *ls_name = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13756,55 +14266,55 @@ api_lisp_pitr_set_locator_set (vat_main_t * vam) return -99; } - M (LISP_PITR_SET_LOCATOR_SET, lisp_pitr_set_locator_set); + M (ONE_PITR_SET_LOCATOR_SET, mp); mp->is_add = is_add; clib_memcpy (mp->ls_name, ls_name, vec_len (ls_name)); vec_free (ls_name); /* send */ - S; + S (mp); /* wait for reply */ - W; - - /* notreached */ - return 0; + W (ret); + return ret; } +#define api_lisp_pitr_set_locator_set api_one_pitr_set_locator_set + static int -api_show_lisp_pitr (vat_main_t * vam) +api_show_one_pitr (vat_main_t * vam) { - vl_api_show_lisp_pitr_t *mp; - f64 timeout = ~0; + vl_api_show_one_pitr_t *mp; + int ret; if (!vam->json_output) { print (vam->ofp, "%=20s", "lisp status:"); } - M (SHOW_LISP_PITR, show_lisp_pitr); + M (SHOW_ONE_PITR, mp); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_show_lisp_pitr api_show_one_pitr + /** * Add/delete mapping between vni and vrf */ static int -api_lisp_eid_table_add_del_map (vat_main_t * vam) +api_one_eid_table_add_del_map (vat_main_t * vam) { - f64 timeout = ~0; unformat_input_t *input = vam->input; - vl_api_lisp_eid_table_add_del_map_t *mp; + vl_api_one_eid_table_add_del_map_t *mp; u8 is_add = 1, vni_set = 0, vrf_set = 0, bd_index_set = 0; u32 vni, vrf, bd_index; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -13833,7 +14343,7 @@ api_lisp_eid_table_add_del_map (vat_main_t * vam) return -99; } - M (LISP_EID_TABLE_ADD_DEL_MAP, lisp_eid_table_add_del_map); + M (ONE_EID_TABLE_ADD_DEL_MAP, mp); mp->is_add = is_add; mp->vni = htonl (vni); @@ -13841,15 +14351,15 @@ api_lisp_eid_table_add_del_map (vat_main_t * vam) mp->is_l2 = bd_index_set; /* send */ - S; + S (mp); /* wait for reply */ - W; - - /* notreached */ - return 0; + W (ret); + return ret; } +#define api_lisp_eid_table_add_del_map api_one_eid_table_add_del_map + uword unformat_negative_mapping_action (unformat_input_t * input, va_list * args) { @@ -13880,17 +14390,16 @@ unformat_negative_mapping_action (unformat_input_t * input, va_list * args) } /** - * Add/del remote mapping to/from LISP control plane + * Add/del remote mapping to/from ONE control plane * * @param vam vpp API test context * @return return code */ static int -api_lisp_add_del_remote_mapping (vat_main_t * vam) +api_one_add_del_remote_mapping (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_remote_mapping_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_remote_mapping_t *mp; u32 vni = 0; lisp_eid_vat_t _eid, *eid = &_eid; lisp_eid_vat_t _seid, *seid = &_seid; @@ -13898,7 +14407,8 @@ api_lisp_add_del_remote_mapping (vat_main_t * vam) u32 action = ~0, p, w, data_len; ip4_address_t rloc4; ip6_address_t rloc6; - rloc_t *rlocs = 0, rloc, *curr_rloc = 0; + vl_api_remote_locator_t *rlocs = 0, rloc, *curr_rloc = 0; + int ret; memset (&rloc, 0, sizeof (rloc)); @@ -13977,9 +14487,9 @@ api_lisp_add_del_remote_mapping (vat_main_t * vam) return -99; } - data_len = vec_len (rlocs) * sizeof (rloc_t); + data_len = vec_len (rlocs) * sizeof (vl_api_remote_locator_t); - M2 (LISP_ADD_DEL_REMOTE_MAPPING, lisp_add_del_remote_mapping, data_len); + M2 (ONE_ADD_DEL_REMOTE_MAPPING, mp, data_len); mp->is_add = is_add; mp->vni = htonl (vni); mp->action = (u8) action; @@ -13996,28 +14506,27 @@ api_lisp_add_del_remote_mapping (vat_main_t * vam) vec_free (rlocs); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_remote_mapping api_one_add_del_remote_mapping + /** - * Add/del LISP adjacency. Saves mapping in LISP control plane and updates + * Add/del ONE adjacency. Saves mapping in ONE control plane and updates * forwarding entries in data-plane accordingly. * * @param vam vpp API test context * @return return code */ static int -api_lisp_add_del_adjacency (vat_main_t * vam) +api_one_add_del_adjacency (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_adjacency_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_adjacency_t *mp; u32 vni = 0; ip4_address_t leid4, reid4; ip6_address_t leid6, reid6; @@ -14026,6 +14535,7 @@ api_lisp_add_del_adjacency (vat_main_t * vam) u8 reid_type, leid_type; u32 leid_len = 0, reid_len = 0, len; u8 is_add = 1; + int ret; leid_type = reid_type = (u8) ~ 0; @@ -14097,7 +14607,7 @@ api_lisp_add_del_adjacency (vat_main_t * vam) return -99; } - M (LISP_ADD_DEL_ADJACENCY, lisp_add_del_adjacency); + M (ONE_ADD_DEL_ADJACENCY, mp); mp->is_add = is_add; mp->vni = htonl (vni); mp->leid_len = leid_len; @@ -14124,23 +14634,85 @@ api_lisp_add_del_adjacency (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; +} - /* NOTREACHED */ - return 0; +#define api_lisp_add_del_adjacency api_one_add_del_adjacency + +uword +unformat_gpe_encap_mode (unformat_input_t * input, va_list * args) +{ + u32 *mode = va_arg (*args, u32 *); + + if (unformat (input, "lisp")) + *mode = 0; + else if (unformat (input, "vxlan")) + *mode = 1; + else + return 0; + + return 1; +} + +static int +api_gpe_get_encap_mode (vat_main_t * vam) +{ + vl_api_gpe_get_encap_mode_t *mp; + int ret; + + /* Construct the API message */ + M (GPE_GET_ENCAP_MODE, mp); + + /* send it... */ + S (mp); + + /* Wait for a reply... */ + W (ret); + return ret; +} + +static int +api_gpe_set_encap_mode (vat_main_t * vam) +{ + unformat_input_t *input = vam->input; + vl_api_gpe_set_encap_mode_t *mp; + int ret; + u32 mode = 0; + + /* Parse args required to build the message */ + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (input, "%U", unformat_gpe_encap_mode, &mode)) + ; + else + break; + } + + /* Construct the API message */ + M (GPE_SET_ENCAP_MODE, mp); + + mp->mode = mode; + + /* send it... */ + S (mp); + + /* Wait for a reply... */ + W (ret); + return ret; } static int api_lisp_gpe_add_del_iface (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_gpe_add_del_iface_t *mp; - f64 timeout = ~0; + vl_api_gpe_add_del_iface_t *mp; u8 action_set = 0, is_add = 1, is_l2 = 0, dp_table_set = 0, vni_set = 0; u32 dp_table = 0, vni = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -14184,7 +14756,7 @@ api_lisp_gpe_add_del_iface (vat_main_t * vam) } /* Construct the API message */ - M (LISP_GPE_ADD_DEL_IFACE, lisp_gpe_add_del_iface); + M (GPE_ADD_DEL_IFACE, mp); mp->is_add = is_add; mp->dp_table = dp_table; @@ -14192,30 +14764,28 @@ api_lisp_gpe_add_del_iface (vat_main_t * vam) mp->vni = vni; /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } /** - * Add/del map request itr rlocs from LISP control plane and updates + * Add/del map request itr rlocs from ONE control plane and updates * * @param vam vpp API test context * @return return code */ static int -api_lisp_add_del_map_request_itr_rlocs (vat_main_t * vam) +api_one_add_del_map_request_itr_rlocs (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_add_del_map_request_itr_rlocs_t *mp; - f64 timeout = ~0; + vl_api_one_add_del_map_request_itr_rlocs_t *mp; u8 *locator_set_name = 0; u8 locator_set_name_set = 0; u8 is_add = 1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -14248,7 +14818,7 @@ api_lisp_add_del_map_request_itr_rlocs (vat_main_t * vam) return -99; } - M (LISP_ADD_DEL_MAP_REQUEST_ITR_RLOCS, lisp_add_del_map_request_itr_rlocs); + M (ONE_ADD_DEL_MAP_REQUEST_ITR_RLOCS, mp); mp->is_add = is_add; if (is_add) { @@ -14262,24 +14832,25 @@ api_lisp_add_del_map_request_itr_rlocs (vat_main_t * vam) vec_free (locator_set_name); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_add_del_map_request_itr_rlocs api_one_add_del_map_request_itr_rlocs + static int -api_lisp_locator_dump (vat_main_t * vam) +api_one_locator_dump (vat_main_t * vam) { unformat_input_t *input = vam->input; - vl_api_lisp_locator_dump_t *mp; - f64 timeout = ~0; + vl_api_one_locator_dump_t *mp; + vl_api_control_ping_t *mp_ping; u8 is_index_set = 0, is_name_set = 0; u8 *ls_name = 0; u32 ls_index = ~0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -14322,7 +14893,7 @@ api_lisp_locator_dump (vat_main_t * vam) print (vam->ofp, "%=16s%=16s%=16s", "locator", "priority", "weight"); } - M (LISP_LOCATOR_DUMP, lisp_locator_dump); + M (ONE_LOCATOR_DUMP, mp); mp->is_index_set = is_index_set; if (is_index_set) @@ -14335,28 +14906,27 @@ api_lisp_locator_dump (vat_main_t * vam) } /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_locator_dump api_one_locator_dump + static int -api_lisp_locator_set_dump (vat_main_t * vam) +api_one_locator_set_dump (vat_main_t * vam) { - vl_api_lisp_locator_set_dump_t *mp; + vl_api_one_locator_set_dump_t *mp; + vl_api_control_ping_t *mp_ping; unformat_input_t *input = vam->input; - f64 timeout = ~0; u8 filter = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -14381,34 +14951,33 @@ api_lisp_locator_set_dump (vat_main_t * vam) print (vam->ofp, "%=10s%=15s", "ls_index", "ls_name"); } - M (LISP_LOCATOR_SET_DUMP, lisp_locator_set_dump); + M (ONE_LOCATOR_SET_DUMP, mp); mp->filter = filter; /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_locator_set_dump api_one_locator_set_dump + static int -api_lisp_eid_table_map_dump (vat_main_t * vam) +api_one_eid_table_map_dump (vat_main_t * vam) { u8 is_l2 = 0; u8 mode_set = 0; unformat_input_t *input = vam->input; - vl_api_lisp_eid_table_map_dump_t *mp; - f64 timeout = ~0; + vl_api_one_eid_table_map_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -14441,66 +15010,64 @@ api_lisp_eid_table_map_dump (vat_main_t * vam) print (vam->ofp, "%=10s%=10s", "VNI", is_l2 ? "BD" : "VRF"); } - M (LISP_EID_TABLE_MAP_DUMP, lisp_eid_table_map_dump); + M (ONE_EID_TABLE_MAP_DUMP, mp); mp->is_l2 = is_l2; /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_eid_table_map_dump api_one_eid_table_map_dump + static int -api_lisp_eid_table_vni_dump (vat_main_t * vam) +api_one_eid_table_vni_dump (vat_main_t * vam) { - vl_api_lisp_eid_table_vni_dump_t *mp; - f64 timeout = ~0; + vl_api_one_eid_table_vni_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; if (!vam->json_output) { print (vam->ofp, "VNI"); } - M (LISP_EID_TABLE_VNI_DUMP, lisp_eid_table_vni_dump); + M (ONE_EID_TABLE_VNI_DUMP, mp); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_eid_table_vni_dump api_one_eid_table_vni_dump + static int -api_lisp_eid_table_dump (vat_main_t * vam) +api_one_eid_table_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; - vl_api_lisp_eid_table_dump_t *mp; - f64 timeout = ~0; + vl_api_one_eid_table_dump_t *mp; + vl_api_control_ping_t *mp_ping; struct in_addr ip4; struct in6_addr ip6; u8 mac[6]; u8 eid_type = ~0, eid_set = 0; u32 prefix_length = ~0, t, vni = 0; u8 filter = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -14546,7 +15113,7 @@ api_lisp_eid_table_dump (vat_main_t * vam) "type", "ls_index", "ttl", "authoritative", "key_id", "key"); } - M (LISP_EID_TABLE_DUMP, lisp_eid_table_dump); + M (ONE_EID_TABLE_DUMP, mp); mp->filter = filter; if (eid_set) @@ -14573,31 +15140,78 @@ api_lisp_eid_table_dump (vat_main_t * vam) } } - /* send it... */ - S; + /* send it... */ + S (mp); + + /* Use a control ping for synchronization */ + M (CONTROL_PING, mp_ping); + S (mp_ping); + + /* Wait for a reply... */ + W (ret); + return ret; +} + +#define api_lisp_eid_table_dump api_one_eid_table_dump + +static int +api_lisp_gpe_fwd_entries_get (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_gpe_fwd_entries_get_t *mp; + u8 vni_set = 0; + u32 vni = ~0; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "vni %d", &vni)) + { + vni_set = 1; + } + else + { + errmsg ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (!vni_set) + { + errmsg ("vni not set!"); + return -99; + } + + if (!vam->json_output) + { + print (vam->ofp, "%10s %10s %s %40s", "fwd_index", "dp_table", + "leid", "reid"); + } + + M (GPE_FWD_ENTRIES_GET, mp); + mp->vni = clib_host_to_net_u32 (vni); - /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } + /* send it... */ + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define vl_api_gpe_fwd_entries_get_reply_t_endian vl_noop_handler +#define vl_api_gpe_fwd_entries_get_reply_t_print vl_noop_handler +#define vl_api_gpe_fwd_entry_path_details_t_endian vl_noop_handler +#define vl_api_gpe_fwd_entry_path_details_t_print vl_noop_handler + static int -api_lisp_adjacencies_get (vat_main_t * vam) +api_one_adjacencies_get (vat_main_t * vam) { unformat_input_t *i = vam->input; - vl_api_lisp_adjacencies_get_t *mp; - f64 timeout = ~0; + vl_api_one_adjacencies_get_t *mp; u8 vni_set = 0; u32 vni = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -14623,126 +15237,165 @@ api_lisp_adjacencies_get (vat_main_t * vam) print (vam->ofp, "%s %40s", "leid", "reid"); } - M (LISP_ADJACENCIES_GET, lisp_adjacencies_get); + M (ONE_ADJACENCIES_GET, mp); mp->vni = clib_host_to_net_u32 (vni); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_adjacencies_get api_one_adjacencies_get + static int -api_lisp_map_server_dump (vat_main_t * vam) +api_one_map_server_dump (vat_main_t * vam) { - vl_api_lisp_map_server_dump_t *mp; - f64 timeout = ~0; + vl_api_one_map_server_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; if (!vam->json_output) { print (vam->ofp, "%=20s", "Map server"); } - M (LISP_MAP_SERVER_DUMP, lisp_map_server_dump); + M (ONE_MAP_SERVER_DUMP, mp); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_map_server_dump api_one_map_server_dump + static int -api_lisp_map_resolver_dump (vat_main_t * vam) +api_one_map_resolver_dump (vat_main_t * vam) { - vl_api_lisp_map_resolver_dump_t *mp; - f64 timeout = ~0; + vl_api_one_map_resolver_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; if (!vam->json_output) { print (vam->ofp, "%=20s", "Map resolver"); } - M (LISP_MAP_RESOLVER_DUMP, lisp_map_resolver_dump); + M (ONE_MAP_RESOLVER_DUMP, mp); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } +#define api_lisp_map_resolver_dump api_one_map_resolver_dump + static int -api_show_lisp_status (vat_main_t * vam) +api_show_one_status (vat_main_t * vam) { - vl_api_show_lisp_status_t *mp; - f64 timeout = ~0; + vl_api_show_one_status_t *mp; + int ret; if (!vam->json_output) { - print (vam->ofp, "%-20s%-16s", "lisp status", "locator-set"); + print (vam->ofp, "%-20s%-16s", "ONE status", "locator-set"); } - M (SHOW_LISP_STATUS, show_lisp_status); + M (SHOW_ONE_STATUS, mp); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; +} - /* NOTREACHED */ - return 0; +#define api_show_lisp_status api_show_one_status + +static int +api_lisp_gpe_fwd_entry_path_dump (vat_main_t * vam) +{ + vl_api_gpe_fwd_entry_path_dump_t *mp; + vl_api_control_ping_t *mp_ping; + unformat_input_t *i = vam->input; + u32 fwd_entry_index = ~0; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "index %d", &fwd_entry_index)) + ; + else + break; + } + + if (~0 == fwd_entry_index) + { + errmsg ("no index specified!"); + return -99; + } + + if (!vam->json_output) + { + print (vam->ofp, "first line"); + } + + M (GPE_FWD_ENTRY_PATH_DUMP, mp); + + /* send it... */ + S (mp); + /* Use a control ping for synchronization */ + M (CONTROL_PING, mp_ping); + S (mp_ping); + + /* Wait for a reply... */ + W (ret); + return ret; } static int -api_lisp_get_map_request_itr_rlocs (vat_main_t * vam) +api_one_get_map_request_itr_rlocs (vat_main_t * vam) { - vl_api_lisp_get_map_request_itr_rlocs_t *mp; - f64 timeout = ~0; + vl_api_one_get_map_request_itr_rlocs_t *mp; + int ret; if (!vam->json_output) { print (vam->ofp, "%=20s", "itr-rlocs:"); } - M (LISP_GET_MAP_REQUEST_ITR_RLOCS, lisp_get_map_request_itr_rlocs); + M (ONE_GET_MAP_REQUEST_ITR_RLOCS, mp); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; - - /* NOTREACHED */ - return 0; + W (ret); + return ret; } +#define api_lisp_get_map_request_itr_rlocs api_one_get_map_request_itr_rlocs + static int api_af_packet_create (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_af_packet_create_t *mp; - f64 timeout; u8 *host_if_name = 0; u8 hw_addr[6]; u8 random_hw_addr = 1; + int ret; memset (hw_addr, 0, sizeof (hw_addr)); @@ -14768,17 +15421,16 @@ api_af_packet_create (vat_main_t * vam) return -99; } - M (AF_PACKET_CREATE, af_packet_create); + M (AF_PACKET_CREATE, mp); clib_memcpy (mp->host_if_name, host_if_name, vec_len (host_if_name)); clib_memcpy (mp->hw_addr, hw_addr, 6); mp->use_random_hw_addr = random_hw_addr; vec_free (host_if_name); - S; - W2 (fprintf (vam->ofp, " new sw_if_index = %d ", vam->sw_if_index)); - /* NOTREACHED */ - return 0; + S (mp); + W2 (ret, fprintf (vam->ofp, " new sw_if_index = %d ", vam->sw_if_index)); + return ret; } static int @@ -14786,8 +15438,8 @@ api_af_packet_delete (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_af_packet_delete_t *mp; - f64 timeout; u8 *host_if_name = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -14809,15 +15461,14 @@ api_af_packet_delete (vat_main_t * vam) return -99; } - M (AF_PACKET_DELETE, af_packet_delete); + M (AF_PACKET_DELETE, mp); clib_memcpy (mp->host_if_name, host_if_name, vec_len (host_if_name)); vec_free (host_if_name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -14825,7 +15476,6 @@ api_policer_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_policer_add_del_t *mp; - f64 timeout; u8 is_add = 1; u8 *name = 0; u32 cir = 0; @@ -14837,6 +15487,7 @@ api_policer_add_del (vat_main_t * vam) u8 type = 0; u8 color_aware = 0; sse2_qos_pol_action_params_st conform_action, exceed_action, violate_action; + int ret; conform_action.action_type = SSE2_QOS_ACTION_TRANSMIT; conform_action.dscp = 0; @@ -14894,7 +15545,7 @@ api_policer_add_del (vat_main_t * vam) return -99; } - M (POLICER_ADD_DEL, policer_add_del); + M (POLICER_ADD_DEL, mp); clib_memcpy (mp->name, name, vec_len (name)); vec_free (name); @@ -14914,10 +15565,9 @@ api_policer_add_del (vat_main_t * vam) mp->violate_dscp = violate_action.dscp; mp->color_aware = color_aware; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -14925,9 +15575,10 @@ api_policer_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_policer_dump_t *mp; - f64 timeout = ~0; + vl_api_control_ping_t *mp_ping; u8 *match_name = 0; u8 match_name_valid = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -14940,24 +15591,20 @@ api_policer_dump (vat_main_t * vam) break; } - M (POLICER_DUMP, policer_dump); + M (POLICER_DUMP, mp); mp->match_name_valid = match_name_valid; clib_memcpy (mp->match_name, match_name, vec_len (match_name)); vec_free (match_name); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } static int @@ -14965,13 +15612,13 @@ api_policer_classify_set_interface (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_policer_classify_set_interface_t *mp; - f64 timeout; u32 sw_if_index; int sw_if_index_set; u32 ip4_table_index = ~0; u32 ip6_table_index = ~0; u32 l2_table_index = ~0; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -15000,7 +15647,7 @@ api_policer_classify_set_interface (vat_main_t * vam) return -99; } - M (POLICER_CLASSIFY_SET_INTERFACE, policer_classify_set_interface); + M (POLICER_CLASSIFY_SET_INTERFACE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->ip4_table_index = ntohl (ip4_table_index); @@ -15008,10 +15655,9 @@ api_policer_classify_set_interface (vat_main_t * vam) mp->l2_table_index = ntohl (l2_table_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -15019,8 +15665,9 @@ api_policer_classify_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_policer_classify_dump_t *mp; - f64 timeout = ~0; + vl_api_control_ping_t *mp_ping; u8 type = POLICER_CLASSIFY_N_TABLES; + int ret; if (unformat (i, "type %U", unformat_policer_classify_table_type, &type)) ; @@ -15035,22 +15682,18 @@ api_policer_classify_dump (vat_main_t * vam) print (vam->ofp, "%10s%20s", "Intfc idx", "Classify table"); } - M (POLICER_CLASSIFY_DUMP, policer_classify_dump); + M (POLICER_CLASSIFY_DUMP, mp); mp->type = type; /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } static int @@ -15058,12 +15701,12 @@ api_netmap_create (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_netmap_create_t *mp; - f64 timeout; u8 *if_name = 0; u8 hw_addr[6]; u8 random_hw_addr = 1; u8 is_pipe = 0; u8 is_master = 0; + int ret; memset (hw_addr, 0, sizeof (hw_addr)); @@ -15095,7 +15738,7 @@ api_netmap_create (vat_main_t * vam) return -99; } - M (NETMAP_CREATE, netmap_create); + M (NETMAP_CREATE, mp); clib_memcpy (mp->netmap_if_name, if_name, vec_len (if_name)); clib_memcpy (mp->hw_addr, hw_addr, 6); @@ -15104,10 +15747,9 @@ api_netmap_create (vat_main_t * vam) mp->is_master = is_master; vec_free (if_name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -15115,8 +15757,8 @@ api_netmap_delete (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_netmap_delete_t *mp; - f64 timeout; u8 *if_name = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -15138,15 +15780,14 @@ api_netmap_delete (vat_main_t * vam) return -99; } - M (NETMAP_DELETE, netmap_delete); + M (NETMAP_DELETE, mp); clib_memcpy (mp->netmap_if_name, if_name, vec_len (if_name)); vec_free (if_name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_mpls_tunnel_details_t_handler @@ -15202,8 +15843,9 @@ static int api_mpls_tunnel_dump (vat_main_t * vam) { vl_api_mpls_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; i32 index = -1; + int ret; /* Parse args required to build the message */ while (unformat_check_input (vam->input) != UNFORMAT_END_OF_INPUT) @@ -15217,17 +15859,16 @@ api_mpls_tunnel_dump (vat_main_t * vam) print (vam->ofp, " tunnel_index %d", index); - M (MPLS_TUNNEL_DUMP, mpls_tunnel_dump); + M (MPLS_TUNNEL_DUMP, mp); mp->tunnel_index = htonl (index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } #define vl_api_mpls_fib_details_t_endian vl_noop_handler @@ -15315,18 +15956,18 @@ static int api_mpls_fib_dump (vat_main_t * vam) { vl_api_mpls_fib_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; - M (MPLS_FIB_DUMP, mpls_fib_dump); - S; + M (MPLS_FIB_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } #define vl_api_ip_fib_details_t_endian vl_noop_handler @@ -15416,18 +16057,36 @@ static int api_ip_fib_dump (vat_main_t * vam) { vl_api_ip_fib_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; - M (IP_FIB_DUMP, ip_fib_dump); - S; + M (IP_FIB_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; +} + +static int +api_ip_mfib_dump (vat_main_t * vam) +{ + vl_api_ip_mfib_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; + + M (IP_MFIB_DUMP, mp); + S (mp); + + /* Use a control ping for synchronization */ + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static void vl_api_ip_neighbor_details_t_handler @@ -15484,9 +16143,10 @@ api_ip_neighbor_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ip_neighbor_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u8 is_ipv6 = 0; u32 sw_if_index = ~0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -15507,18 +16167,17 @@ api_ip_neighbor_dump (vat_main_t * vam) return -99; } - M (IP_NEIGHBOR_DUMP, ip_neighbor_dump); + M (IP_NEIGHBOR_DUMP, mp); mp->is_ipv6 = (u8) is_ipv6; mp->sw_if_index = ntohl (sw_if_index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } #define vl_api_ip6_fib_details_t_endian vl_noop_handler @@ -15608,34 +16267,51 @@ static int api_ip6_fib_dump (vat_main_t * vam) { vl_api_ip6_fib_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; - M (IP6_FIB_DUMP, ip6_fib_dump); - S; + M (IP6_FIB_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; +} + +static int +api_ip6_mfib_dump (vat_main_t * vam) +{ + vl_api_ip6_mfib_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; + + M (IP6_MFIB_DUMP, mp); + S (mp); + + /* Use a control ping for synchronization */ + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } int api_classify_table_ids (vat_main_t * vam) { vl_api_classify_table_ids_t *mp; - f64 timeout; + int ret; /* Construct the API message */ - M (CLASSIFY_TABLE_IDS, classify_table_ids); + M (CLASSIFY_TABLE_IDS, mp); mp->context = 0; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -15643,9 +16319,9 @@ api_classify_table_by_interface (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_classify_table_by_interface_t *mp; - f64 timeout; u32 sw_if_index = ~0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "%U", api_unformat_sw_if_index, vam, &sw_if_index)) @@ -15662,14 +16338,13 @@ api_classify_table_by_interface (vat_main_t * vam) } /* Construct the API message */ - M (CLASSIFY_TABLE_BY_INTERFACE, classify_table_by_interface); + M (CLASSIFY_TABLE_BY_INTERFACE, mp); mp->context = 0; mp->sw_if_index = ntohl (sw_if_index); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -15677,9 +16352,9 @@ api_classify_table_info (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_classify_table_info_t *mp; - f64 timeout; u32 table_id = ~0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "table_id %d", &table_id)) @@ -15694,14 +16369,13 @@ api_classify_table_info (vat_main_t * vam) } /* Construct the API message */ - M (CLASSIFY_TABLE_INFO, classify_table_info); + M (CLASSIFY_TABLE_INFO, mp); mp->context = 0; mp->table_id = ntohl (table_id); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -15709,9 +16383,10 @@ api_classify_session_dump (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_classify_session_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 table_id = ~0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "table_id %d", &table_id)) @@ -15726,20 +16401,17 @@ api_classify_session_dump (vat_main_t * vam) } /* Construct the API message */ - M (CLASSIFY_SESSION_DUMP, classify_session_dump); + M (CLASSIFY_SESSION_DUMP, mp); mp->context = 0; mp->table_id = ntohl (table_id); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; - /* NOTREACHED */ - return 0; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static void @@ -15793,30 +16465,30 @@ int api_ipfix_exporter_dump (vat_main_t * vam) { vl_api_ipfix_exporter_dump_t *mp; - f64 timeout; + int ret; /* Construct the API message */ - M (IPFIX_EXPORTER_DUMP, ipfix_exporter_dump); + M (IPFIX_EXPORTER_DUMP, mp); mp->context = 0; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int api_ipfix_classify_stream_dump (vat_main_t * vam) { vl_api_ipfix_classify_stream_dump_t *mp; - f64 timeout; + int ret; /* Construct the API message */ - M (IPFIX_CLASSIFY_STREAM_DUMP, ipfix_classify_stream_dump); + M (IPFIX_CLASSIFY_STREAM_DUMP, mp); mp->context = 0; - S; - W; + S (mp); + W (ret); + return ret; /* NOTREACHED */ return 0; } @@ -15853,7 +16525,8 @@ static int api_ipfix_classify_table_dump (vat_main_t * vam) { vl_api_ipfix_classify_table_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; if (!vam->json_output) { @@ -15862,18 +16535,17 @@ api_ipfix_classify_table_dump (vat_main_t * vam) } /* Construct the API message */ - M (IPFIX_CLASSIFY_TABLE_DUMP, ipfix_classify_table_dump); + M (IPFIX_CLASSIFY_TABLE_DUMP, mp); /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static void @@ -15912,10 +16584,10 @@ api_sw_interface_span_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_span_enable_disable_t *mp; - f64 timeout; u32 src_sw_if_index = ~0; u32 dst_sw_if_index = ~0; u8 state = 3; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -15942,16 +16614,15 @@ api_sw_interface_span_enable_disable (vat_main_t * vam) break; } - M (SW_INTERFACE_SPAN_ENABLE_DISABLE, sw_interface_span_enable_disable); + M (SW_INTERFACE_SPAN_ENABLE_DISABLE, mp); mp->sw_if_index_from = htonl (src_sw_if_index); mp->sw_if_index_to = htonl (dst_sw_if_index); mp->state = state; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void @@ -16028,7 +16699,10 @@ static void vat_json_object_add_uint (node, "src-if-index", sw_if_index_from); vat_json_object_add_string_copy (node, "src-if-name", sw_if_from_name); vat_json_object_add_uint (node, "dst-if-index", sw_if_index_to); - vat_json_object_add_string_copy (node, "dst-if-name", sw_if_to_name); + if (0 != sw_if_to_name) + { + vat_json_object_add_string_copy (node, "dst-if-name", sw_if_to_name); + } vat_json_object_add_uint (node, "state", mp->state); } @@ -16036,18 +16710,18 @@ static int api_sw_interface_span_dump (vat_main_t * vam) { vl_api_sw_interface_span_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; - M (SW_INTERFACE_SPAN_DUMP, sw_interface_span_dump); - S; + M (SW_INTERFACE_SPAN_DUMP, mp); + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } int @@ -16055,9 +16729,9 @@ api_pg_create_interface (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_pg_create_interface_t *mp; - f64 timeout; u32 if_id = ~0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "if_id %d", &if_id)) @@ -16072,14 +16746,13 @@ api_pg_create_interface (vat_main_t * vam) } /* Construct the API message */ - M (PG_CREATE_INTERFACE, pg_create_interface); + M (PG_CREATE_INTERFACE, mp); mp->context = 0; mp->interface_id = ntohl (if_id); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -16087,13 +16760,13 @@ api_pg_capture (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_pg_capture_t *mp; - f64 timeout; u32 if_id = ~0; u8 enable = 1; u32 count = 1; u8 pcap_file_set = 0; u8 *pcap_file = 0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "if_id %d", &if_id)) @@ -16123,7 +16796,7 @@ api_pg_capture (vat_main_t * vam) u32 name_len = vec_len (pcap_file); /* Construct the API message */ - M (PG_CAPTURE, pg_capture); + M (PG_CAPTURE, mp); mp->context = 0; mp->interface_id = ntohl (if_id); mp->is_enabled = enable; @@ -16135,10 +16808,9 @@ api_pg_capture (vat_main_t * vam) } vec_free (pcap_file); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -16146,11 +16818,11 @@ api_pg_enable_disable (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_pg_enable_disable_t *mp; - f64 timeout; u8 enable = 1; u8 stream_name_set = 0; u8 *stream_name = 0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "stream %s", &stream_name)) @@ -16172,7 +16844,7 @@ api_pg_enable_disable (vat_main_t * vam) u32 name_len = vec_len (stream_name); /* Construct the API message */ - M (PG_ENABLE_DISABLE, pg_enable_disable); + M (PG_ENABLE_DISABLE, mp); mp->context = 0; mp->is_enabled = enable; if (stream_name_set != 0) @@ -16182,10 +16854,9 @@ api_pg_enable_disable (vat_main_t * vam) } vec_free (stream_name); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -16193,7 +16864,6 @@ api_ip_source_and_port_range_check_add_del (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_ip_source_and_port_range_check_add_del_t *mp; - f64 timeout; u16 *low_ports = 0; u16 *high_ports = 0; @@ -16207,6 +16877,7 @@ api_ip_source_and_port_range_check_add_del (vat_main_t * vam) u32 vrf_id = ~0; u8 is_add = 1; u8 is_ipv6 = 0; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -16287,8 +16958,7 @@ api_ip_source_and_port_range_check_add_del (vat_main_t * vam) return -99; } - M (IP_SOURCE_AND_PORT_RANGE_CHECK_ADD_DEL, - ip_source_and_port_range_check_add_del); + M (IP_SOURCE_AND_PORT_RANGE_CHECK_ADD_DEL, mp); mp->is_add = is_add; @@ -16314,10 +16984,9 @@ api_ip_source_and_port_range_check_add_del (vat_main_t * vam) mp->vrf_id = ntohl (vrf_id); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } int @@ -16325,12 +16994,12 @@ api_ip_source_and_port_range_check_interface_add_del (vat_main_t * vam) { unformat_input_t *input = vam->input; vl_api_ip_source_and_port_range_check_interface_add_del_t *mp; - f64 timeout; u32 sw_if_index = ~0; int vrf_set = 0; u32 tcp_out_vrf_id = ~0, udp_out_vrf_id = ~0; u32 tcp_in_vrf_id = ~0, udp_in_vrf_id = ~0; u8 is_add = 1; + int ret; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -16373,8 +17042,7 @@ api_ip_source_and_port_range_check_interface_add_del (vat_main_t * vam) } /* Construct the API message */ - M (IP_SOURCE_AND_PORT_RANGE_CHECK_INTERFACE_ADD_DEL, - ip_source_and_port_range_check_interface_add_del); + M (IP_SOURCE_AND_PORT_RANGE_CHECK_INTERFACE_ADD_DEL, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_add = is_add; @@ -16384,10 +17052,11 @@ api_ip_source_and_port_range_check_interface_add_del (vat_main_t * vam) mp->udp_in_vrf_id = ntohl (udp_in_vrf_id); /* send it... */ - S; + S (mp); /* Wait for a reply... */ - W; + W (ret); + return ret; } static int @@ -16395,12 +17064,12 @@ api_ipsec_gre_add_del_tunnel (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_gre_add_del_tunnel_t *mp; - f64 timeout; u32 local_sa_id = 0; u32 remote_sa_id = 0; ip4_address_t src_address; ip4_address_t dst_address; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16421,7 +17090,7 @@ api_ipsec_gre_add_del_tunnel (vat_main_t * vam) } } - M (IPSEC_GRE_ADD_DEL_TUNNEL, ipsec_gre_add_del_tunnel); + M (IPSEC_GRE_ADD_DEL_TUNNEL, mp); mp->local_sa_id = ntohl (local_sa_id); mp->remote_sa_id = ntohl (remote_sa_id); @@ -16429,10 +17098,9 @@ api_ipsec_gre_add_del_tunnel (vat_main_t * vam) clib_memcpy (mp->dst_address, &dst_address, sizeof (dst_address)); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -16440,11 +17108,11 @@ api_punt (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_punt_t *mp; - f64 timeout; u32 ipv = ~0; u32 protocol = ~0; u32 port = ~0; int is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16463,17 +17131,16 @@ api_punt (vat_main_t * vam) } } - M (PUNT, punt); + M (PUNT, mp); mp->is_add = (u8) is_add; mp->ipv = (u8) ipv; mp->l4_protocol = (u8) protocol; mp->l4_port = htons ((u16) port); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static void vl_api_ipsec_gre_tunnel_details_t_handler @@ -16517,9 +17184,10 @@ api_ipsec_gre_tunnel_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_ipsec_gre_tunnel_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; u32 sw_if_index; u8 sw_if_index_set = 0; + int ret; /* Parse args required to build the message */ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -16543,19 +17211,18 @@ api_ipsec_gre_tunnel_dump (vat_main_t * vam) } /* Get list of gre-tunnel interfaces */ - M (IPSEC_GRE_TUNNEL_DUMP, ipsec_gre_tunnel_dump); + M (IPSEC_GRE_TUNNEL_DUMP, mp); mp->sw_if_index = htonl (sw_if_index); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -16563,8 +17230,8 @@ api_delete_subif (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_delete_subif_t *mp; - f64 timeout; u32 sw_if_index = ~0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16583,11 +17250,12 @@ api_delete_subif (vat_main_t * vam) } /* Construct the API message */ - M (DELETE_SUBIF, delete_subif); + M (DELETE_SUBIF, mp); mp->sw_if_index = ntohl (sw_if_index); - S; - W; + S (mp); + W (ret); + return ret; } #define foreach_pbb_vtr_op \ @@ -16600,7 +17268,6 @@ api_l2_interface_pbb_tag_rewrite (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_l2_interface_pbb_tag_rewrite_t *mp; - f64 timeout; u32 sw_if_index = ~0, vtr_op = ~0; u16 outer_tag = ~0; u8 dmac[6], smac[6]; @@ -16608,6 +17275,7 @@ api_l2_interface_pbb_tag_rewrite (vat_main_t * vam) u16 vlanid = 0; u32 sid = ~0; u32 tmp; + int ret; /* Shut up coverity */ memset (dmac, 0, sizeof (dmac)); @@ -16666,7 +17334,7 @@ api_l2_interface_pbb_tag_rewrite (vat_main_t * vam) return -99; } - M (L2_INTERFACE_PBB_TAG_REWRITE, l2_interface_pbb_tag_rewrite); + M (L2_INTERFACE_PBB_TAG_REWRITE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->vtr_op = ntohl (vtr_op); mp->outer_tag = ntohs (outer_tag); @@ -16675,10 +17343,9 @@ api_l2_interface_pbb_tag_rewrite (vat_main_t * vam) mp->b_vlanid = ntohs (vlanid); mp->i_sid = ntohl (sid); - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -16686,12 +17353,12 @@ api_flow_classify_set_interface (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_flow_classify_set_interface_t *mp; - f64 timeout; u32 sw_if_index; int sw_if_index_set; u32 ip4_table_index = ~0; u32 ip6_table_index = ~0; u8 is_add = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16718,17 +17385,16 @@ api_flow_classify_set_interface (vat_main_t * vam) return -99; } - M (FLOW_CLASSIFY_SET_INTERFACE, flow_classify_set_interface); + M (FLOW_CLASSIFY_SET_INTERFACE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->ip4_table_index = ntohl (ip4_table_index); mp->ip6_table_index = ntohl (ip6_table_index); mp->is_add = is_add; - S; - W; - /* NOTREACHED */ - return 0; + S (mp); + W (ret); + return ret; } static int @@ -16736,8 +17402,9 @@ api_flow_classify_dump (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_flow_classify_dump_t *mp; - f64 timeout = ~0; + vl_api_control_ping_t *mp_ping; u8 type = FLOW_CLASSIFY_N_TABLES; + int ret; if (unformat (i, "type %U", unformat_flow_classify_table_type, &type)) ; @@ -16752,22 +17419,18 @@ api_flow_classify_dump (vat_main_t * vam) print (vam->ofp, "%10s%20s", "Intfc idx", "Classify table"); } - M (FLOW_CLASSIFY_DUMP, flow_classify_dump); + M (FLOW_CLASSIFY_DUMP, mp); mp->type = type; /* send it... */ - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - /* Wait for a reply... */ - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); - /* NOTREACHED */ - return 0; + /* Wait for a reply... */ + W (ret); + return ret; } static int @@ -16775,11 +17438,11 @@ api_feature_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_feature_enable_disable_t *mp; - f64 timeout; u8 *arc_name = 0; u8 *feature_name = 0; u32 sw_if_index = ~0; u8 enable = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16825,7 +17488,7 @@ api_feature_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (FEATURE_ENABLE_DISABLE, feature_enable_disable); + M (FEATURE_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = enable; clib_memcpy (mp->arc_name, arc_name, vec_len (arc_name)); @@ -16833,8 +17496,9 @@ api_feature_enable_disable (vat_main_t * vam) vec_free (arc_name); vec_free (feature_name); - S; - W; + S (mp); + W (ret); + return ret; } static int @@ -16842,10 +17506,10 @@ api_sw_interface_tag_add_del (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_tag_add_del_t *mp; - f64 timeout; u32 sw_if_index = ~0; u8 *tag = 0; u8 enable = 1; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16874,15 +17538,16 @@ api_sw_interface_tag_add_del (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_TAG_ADD_DEL, sw_interface_tag_add_del); + M (SW_INTERFACE_TAG_ADD_DEL, mp); mp->sw_if_index = ntohl (sw_if_index); mp->is_add = enable; if (enable) strncpy ((char *) mp->tag, (char *) tag, ARRAY_LEN (mp->tag) - 1); vec_free (tag); - S; - W; + S (mp); + W (ret); + return ret; } static void vl_api_l2_xconnect_details_t_handler @@ -16918,24 +17583,24 @@ static int api_l2_xconnect_dump (vat_main_t * vam) { vl_api_l2_xconnect_dump_t *mp; - f64 timeout; + vl_api_control_ping_t *mp_ping; + int ret; if (!vam->json_output) { print (vam->ofp, "%15s%15s", "rx_sw_if_index", "tx_sw_if_index"); } - M (L2_XCONNECT_DUMP, l2_xconnect_dump); + M (L2_XCONNECT_DUMP, mp); - S; + S (mp); /* Use a control ping for synchronization */ - { - vl_api_control_ping_t *mp; - M (CONTROL_PING, control_ping); - S; - } - W; + M (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; } static int @@ -16943,9 +17608,9 @@ api_sw_interface_set_mtu (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_sw_interface_set_mtu_t *mp; - f64 timeout; u32 sw_if_index = ~0; u32 mtu = 0; + int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { @@ -16972,19 +17637,22 @@ api_sw_interface_set_mtu (vat_main_t * vam) } /* Construct the API message */ - M (SW_INTERFACE_SET_MTU, sw_interface_set_mtu); + M (SW_INTERFACE_SET_MTU, mp); mp->sw_if_index = ntohl (sw_if_index); mp->mtu = ntohs ((u16) mtu); - S; - W; + S (mp); + W (ret); + return ret; } static int q_or_quit (vat_main_t * vam) { +#if VPP_API_TEST_BUILTIN == 0 longjmp (vam->jump_buf, 1); +#endif return 0; /* not so much */ } @@ -17358,7 +18026,7 @@ _(sw_interface_set_mpls_enable, \ _(sw_interface_set_vpath, \ " | sw_if_index enable | disable") \ _(sw_interface_set_vxlan_bypass, \ - " | sw_if_index [ip4 | ip6] enable | disable") \ + " | sw_if_index [ip4 | ip6] [enable | disable]") \ _(sw_interface_set_l2_xconnect, \ "rx | rx_sw_if_index tx | tx_sw_if_index \n" \ "enable | disable") \ @@ -17387,6 +18055,9 @@ _(ip_add_del_route, \ "[ | sw_if_index ] [resolve-attempts ]\n" \ "[weight ] [drop] [local] [classify ] [del]\n" \ "[multipath] [count ]") \ +_(ip_mroute_add_del, \ + " / [table-id ]\n" \ + "[ | sw_if_index ] [local] [del]") \ _(mpls_route_add_del, \ "