X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vpp-api-test%2Fvat%2Fapi_format.c;h=c992d19758c252959a3b8d08894a20f01e0a6a24;hb=324112fad06e0461958f22827f944595466e1891;hp=410bab50b3141e9c6aa14a92664f483ed6c89f3f;hpb=86be48773c1833129317a3a0d6fe8165eb69ac3f;p=vpp.git diff --git a/vpp-api-test/vat/api_format.c b/vpp-api-test/vat/api_format.c index 410bab50b31..c992d19758c 100644 --- a/vpp-api-test/vat/api_format.c +++ b/vpp-api-test/vat/api_format.c @@ -533,8 +533,9 @@ static void vl_api_create_loopback_reply_t_handler i32 retval = ntohl(mp->retval); vam->retval = retval; - vam->result_ready = 1; vam->regenerate_interface_table = 1; + vam->sw_if_index = ntohl (mp->sw_if_index); + vam->result_ready = 1; } static void vl_api_create_loopback_reply_t_handler_json @@ -547,6 +548,34 @@ static void vl_api_create_loopback_reply_t_handler_json vat_json_object_add_int(&node, "retval", ntohl(mp->retval)); vat_json_object_add_uint(&node, "sw_if_index", ntohl(mp->sw_if_index)); + vat_json_print(vam->ofp, &node); + vat_json_free(&node); + vam->retval = ntohl(mp->retval); + vam->result_ready = 1; +} + +static void vl_api_af_packet_create_reply_t_handler +(vl_api_af_packet_create_reply_t * mp) +{ + vat_main_t * vam = &vat_main; + i32 retval = ntohl(mp->retval); + + vam->retval = retval; + vam->regenerate_interface_table = 1; + vam->sw_if_index = ntohl (mp->sw_if_index); + vam->result_ready = 1; +} + +static void vl_api_af_packet_create_reply_t_handler_json +(vl_api_af_packet_create_reply_t * mp) +{ + vat_main_t * vam = &vat_main; + vat_json_node_t node; + + vat_json_init_object(&node); + vat_json_object_add_int(&node, "retval", ntohl(mp->retval)); + vat_json_object_add_uint(&node, "sw_if_index", ntohl(mp->sw_if_index)); + vat_json_print(vam->ofp, &node); vat_json_free(&node); @@ -561,8 +590,9 @@ static void vl_api_create_vlan_subif_reply_t_handler i32 retval = ntohl(mp->retval); vam->retval = retval; - vam->result_ready = 1; vam->regenerate_interface_table = 1; + vam->sw_if_index = ntohl (mp->sw_if_index); + vam->result_ready = 1; } static void vl_api_create_vlan_subif_reply_t_handler_json @@ -589,8 +619,9 @@ static void vl_api_create_subif_reply_t_handler i32 retval = ntohl(mp->retval); vam->retval = retval; - vam->result_ready = 1; vam->regenerate_interface_table = 1; + vam->sw_if_index = ntohl (mp->sw_if_index); + vam->result_ready = 1; } static void vl_api_create_subif_reply_t_handler_json @@ -617,8 +648,8 @@ static void vl_api_interface_name_renumber_reply_t_handler i32 retval = ntohl(mp->retval); vam->retval = retval; - vam->result_ready = 1; vam->regenerate_interface_table = 1; + vam->result_ready = 1; } static void vl_api_interface_name_renumber_reply_t_handler_json @@ -784,7 +815,6 @@ static void vl_api_classify_add_del_table_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; - vam->result_ready = 1; if (retval == 0 && ((mp->new_table_index != 0xFFFFFFFF) || (mp->skip_n_vectors != 0xFFFFFFFF) || @@ -796,6 +826,7 @@ static void vl_api_classify_add_del_table_reply_t_handler errmsg ("new index %d, skip_n_vectors %d, match_n_vectors %d\n", ntohl(mp->new_table_index), ntohl(mp->skip_n_vectors), ntohl(mp->match_n_vectors)); + vam->result_ready = 1; } } @@ -827,9 +858,9 @@ static void vl_api_get_node_index_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; - vam->result_ready = 1; if (retval == 0) errmsg ("node index %d\n", ntohl(mp->node_index)); + vam->result_ready = 1; } } @@ -859,9 +890,9 @@ static void vl_api_add_node_next_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; - vam->result_ready = 1; if (retval == 0) errmsg ("next index %d\n", ntohl(mp->next_index)); + vam->result_ready = 1; } } @@ -1159,8 +1190,10 @@ static void vl_api_tap_connect_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; - vam->result_ready = 1; + vam->sw_if_index = ntohl (mp->sw_if_index); + vam->result_ready = 1; } + } static void vl_api_tap_connect_reply_t_handler_json @@ -1178,6 +1211,7 @@ static void vl_api_tap_connect_reply_t_handler_json vam->retval = ntohl(mp->retval); vam->result_ready = 1; + } static void vl_api_tap_modify_reply_t_handler @@ -1189,6 +1223,7 @@ static void vl_api_tap_modify_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; + vam->sw_if_index = ntohl (mp->sw_if_index); vam->result_ready = 1; } } @@ -1278,6 +1313,7 @@ static void vl_api_l2tpv3_create_tunnel_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; + vam->sw_if_index = ntohl (mp->sw_if_index); vam->result_ready = 1; } } @@ -1308,6 +1344,7 @@ static void vl_api_vxlan_add_del_tunnel_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; + vam->sw_if_index = ntohl (mp->sw_if_index); vam->result_ready = 1; } } @@ -1338,6 +1375,7 @@ static void vl_api_gre_add_del_tunnel_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; + vam->sw_if_index = ntohl (mp->sw_if_index); vam->result_ready = 1; } } @@ -1368,6 +1406,7 @@ static void vl_api_create_vhost_user_if_reply_t_handler vam->async_errors += (retval < 0); } else { vam->retval = retval; + vam->sw_if_index = ntohl (mp->sw_if_index); vam->result_ready = 1; } } @@ -1945,7 +1984,8 @@ vl_api_lisp_local_eid_table_details_t_handler ( vat_main_t *vam = &vat_main; u8 *prefix; - prefix = format(0, "%U/%d", + prefix = format(0, "[&d] %U/%d", + clib_net_to_host_u32 (mp->vni), mp->eid_is_ipv6 ? format_ip6_address : format_ip4_address, mp->eid_ip_address, mp->eid_prefix_len); @@ -1980,6 +2020,7 @@ vl_api_lisp_local_eid_table_details_t_handler_json ( clib_memcpy(&ip4, mp->eid_ip_address, sizeof(ip4)); vat_json_object_add_ip4(node, "eid address", ip4); } + vat_json_object_add_uint(node, "vni", clib_net_to_host_u32 (mp->vni)); vat_json_object_add_uint(node, "eid prefix len", mp->eid_prefix_len); } @@ -2155,6 +2196,45 @@ vl_api_lisp_enable_disable_status_details_t_handler_json vec_free (feature_status); } +static void +vl_api_lisp_get_map_request_itr_rlocs_reply_t_handler ( + vl_api_lisp_get_map_request_itr_rlocs_reply_t * mp) +{ + vat_main_t * vam = &vat_main; + i32 retval = ntohl(mp->retval); + + if (retval >= 0) { + fformat(vam->ofp, "%=20s\n", + mp->locator_set_name); + } + + vam->retval = retval; + vam->result_ready = 1; +} + +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) +{ + vat_main_t * vam = &vat_main; + vat_json_node_t * node = NULL; + + 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); + vat_json_object_add_string_copy(node, "itr-rlocs", mp->locator_set_name); + + vat_json_print(vam->ofp, node); + vat_json_free(node); + + vam->retval = ntohl(mp->retval); + vam->result_ready = 1; +} + static u8 * format_policer_type (u8 * s, va_list * va) { u32 i = va_arg (*va, u32); @@ -2370,8 +2450,9 @@ _(lisp_gpe_enable_disable_reply) \ _(lisp_gpe_add_del_iface_reply) \ _(lisp_enable_disable_reply) \ _(lisp_pitr_set_locator_set_reply) \ +_(lisp_add_del_map_request_itr_rlocs_reply) \ +_(lisp_eid_table_add_del_map_reply) \ _(vxlan_gpe_add_del_tunnel_reply) \ -_(af_packet_create_reply) \ _(af_packet_delete_reply) \ _(policer_add_del_reply) \ _(netmap_create_reply) \ @@ -2549,6 +2630,7 @@ _(LISP_ADD_DEL_MAP_RESOLVER_REPLY, lisp_add_del_map_resolver_reply) \ _(LISP_GPE_ENABLE_DISABLE_REPLY, lisp_gpe_enable_disable_reply) \ _(LISP_ENABLE_DISABLE_REPLY, lisp_enable_disable_reply) \ _(LISP_PITR_SET_LOCATOR_SET_REPLY, lisp_pitr_set_locator_set_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_LOCAL_EID_TABLE_DETAILS, lisp_local_eid_table_details) \ @@ -2556,6 +2638,10 @@ _(LISP_GPE_TUNNEL_DETAILS, lisp_gpe_tunnel_details) \ _(LISP_MAP_RESOLVER_DETAILS, lisp_map_resolver_details) \ _(LISP_ENABLE_DISABLE_STATUS_DETAILS, \ lisp_enable_disable_status_details) \ +_(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) \ _(AF_PACKET_CREATE_REPLY, af_packet_create_reply) \ _(AF_PACKET_DELETE_REPLY, af_packet_delete_reply) \ _(POLICER_ADD_DEL_REPLY, policer_add_del_reply) \ @@ -2600,6 +2686,20 @@ do { \ return -99; \ } while(0); +/* W2: wait for results, with timeout */ +#define W2(body) \ +do { \ + timeout = vat_time_now (vam) + 1.0; \ + \ + while (vat_time_now (vam) < timeout) { \ + if (vam->result_ready == 1) { \ + (body); \ + return (vam->retval); \ + } \ + } \ + return -99; \ +} while(0); + typedef struct { u8 * name; u32 value; @@ -3116,6 +3216,13 @@ int api_sw_interface_dump (vat_main_t * vam) strncpy ((char *) mp->name_filter, "lo", sizeof(mp->name_filter)-1); S; + + /* and vxlan-gpe tunnel interfaces */ + M(SW_INTERFACE_DUMP, sw_interface_dump); + mp->name_filter_valid = 1; + strncpy ((char *) mp->name_filter, "vxlan_gpe", sizeof(mp->name_filter)-1); + S; + /* and vxlan tunnel interfaces */ M(SW_INTERFACE_DUMP, sw_interface_dump); mp->name_filter_valid = 1; @@ -9807,11 +9914,14 @@ api_lisp_add_del_local_eid(vat_main_t * vam) u8 eid_lenght = ~0; u8 *locator_set_name = NULL; u8 locator_set_name_set = 0; + u32 vni = 0; /* Parse args required to build the message */ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat(input, "del")) { is_add = 0; + } else if (unformat(input, "vni &d", &vni)) { + ; } else if (unformat(input, "eid %U/%d", unformat_ip4_address, &eidv4, &tmp_eid_lenght)) { eid_lenght = tmp_eid_lenght; @@ -9874,6 +9984,7 @@ api_lisp_add_del_local_eid(vat_main_t * vam) clib_memcpy(mp->ip_address, &eidv4, sizeof(eidv4)); } mp->prefix_len = eid_lenght; + mp->vni = clib_host_to_net_u32(vni); clib_memcpy(mp->locator_set_name, locator_set_name, vec_len(locator_set_name)); vec_free(locator_set_name); @@ -10195,6 +10306,53 @@ api_lisp_pitr_set_locator_set (vat_main_t * vam) return 0; } +/** + * Add/delete mapping between vni and vrf + */ +static int +api_lisp_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; + u8 is_add = 1, vni_set = 0, vrf_set = 0; + u32 vni, vrf; + + /* Parse args required to build the message */ + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (input, "del")) + is_add = 0; + else if (unformat(input, "vrf %d", &vrf)) + vrf_set = 1; + else if (unformat(input, "vni %d", &vni)) + vni_set = 1; + else + break; + } + + if (!vni_set || !vrf_set) + { + errmsg ("missing arguments!"); + return -99; + } + + M(LISP_EID_TABLE_ADD_DEL_MAP, lisp_eid_table_add_del_map); + + mp->is_add = is_add; + mp->vni = htonl (vni); + mp->vrf = htonl (vrf); + + /* send */ + S; + + /* wait for reply */ + W; + + /* notreached*/ + return 0; +} + /** * Add/del remote mapping from LISP control plane and updates * forwarding entries in data-plane accordingly. @@ -10365,6 +10523,65 @@ api_lisp_gpe_add_del_iface(vat_main_t * vam) return 0; } +/** + * Add/del map request itr rlocs from LISP 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) +{ + unformat_input_t * input = vam->input; + vl_api_lisp_add_del_map_request_itr_rlocs_t *mp; + f64 timeout = ~0; + u8 *locator_set_name = 0; + u8 locator_set_name_set = 0; + u8 is_add = 1; + + /* Parse args required to build the message */ + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { + if (unformat(input, "del")) { + is_add = 0; + } else if (unformat(input, "%_%v%_", &locator_set_name)) { + locator_set_name_set = 1; + } else { + clib_warning ("parse error '%U'", format_unformat_error, input); + return -99; + } + } + + if (is_add && !locator_set_name_set) { + errmsg ("itr-rloc is not set!"); + return -99; + } + + if (is_add && vec_len(locator_set_name) > 64) { + errmsg ("itr-rloc locator-set name too long\n"); + vec_free(locator_set_name); + return -99; + } + + M(LISP_ADD_DEL_MAP_REQUEST_ITR_RLOCS, lisp_add_del_map_request_itr_rlocs); + mp->is_add = is_add; + if (is_add) { + clib_memcpy (mp->locator_set_name , locator_set_name, + vec_len(locator_set_name)); + } else { + memset(mp->locator_set_name, 0, sizeof(mp->locator_set_name)); + } + vec_free (locator_set_name); + + /* send it... */ + S; + + /* Wait for a reply... */ + W; + + /* NOTREACHED */ + return 0; +} + static int api_lisp_locator_set_dump(vat_main_t *vam) { @@ -10509,6 +10726,27 @@ api_lisp_enable_disable_status_dump(vat_main_t *vam) return 0; } +static int +api_lisp_get_map_request_itr_rlocs(vat_main_t *vam) +{ + vl_api_lisp_get_map_request_itr_rlocs_t *mp; + f64 timeout = ~0; + + if (!vam->json_output) { + fformat(vam->ofp, "%=20s\n", + "itr-rlocs:"); + } + + M(LISP_GET_MAP_REQUEST_ITR_RLOCS, lisp_get_map_request_itr_rlocs); + /* send it... */ + S; + /* Wait for a reply... */ + W; + + /* NOTREACHED */ + return 0; +} + static int api_af_packet_create (vat_main_t * vam) { @@ -10547,7 +10785,7 @@ api_af_packet_create (vat_main_t * vam) mp->use_random_hw_addr = random_hw_addr; vec_free (host_if_name); - S; W; + S; W2(fprintf(vam->ofp," new sw_if_index = %d ", vam->sw_if_index)); /* NOTREACHED */ return 0; } @@ -11263,11 +11501,14 @@ _(lisp_add_del_remote_mapping, "add|del vni table-id " \ " rloc " \ "[rloc ... ]") \ _(lisp_pitr_set_locator_set, "locator-set | del") \ +_(lisp_add_del_map_request_itr_rlocs, " [del]") \ +_(lisp_eid_table_add_del_map, "[del] vni vrf ") \ _(lisp_locator_set_dump, "") \ _(lisp_local_eid_table_dump, "") \ _(lisp_gpe_tunnel_dump, "") \ _(lisp_map_resolver_dump, "") \ _(lisp_enable_disable_status_dump, "") \ +_(lisp_get_map_request_itr_rlocs, "") \ _(af_packet_create, "name [hw_addr ]") \ _(af_packet_delete, "name ") \ _(policer_add_del, "name [del]") \