X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fapi_format.c;h=d6af698446726372d2cb310ec70609519eca3e3e;hb=cf5e848d69a4f14464c1e2d56896bc9f7e586951;hp=daa090700a373ad0590788f45f5171fab2636add;hpb=cea194d8f973a2f2b5ef72d212533057174cc70a;p=vpp.git diff --git a/src/vat/api_format.c b/src/vat/api_format.c index daa090700a3..d6af6984467 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -2137,6 +2137,7 @@ static void vl_api_memfd_segment_create_reply_t_handler vam->client_index_invalid = 1; + /* Note: this closes memfd.fd */ retval = memfd_slave_init (&memfd); if (retval) clib_warning ("WARNING: segment map returned %d", retval); @@ -2152,8 +2153,6 @@ static void vl_api_memfd_segment_create_reply_t_handler vl_client_connect_to_vlib_no_map ("pvt", "vpp_api_test(p)", 32 /* input_queue_length */ ); - if (close (my_fd) < 0) - clib_unix_warning ("close memfd fd pivot"); vam->vl_input_queue = am->shmem_hdr->vl_input_queue; vl_socket_client_enable_disable (&vam->socket_client_main, @@ -2179,6 +2178,39 @@ static void vl_api_memfd_segment_create_reply_t_handler_json clib_warning ("no"); } +static void vl_api_dns_resolve_name_reply_t_handler + (vl_api_dns_resolve_name_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; + + if (retval == 0) + { + if (mp->ip4_set) + clib_warning ("ip4 address %U", format_ip4_address, + (ip4_address_t *) mp->ip4_address); + if (mp->ip6_set) + clib_warning ("ip6 address %U", format_ip6_address, + (ip6_address_t *) mp->ip6_address); + } + else + clib_warning ("retval %d", retval); + } +} + +static void vl_api_dns_resolve_name_reply_t_handler_json + (vl_api_dns_resolve_name_reply_t * mp) +{ + clib_warning ("no"); +} static void vl_api_ip_address_details_t_handler (vl_api_ip_address_details_t * mp) @@ -5044,6 +5076,7 @@ _(ipsec_spd_add_del_entry_reply) \ _(ipsec_sad_add_del_entry_reply) \ _(ipsec_sa_set_key_reply) \ _(ipsec_tunnel_if_add_del_reply) \ +_(ipsec_tunnel_if_set_key_reply) \ _(ikev2_profile_add_del_reply) \ _(ikev2_profile_set_auth_reply) \ _(ikev2_profile_set_id_reply) \ @@ -5066,8 +5099,8 @@ _(want_stats_reply) \ _(cop_interface_enable_disable_reply) \ _(cop_whitelist_enable_disable_reply) \ _(sw_interface_clear_stats_reply) \ -_(ioam_enable_reply) \ -_(ioam_disable_reply) \ +_(ioam_enable_reply) \ +_(ioam_disable_reply) \ _(one_add_del_locator_reply) \ _(one_add_del_local_eid_reply) \ _(one_add_del_remote_mapping_reply) \ @@ -5117,7 +5150,9 @@ _(p2p_ethernet_del_reply) \ _(lldp_config_reply) \ _(sw_interface_set_lldp_reply) \ _(tcp_configure_src_addresses_reply) \ -_(app_namespace_add_del_reply) +_(app_namespace_add_del_reply) \ +_(dns_enable_disable_reply) \ +_(dns_name_server_add_del_reply) #define _(n) \ static void vl_api_##n##_t_handler \ @@ -5275,6 +5310,7 @@ _(IPSEC_SAD_ADD_DEL_ENTRY_REPLY, ipsec_sad_add_del_entry_reply) \ _(IPSEC_SA_DETAILS, ipsec_sa_details) \ _(IPSEC_SA_SET_KEY_REPLY, ipsec_sa_set_key_reply) \ _(IPSEC_TUNNEL_IF_ADD_DEL_REPLY, ipsec_tunnel_if_add_del_reply) \ +_(IPSEC_TUNNEL_IF_SET_KEY_REPLY, ipsec_tunnel_if_set_key_reply) \ _(IKEV2_PROFILE_ADD_DEL_REPLY, ikev2_profile_add_del_reply) \ _(IKEV2_PROFILE_SET_AUTH_REPLY, ikev2_profile_set_auth_reply) \ _(IKEV2_PROFILE_SET_ID_REPLY, ikev2_profile_set_id_reply) \ @@ -5422,7 +5458,10 @@ _(P2P_ETHERNET_DEL_REPLY, p2p_ethernet_del_reply) \ _(LLDP_CONFIG_REPLY, lldp_config_reply) \ _(SW_INTERFACE_SET_LLDP_REPLY, sw_interface_set_lldp_reply) \ _(TCP_CONFIGURE_SRC_ADDRESSES_REPLY, tcp_configure_src_addresses_reply) \ -_(APP_NAMESPACE_ADD_DEL_REPLY, app_namespace_add_del_reply) +_(APP_NAMESPACE_ADD_DEL_REPLY, app_namespace_add_del_reply) \ +_(DNS_ENABLE_DISABLE_REPLY, dns_enable_disable_reply) \ +_(DNS_NAME_SERVER_ADD_DEL_REPLY, dns_name_server_add_del_reply) \ +_(DNS_RESOLVE_NAME_REPLY, dns_resolve_name_reply) #define foreach_standalone_reply_msg \ _(SW_INTERFACE_EVENT, sw_interface_event) \ @@ -5432,7 +5471,7 @@ _(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) \ -_(MEMFD_SEGMENT_CREATE_REPLY, memfd_segment_create_reply) +_(MEMFD_SEGMENT_CREATE_REPLY, memfd_segment_create_reply) \ typedef struct { @@ -5845,7 +5884,7 @@ exec_inband (vat_main_t * vam) W (ret); /* json responses may or may not include a useful reply... */ if (vec_len (vam->cmd_reply)) - print (vam->ofp, (char *) (vam->cmd_reply)); + print (vam->ofp, "%v", (char *) (vam->cmd_reply)); return ret; } @@ -14262,6 +14301,79 @@ api_ipsec_sa_dump (vat_main_t * vam) return ret; } +static int +api_ipsec_tunnel_if_set_key (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_ipsec_tunnel_if_set_key_t *mp; + u32 sw_if_index = ~0; + u8 key_type = IPSEC_IF_SET_KEY_TYPE_NONE; + u8 *key = 0; + u32 alg = ~0; + int ret; + + 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, "local crypto %U", unformat_ipsec_crypto_alg, &alg)) + key_type = IPSEC_IF_SET_KEY_TYPE_LOCAL_CRYPTO; + else + if (unformat (i, "remote crypto %U", unformat_ipsec_crypto_alg, &alg)) + key_type = IPSEC_IF_SET_KEY_TYPE_REMOTE_CRYPTO; + else if (unformat (i, "local integ %U", unformat_ipsec_integ_alg, &alg)) + key_type = IPSEC_IF_SET_KEY_TYPE_LOCAL_INTEG; + else + if (unformat (i, "remote integ %U", unformat_ipsec_integ_alg, &alg)) + key_type = IPSEC_IF_SET_KEY_TYPE_REMOTE_INTEG; + else if (unformat (i, "%U", unformat_hex_string, &key)) + ; + else + { + clib_warning ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (sw_if_index == ~0) + { + errmsg ("interface must be specified"); + return -99; + } + + if (key_type == IPSEC_IF_SET_KEY_TYPE_NONE) + { + errmsg ("key type must be specified"); + return -99; + } + + if (alg == ~0) + { + errmsg ("algorithm must be specified"); + return -99; + } + + if (vec_len (key) == 0) + { + errmsg ("key must be specified"); + return -99; + } + + M (IPSEC_TUNNEL_IF_SET_KEY, mp); + + mp->sw_if_index = htonl (sw_if_index); + mp->alg = alg; + mp->key_type = key_type; + mp->key_len = vec_len (key); + clib_memcpy (mp->key, key, vec_len (key)); + + S (mp); + W (ret); + + return ret; +} + static int api_ikev2_profile_add_del (vat_main_t * vam) { @@ -20633,9 +20745,14 @@ api_sw_interface_set_lldp (vat_main_t * vam) vl_api_sw_interface_set_lldp_t *mp; u32 sw_if_index = ~0; u32 enable = 1; - u8 *port_desc = NULL; + u8 *port_desc = NULL, *mgmt_oid = NULL; + ip4_address_t ip4_addr; + ip6_address_t ip6_addr; int ret; + memset (&ip4_addr, 0, sizeof (ip4_addr)); + memset (&ip6_addr, 0, sizeof (ip6_addr)); + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { if (unformat (i, "disable")) @@ -20647,6 +20764,12 @@ api_sw_interface_set_lldp (vat_main_t * vam) ; else if (unformat (i, "port-desc %s", &port_desc)) ; + else if (unformat (i, "mgmt-ip4 %U", unformat_ip4_address, &ip4_addr)) + ; + else if (unformat (i, "mgmt-ip6 %U", unformat_ip6_address, &ip6_addr)) + ; + else if (unformat (i, "mgmt-oid %s", &mgmt_oid)) + ; else break; } @@ -20659,11 +20782,16 @@ api_sw_interface_set_lldp (vat_main_t * vam) /* Construct the API message */ vec_add1 (port_desc, 0); + vec_add1 (mgmt_oid, 0); M (SW_INTERFACE_SET_LLDP, mp); mp->sw_if_index = ntohl (sw_if_index); mp->enable = enable; clib_memcpy (mp->port_desc, port_desc, vec_len (port_desc)); + clib_memcpy (mp->mgmt_oid, mgmt_oid, vec_len (mgmt_oid)); + clib_memcpy (mp->mgmt_ip4, &ip4_addr, sizeof (ip4_addr)); + clib_memcpy (mp->mgmt_ip6, &ip6_addr, sizeof (ip6_addr)); vec_free (port_desc); + vec_free (mgmt_oid); S (mp); W (ret); @@ -20789,16 +20917,12 @@ api_app_namespace_add_del (vat_main_t * vam) static int api_memfd_segment_create (vat_main_t * vam) { +#if VPP_API_TEST_BUILTIN == 0 unformat_input_t *i = vam->input; vl_api_memfd_segment_create_t *mp; u64 size = 64 << 20; int ret; -#if VPP_API_TEST_BUILTIN == 1 - errmsg ("memfd_segment_create (builtin) not supported"); - return -99; -#endif - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { if (unformat (i, "size %U", unformat_memory_size, &size)) @@ -20812,8 +20936,139 @@ api_memfd_segment_create (vat_main_t * vam) S (mp); W (ret); return ret; + +#else + errmsg ("memfd_segment_create (builtin) not supported"); + return -99; +#endif +} + +static int +api_dns_enable_disable (vat_main_t * vam) +{ + unformat_input_t *line_input = vam->input; + vl_api_dns_enable_disable_t *mp; + u8 enable_disable = 1; + int ret; + + while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (line_input, "disable")) + enable_disable = 0; + if (unformat (line_input, "enable")) + enable_disable = 1; + else + break; + } + + /* Construct the API message */ + M (DNS_ENABLE_DISABLE, mp); + mp->enable = enable_disable; + + /* send it... */ + S (mp); + /* Wait for the reply */ + W (ret); + return ret; } +static int +api_dns_resolve_name (vat_main_t * vam) +{ + unformat_input_t *line_input = vam->input; + vl_api_dns_resolve_name_t *mp; + u8 *name = 0; + int ret; + + while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (line_input, "%s", &name)) + ; + else + break; + } + + if (vec_len (name) > 127) + { + errmsg ("name too long"); + return -99; + } + + /* Construct the API message */ + M (DNS_RESOLVE_NAME, mp); + memcpy (mp->name, name, vec_len (name)); + vec_free (name); + + /* send it... */ + S (mp); + /* Wait for the reply */ + W (ret); + return ret; +} + +static int +api_dns_name_server_add_del (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + vl_api_dns_name_server_add_del_t *mp; + u8 is_add = 1; + ip6_address_t ip6_server; + ip4_address_t ip4_server; + int ip6_set = 0; + int ip4_set = 0; + int ret = 0; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U", unformat_ip6_address, &ip6_server)) + ip6_set = 1; + else if (unformat (i, "%U", unformat_ip4_address, &ip4_server)) + ip4_set = 1; + else if (unformat (i, "del")) + is_add = 0; + else + { + clib_warning ("parse error '%U'", format_unformat_error, i); + return -99; + } + } + + if (ip4_set && ip6_set) + { + errmsg ("Only one server address allowed per message"); + return -99; + } + if ((ip4_set + ip6_set) == 0) + { + errmsg ("Server address required"); + return -99; + } + + /* Construct the API message */ + M (DNS_NAME_SERVER_ADD_DEL, mp); + + if (ip6_set) + { + memcpy (mp->server_address, &ip6_server, sizeof (ip6_address_t)); + mp->is_ip6 = 1; + } + else + { + memcpy (mp->server_address, &ip4_server, sizeof (ip4_address_t)); + mp->is_ip6 = 0; + } + + mp->is_add = is_add; + + /* send it... */ + S (mp); + + /* Wait for a reply, return good/bad news */ + W (ret); + return ret; +} + + static int q_or_quit (vat_main_t * vam) { @@ -21383,6 +21638,8 @@ _(ipsec_tunnel_if_add_del, "local_spi remote_spi \n" \ " integ_alg local_integ_key remote_integ_key \n" \ " local_ip remote_ip [esn] [anti_replay] [del]\n") \ _(ipsec_sa_dump, "[sa_id ]") \ +_(ipsec_tunnel_if_set_key, " \n" \ + " \n") \ _(ikev2_profile_add_del, "name [del]") \ _(ikev2_profile_set_auth, "name auth_method \n" \ "(auth_data 0x | auth_data )") \ @@ -21600,10 +21857,14 @@ _(sw_interface_get_table, " | sw_if_index [ipv6]") \ _(p2p_ethernet_add, " | sw_if_index remote_mac sub_id ") \ _(p2p_ethernet_del, " | sw_if_index remote_mac ") \ _(lldp_config, "system-name tx-hold tx-interval ") \ -_(sw_interface_set_lldp, " | sw_if_index [port-desc ] [disable]") \ +_(sw_interface_set_lldp, " | sw_if_index [port-desc ]\n" \ + " [mgmt-ip4 ] [mgmt-ip6 ] [mgmt-oid ] [disable]") \ _(tcp_configure_src_addresses, "first-last [vrf ]") \ _(memfd_segment_create,"size ") \ _(app_namespace_add_del, "[add] id secret sw_if_index ")\ +_(dns_enable_disable, "[enable][disable]") \ +_(dns_name_server_add_del, " [del]") \ +_(dns_resolve_name, "") /* List of command functions, CLI names map directly to functions */ #define foreach_cli_function \