X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fapi_format.c;h=850fe56609d8fe845fab15d978f4d7bbe2b431bc;hb=5d82d2f1495e189c4687a6462850cbbb3ea38b17;hp=14f66c31fa7c70679f5f637c5d278622301fc469;hpb=3337bd22002e9b78459082c34f7b78370b177eb0;p=vpp.git diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 14f66c31fa7..850fe56609d 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -2615,99 +2614,6 @@ vl_api_ip_details_t_handler_json (vl_api_ip_details_t * mp) clib_net_to_host_u32 (mp->sw_if_index)); } -static void vl_api_map_domain_details_t_handler_json - (vl_api_map_domain_details_t * mp) -{ - vat_json_node_t *node = NULL; - vat_main_t *vam = &vat_main; - struct in6_addr ip6; - struct in_addr ip4; - - 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_uint (node, "domain_index", - clib_net_to_host_u32 (mp->domain_index)); - clib_memcpy (&ip6, mp->ip6_prefix, sizeof (ip6)); - vat_json_object_add_ip6 (node, "ip6_prefix", ip6); - clib_memcpy (&ip4, mp->ip4_prefix, sizeof (ip4)); - vat_json_object_add_ip4 (node, "ip4_prefix", ip4); - clib_memcpy (&ip6, mp->ip6_src, sizeof (ip6)); - vat_json_object_add_ip6 (node, "ip6_src", ip6); - vat_json_object_add_int (node, "ip6_prefix_len", mp->ip6_prefix_len); - vat_json_object_add_int (node, "ip4_prefix_len", mp->ip4_prefix_len); - vat_json_object_add_int (node, "ip6_src_len", mp->ip6_src_len); - vat_json_object_add_int (node, "ea_bits_len", mp->ea_bits_len); - vat_json_object_add_int (node, "psid_offset", mp->psid_offset); - vat_json_object_add_int (node, "psid_length", mp->psid_length); - vat_json_object_add_uint (node, "flags", mp->flags); - vat_json_object_add_uint (node, "mtu", clib_net_to_host_u16 (mp->mtu)); - vat_json_object_add_int (node, "is_translation", mp->is_translation); -} - -static void vl_api_map_domain_details_t_handler - (vl_api_map_domain_details_t * mp) -{ - vat_main_t *vam = &vat_main; - - if (mp->is_translation) - { - print (vam->ofp, - "* %U/%d (ipv4-prefix) %U/%d (ipv6-prefix) %U/%d (ip6-src) index: %u", - format_ip4_address, mp->ip4_prefix, mp->ip4_prefix_len, - format_ip6_address, mp->ip6_prefix, mp->ip6_prefix_len, - format_ip6_address, mp->ip6_src, mp->ip6_src_len, - clib_net_to_host_u32 (mp->domain_index)); - } - else - { - print (vam->ofp, - "* %U/%d (ipv4-prefix) %U/%d (ipv6-prefix) %U (ip6-src) index: %u", - format_ip4_address, mp->ip4_prefix, mp->ip4_prefix_len, - format_ip6_address, mp->ip6_prefix, mp->ip6_prefix_len, - format_ip6_address, mp->ip6_src, - clib_net_to_host_u32 (mp->domain_index)); - } - print (vam->ofp, " ea-len %d psid-offset %d psid-len %d mtu %d %s", - mp->ea_bits_len, mp->psid_offset, mp->psid_length, mp->mtu, - mp->is_translation ? "map-t" : ""); -} - -static void vl_api_map_rule_details_t_handler_json - (vl_api_map_rule_details_t * mp) -{ - struct in6_addr ip6; - vat_json_node_t *node = NULL; - vat_main_t *vam = &vat_main; - - 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_uint (node, "psid", clib_net_to_host_u16 (mp->psid)); - clib_memcpy (&ip6, mp->ip6_dst, sizeof (ip6)); - vat_json_object_add_ip6 (node, "ip6_dst", ip6); -} - -static void -vl_api_map_rule_details_t_handler (vl_api_map_rule_details_t * mp) -{ - vat_main_t *vam = &vat_main; - print (vam->ofp, " %d (psid) %U (ip6-dst)", - clib_net_to_host_u16 (mp->psid), format_ip6_address, mp->ip6_dst); -} - static void vl_api_dhcp_compl_event_t_handler (vl_api_dhcp_compl_event_t * mp) { @@ -5525,8 +5431,6 @@ _(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) \ -_(map_add_del_rule_reply) \ _(want_interface_events_reply) \ _(want_stats_reply) \ _(cop_interface_enable_disable_reply) \ @@ -5780,12 +5684,8 @@ _(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) \ +_(BD_IP_MAC_DETAILS, bd_ip_mac_details) \ _(DHCP_COMPL_EVENT, dhcp_compl_event) \ -_(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) \ -_(MAP_DOMAIN_DETAILS, map_domain_details) \ -_(MAP_RULE_DETAILS, map_rule_details) \ _(WANT_INTERFACE_EVENTS_REPLY, want_interface_events_reply) \ _(WANT_STATS_REPLY, want_stats_reply) \ _(GET_FIRST_MSG_ID_REPLY, get_first_msg_id_reply) \ @@ -7768,6 +7668,100 @@ api_bd_ip_mac_add_del (vat_main_t * vam) return ret; } +static void vl_api_bd_ip_mac_details_t_handler + (vl_api_bd_ip_mac_details_t * mp) +{ + vat_main_t *vam = &vat_main; + u8 *ip = 0; + + if (!mp->is_ipv6) + ip = + format (0, "%U", format_ip4_address, (ip4_address_t *) mp->ip_address); + else + ip = + format (0, "%U", format_ip6_address, (ip6_address_t *) mp->ip_address); + + print (vam->ofp, + "\n%-5d %-7s %-20U %-30s", + ntohl (mp->bd_id), mp->is_ipv6 ? "ip6" : "ip4", + format_ethernet_address, mp->mac_address, ip); + + vec_free (ip); +} + +static void vl_api_bd_ip_mac_details_t_handler_json + (vl_api_bd_ip_mac_details_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_uint (node, "bd_id", ntohl (mp->bd_id)); + vat_json_object_add_uint (node, "is_ipv6", ntohl (mp->is_ipv6)); + vat_json_object_add_string_copy (node, "mac_address", + format (0, "%U", format_ethernet_address, + &mp->mac_address)); + u8 *ip = 0; + + if (!mp->is_ipv6) + ip = + format (0, "%U", format_ip4_address, (ip4_address_t *) mp->ip_address); + else + ip = + format (0, "%U", format_ip6_address, (ip6_address_t *) mp->ip_address); + vat_json_object_add_string_copy (node, "ip_address", ip); + vec_free (ip); +} + +static int +api_bd_ip_mac_dump (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_bd_ip_mac_dump_t *mp; + vl_api_control_ping_t *mp_ping; + int ret; + u32 bd_id; + u8 bd_id_set = 0; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "bd_id %d", &bd_id)) + { + bd_id_set++; + } + else + break; + } + + print (vam->ofp, + "\n%-5s %-7s %-20s %-30s", + "bd_id", "is_ipv6", "mac_address", "ip_address"); + + /* Dump Bridge Domain Ip to Mac entries */ + M (BD_IP_MAC_DUMP, mp); + + if (bd_id_set) + mp->bd_id = htonl (bd_id); + else + mp->bd_id = ~0; + + S (mp); + + /* Use a control ping for synchronization */ + MPING (CONTROL_PING, mp_ping); + S (mp_ping); + + W (ret); + return ret; +} + static int api_tap_connect (vat_main_t * vam) { @@ -11561,6 +11555,7 @@ api_classify_add_del_table (vat_main_t * vam) mp->miss_next_index = ntohl (miss_next_index); mp->current_data_flag = ntohl (current_data_flag); mp->current_data_offset = ntohl (current_data_offset); + mp->mask_len = ntohl (vec_len (mask)); clib_memcpy (mp->mask, mask, vec_len (mask)); vec_free (mask); @@ -12112,6 +12107,7 @@ api_classify_add_del_session (vat_main_t * vam) mp->advance = ntohl (advance); mp->action = action; mp->metadata = ntohl (metadata); + mp->match_len = ntohl (vec_len (match)); clib_memcpy (mp->match, match, vec_len (match)); vec_free (match); @@ -15229,8 +15225,7 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) if (unformat (i, "crypto_alg %U", unformat_ipsec_crypto_alg, &crypto_alg)) { - if (crypto_alg < IPSEC_CRYPTO_ALG_NONE || - crypto_alg >= IPSEC_CRYPTO_N_ALG) + if (crypto_alg >= IPSEC_CRYPTO_N_ALG) { clib_warning ("unsupported crypto-alg: '%U'", format_ipsec_crypto_alg, crypto_alg); @@ -15243,8 +15238,7 @@ api_ipsec_sad_add_del_entry (vat_main_t * vam) if (unformat (i, "integ_alg %U", unformat_ipsec_integ_alg, &integ_alg)) { - if (integ_alg < IPSEC_INTEG_ALG_NONE || - integ_alg >= IPSEC_INTEG_N_ALG) + if (integ_alg >= IPSEC_INTEG_N_ALG) { clib_warning ("unsupported integ-alg: '%U'", format_ipsec_integ_alg, integ_alg); @@ -15401,8 +15395,7 @@ api_ipsec_tunnel_if_add_del (vat_main_t * vam) if (unformat (i, "crypto_alg %U", unformat_ipsec_crypto_alg, &crypto_alg)) { - if (crypto_alg < IPSEC_CRYPTO_ALG_NONE || - crypto_alg >= IPSEC_CRYPTO_N_ALG) + if (crypto_alg >= IPSEC_CRYPTO_N_ALG) { errmsg ("unsupported crypto-alg: '%U'\n", format_ipsec_crypto_alg, crypto_alg); @@ -15413,8 +15406,7 @@ api_ipsec_tunnel_if_add_del (vat_main_t * vam) if (unformat (i, "integ_alg %U", unformat_ipsec_integ_alg, &integ_alg)) { - if (integ_alg < IPSEC_INTEG_ALG_NONE || - integ_alg >= IPSEC_INTEG_N_ALG) + if (integ_alg >= IPSEC_INTEG_N_ALG) { errmsg ("unsupported integ-alg: '%U'\n", format_ipsec_integ_alg, integ_alg); @@ -16368,269 +16360,6 @@ api_ikev2_initiate_rekey_child_sa (vat_main_t * vam) return ret; } -/* - * MAP - */ -static int -api_map_add_domain (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_map_add_domain_t *mp; - - ip4_address_t ip4_prefix; - ip6_address_t ip6_prefix; - ip6_address_t ip6_src; - u32 num_m_args = 0; - u32 ip6_prefix_len = 0, ip4_prefix_len = 0, ea_bits_len = 0, psid_offset = - 0, psid_length = 0; - u8 is_translation = 0; - u32 mtu = 0; - u32 ip6_src_len = 128; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "ip4-pfx %U/%d", unformat_ip4_address, - &ip4_prefix, &ip4_prefix_len)) - num_m_args++; - else if (unformat (i, "ip6-pfx %U/%d", unformat_ip6_address, - &ip6_prefix, &ip6_prefix_len)) - num_m_args++; - else - if (unformat - (i, "ip6-src %U/%d", unformat_ip6_address, &ip6_src, - &ip6_src_len)) - num_m_args++; - else if (unformat (i, "ip6-src %U", unformat_ip6_address, &ip6_src)) - num_m_args++; - else if (unformat (i, "ea-bits-len %d", &ea_bits_len)) - num_m_args++; - else if (unformat (i, "psid-offset %d", &psid_offset)) - num_m_args++; - else if (unformat (i, "psid-len %d", &psid_length)) - num_m_args++; - else if (unformat (i, "mtu %d", &mtu)) - num_m_args++; - else if (unformat (i, "map-t")) - is_translation = 1; - else - { - clib_warning ("parse error '%U'", format_unformat_error, i); - return -99; - } - } - - if (num_m_args < 3) - { - errmsg ("mandatory argument(s) missing"); - return -99; - } - - /* Construct the API message */ - M (MAP_ADD_DOMAIN, mp); - - clib_memcpy (mp->ip4_prefix, &ip4_prefix, sizeof (ip4_prefix)); - mp->ip4_prefix_len = ip4_prefix_len; - - clib_memcpy (mp->ip6_prefix, &ip6_prefix, sizeof (ip6_prefix)); - mp->ip6_prefix_len = ip6_prefix_len; - - clib_memcpy (mp->ip6_src, &ip6_src, sizeof (ip6_src)); - mp->ip6_src_prefix_len = ip6_src_len; - - mp->ea_bits_len = ea_bits_len; - mp->psid_offset = psid_offset; - mp->psid_length = psid_length; - mp->is_translation = is_translation; - mp->mtu = htons (mtu); - - /* send it... */ - S (mp); - - /* Wait for a reply, return good/bad news */ - W (ret); - return ret; -} - -static int -api_map_del_domain (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_map_del_domain_t *mp; - - u32 num_m_args = 0; - u32 index; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "index %d", &index)) - num_m_args++; - else - { - clib_warning ("parse error '%U'", format_unformat_error, i); - return -99; - } - } - - if (num_m_args != 1) - { - errmsg ("mandatory argument(s) missing"); - return -99; - } - - /* Construct the API message */ - M (MAP_DEL_DOMAIN, mp); - - mp->index = ntohl (index); - - /* send it... */ - S (mp); - - /* Wait for a reply, return good/bad news */ - W (ret); - return ret; -} - -static int -api_map_add_del_rule (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_map_add_del_rule_t *mp; - 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) - { - if (unformat (i, "index %d", &index)) - num_m_args++; - else if (unformat (i, "psid %d", &psid)) - num_m_args++; - else if (unformat (i, "dst %U", unformat_ip6_address, &ip6_dst)) - num_m_args++; - else if (unformat (i, "del")) - { - is_add = 0; - } - else - { - clib_warning ("parse error '%U'", format_unformat_error, i); - return -99; - } - } - - /* Construct the API message */ - M (MAP_ADD_DEL_RULE, mp); - - mp->index = ntohl (index); - mp->is_add = is_add; - clib_memcpy (mp->ip6_dst, &ip6_dst, sizeof (ip6_dst)); - mp->psid = ntohs (psid); - - /* send it... */ - S (mp); - - /* Wait for a reply, return good/bad news */ - W (ret); - return ret; -} - -static int -api_map_domain_dump (vat_main_t * vam) -{ - vl_api_map_domain_dump_t *mp; - vl_api_control_ping_t *mp_ping; - int ret; - - /* Construct the API message */ - M (MAP_DOMAIN_DUMP, mp); - - /* send it... */ - S (mp); - - /* Use a control ping for synchronization */ - MPING (CONTROL_PING, mp_ping); - S (mp_ping); - - W (ret); - return ret; -} - -static int -api_map_rule_dump (vat_main_t * vam) -{ - unformat_input_t *i = vam->input; - vl_api_map_rule_dump_t *mp; - vl_api_control_ping_t *mp_ping; - u32 domain_index = ~0; - int ret; - - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) - { - if (unformat (i, "index %u", &domain_index)) - ; - else - break; - } - - if (domain_index == ~0) - { - clib_warning ("parse error: domain index expected"); - return -99; - } - - /* Construct the API message */ - M (MAP_RULE_DUMP, mp); - - mp->domain_index = htonl (domain_index); - - /* send it... */ - S (mp); - - /* Use a control ping for synchronization */ - MPING (CONTROL_PING, mp_ping); - S (mp_ping); - - W (ret); - return ret; -} - -static void vl_api_map_add_domain_reply_t_handler - (vl_api_map_add_domain_reply_t * mp) -{ - vat_main_t *vam = &vat_main; - i32 retval = ntohl (mp->retval); - - if (vam->async_mode) - { - vam->async_errors += (retval < 0); - } - else - { - vam->retval = retval; - vam->result_ready = 1; - } -} - -static void vl_api_map_add_domain_reply_t_handler_json - (vl_api_map_add_domain_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, "index", ntohl (mp->index)); - - vat_json_print (vam->ofp, &node); - vat_json_free (&node); - - vam->retval = ntohl (mp->retval); - vam->result_ready = 1; -} - static int api_get_first_msg_id (vat_main_t * vam) { @@ -20512,17 +20241,19 @@ vl_api_ip_fib_details_t_handler (vl_api_ip_fib_details_t * mp) if (fp->afi == IP46_TYPE_IP6) print (vam->ofp, " weight %d, sw_if_index %d, is_local %d, is_drop %d, " - "is_unreach %d, is_prohitbit %d, afi %d, next_hop %U", + "is_unreach %d, is_prohitbit %d, afi %d, next_hop %U, " + "next_hop_table %d", ntohl (fp->weight), ntohl (fp->sw_if_index), fp->is_local, fp->is_drop, fp->is_unreach, fp->is_prohibit, fp->afi, - format_ip6_address, fp->next_hop); + format_ip6_address, fp->next_hop, ntohl (fp->table_id)); else if (fp->afi == IP46_TYPE_IP4) print (vam->ofp, " weight %d, sw_if_index %d, is_local %d, is_drop %d, " - "is_unreach %d, is_prohitbit %d, afi %d, next_hop %U", + "is_unreach %d, is_prohitbit %d, afi %d, next_hop %U, " + "next_hop_table %d", ntohl (fp->weight), ntohl (fp->sw_if_index), fp->is_local, fp->is_drop, fp->is_unreach, fp->is_prohibit, fp->afi, - format_ip4_address, fp->next_hop); + format_ip4_address, fp->next_hop, ntohl (fp->table_id)); fp++; } } @@ -23761,15 +23492,7 @@ _(ikev2_initiate_del_child_sa, "") \ _(ikev2_initiate_rekey_child_sa, "") \ _(delete_loopback,"sw_if_index ") \ _(bd_ip_mac_add_del, "bd_id [del]") \ -_(map_add_domain, \ - "ip4-pfx ip6-pfx " \ - "ip6-src " \ - "ea-bits-len psid-offset psid-len ") \ -_(map_del_domain, "index ") \ -_(map_add_del_rule, \ - "index psid dst [del]") \ -_(map_domain_dump, "") \ -_(map_rule_dump, "index ") \ +_(bd_ip_mac_dump, "[bd_id] ") \ _(want_interface_events, "enable|disable") \ _(want_stats,"enable|disable") \ _(get_first_msg_id, "client ") \