X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fapi_format.c;h=b87ec932c2873dfd38b30f310f1841895e48cbe4;hb=381e9a90748bb659f56081123052e3e95501a4b4;hp=89843e41d08cc94224e747e50c63f06b2c6874cc;hpb=d723161e038d00e59766aa67a6a0dcc350227e4b;p=vpp.git diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 89843e41d08..b87ec932c28 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -177,6 +176,12 @@ api_unformat_sw_if_index (unformat_input_t * input, va_list * args) return 1; } +static uword +api_unformat_hw_if_index (unformat_input_t * input, va_list * args) +{ + return 0; +} + /* Parse an IP4 address %d.%d.%d.%d. */ uword unformat_ip4_address (unformat_input_t * input, va_list * args) @@ -440,14 +445,20 @@ 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; + return unformat (input, "%U", unformat_vnet_sw_interface, vnm, result); +} - *result = sw_if_index; - return 1; +static uword +api_unformat_hw_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 *); + + return unformat (input, "%U", unformat_vnet_hw_interface, vnm, result); } + #endif /* VPP_API_TEST_BUILTIN */ static uword @@ -2274,6 +2285,38 @@ static void vl_api_vxlan_add_del_tunnel_reply_t_handler_json vam->result_ready = 1; } +static void vl_api_vxlan_offload_rx_reply_t_handler + (vl_api_vxlan_offload_rx_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_vxlan_offload_rx_reply_t_handler_json + (vl_api_vxlan_offload_rx_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_print (vam->ofp, &node); + vat_json_free (&node); + + vam->retval = ntohl (mp->retval); + vam->result_ready = 1; +} + static void vl_api_geneve_add_del_tunnel_reply_t_handler (vl_api_geneve_add_del_tunnel_reply_t * mp) { @@ -2571,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) { @@ -3044,13 +2994,14 @@ static void vl_api_get_node_graph_reply_t_handler { hash_free (vam->graph_node_index_by_name); - for (i = 0; i < vec_len (vam->graph_nodes); i++) + for (i = 0; i < vec_len (vam->graph_nodes[0]); i++) { - node = vam->graph_nodes[i]; + node = vam->graph_nodes[0][i]; vec_free (node->name); vec_free (node->next_nodes); vec_free (node); } + vec_free (vam->graph_nodes[0]); vec_free (vam->graph_nodes); } @@ -3058,9 +3009,9 @@ static void vl_api_get_node_graph_reply_t_handler vam->graph_nodes = vlib_node_unserialize (pvt_copy); vec_free (pvt_copy); - for (i = 0; i < vec_len (vam->graph_nodes); i++) + for (i = 0; i < vec_len (vam->graph_nodes[0]); i++) { - node = vam->graph_nodes[i]; + node = vam->graph_nodes[0][i]; hash_set_mem (vam->graph_node_index_by_name, node->name, i); } } @@ -5480,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) \ @@ -5682,6 +5631,7 @@ _(L2TPV3_INTERFACE_ENABLE_DISABLE_REPLY, \ _(L2TPV3_SET_LOOKUP_KEY_REPLY, l2tpv3_set_lookup_key_reply) \ _(SW_IF_L2TPV3_TUNNEL_DETAILS, sw_if_l2tpv3_tunnel_details) \ _(VXLAN_ADD_DEL_TUNNEL_REPLY, vxlan_add_del_tunnel_reply) \ +_(VXLAN_OFFLOAD_RX_REPLY, vxlan_offload_rx_reply) \ _(GENEVE_ADD_DEL_TUNNEL_REPLY, geneve_add_del_tunnel_reply) \ _(VXLAN_TUNNEL_DETAILS, vxlan_tunnel_details) \ _(GENEVE_TUNNEL_DETAILS, geneve_tunnel_details) \ @@ -5735,11 +5685,6 @@ _(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) \ -_(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) \ @@ -5884,8 +5829,7 @@ _(SESSION_RULE_ADD_DEL_REPLY, session_rule_add_del_reply) \ _(SESSION_RULES_DETAILS, session_rules_details) \ _(IP_CONTAINER_PROXY_ADD_DEL_REPLY, ip_container_proxy_add_del_reply) \ _(OUTPUT_ACL_SET_INTERFACE_REPLY, output_acl_set_interface_reply) \ -_(QOS_RECORD_ENABLE_DISABLE_REPLY, qos_record_enable_disable_reply) \ -_(MAP_STATS_SEGMENT_REPLY, map_stats_segment_reply) +_(QOS_RECORD_ENABLE_DISABLE_REPLY, qos_record_enable_disable_reply) #define foreach_standalone_reply_msg \ _(SW_INTERFACE_EVENT, sw_interface_event) \ @@ -10713,7 +10657,10 @@ api_sr_localsid_add_del (vat_main_t * vam) u8 behavior = ~0; u32 sw_if_index; u32 fib_table = ~(u32) 0; - ip6_address_t next_hop; + ip6_address_t nh_addr6; + ip4_address_t nh_addr4; + memset (&nh_addr6, 0, sizeof (ip6_address_t)); + memset (&nh_addr4, 0, sizeof (ip4_address_t)); bool nexthop_set = 0; @@ -10724,7 +10671,9 @@ api_sr_localsid_add_del (vat_main_t * vam) if (unformat (i, "del")) is_del = 1; else if (unformat (i, "address %U", unformat_ip6_address, &localsid)); - else if (unformat (i, "next-hop %U", unformat_ip6_address, &next_hop)) + else if (unformat (i, "next-hop %U", unformat_ip4_address, &nh_addr4)) + nexthop_set = 1; + else if (unformat (i, "next-hop %U", unformat_ip6_address, &nh_addr6)) nexthop_set = 1; else if (unformat (i, "behavior %u", &behavior)); else if (unformat (i, "sw_if_index %u", &sw_if_index)); @@ -10736,9 +10685,12 @@ api_sr_localsid_add_del (vat_main_t * vam) M (SR_LOCALSID_ADD_DEL, mp); - clib_memcpy (mp->localsid_addr, &localsid, sizeof (mp->localsid_addr)); + clib_memcpy (mp->localsid.addr, &localsid, sizeof (mp->localsid)); if (nexthop_set) - clib_memcpy (mp->nh_addr, &next_hop, sizeof (mp->nh_addr)); + { + clib_memcpy (mp->nh_addr6, &nh_addr4, sizeof (mp->nh_addr6)); + clib_memcpy (mp->nh_addr4, &nh_addr6, sizeof (mp->nh_addr4)); + } mp->behavior = behavior; mp->sw_if_index = ntohl (sw_if_index); mp->fib_table = ntohl (fib_table); @@ -12856,6 +12808,59 @@ api_sw_interface_tap_v2_dump (vat_main_t * vam) return ret; } +static int +api_vxlan_offload_rx (vat_main_t * vam) +{ + unformat_input_t *line_input = vam->input; + vl_api_vxlan_offload_rx_t *mp; + u32 hw_if_index = ~0, rx_if_index = ~0; + u8 is_add = 1; + int ret; + + while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (line_input, "del")) + is_add = 0; + else if (unformat (line_input, "hw %U", api_unformat_hw_if_index, vam, + &hw_if_index)) + ; + else if (unformat (line_input, "hw hw_if_index %u", &hw_if_index)) + ; + else if (unformat (line_input, "rx %U", api_unformat_sw_if_index, vam, + &rx_if_index)) + ; + else if (unformat (line_input, "rx sw_if_index %u", &rx_if_index)) + ; + else + { + errmsg ("parse error '%U'", format_unformat_error, line_input); + return -99; + } + } + + if (hw_if_index == ~0) + { + errmsg ("no hw interface"); + return -99; + } + + if (rx_if_index == ~0) + { + errmsg ("no rx tunnel"); + return -99; + } + + M (VXLAN_OFFLOAD_RX, mp); + + mp->hw_if_index = ntohl (hw_if_index); + mp->sw_if_index = ntohl (rx_if_index); + mp->enable = is_add; + + S (mp); + W (ret); + return ret; +} + static uword unformat_vxlan_decap_next (unformat_input_t * input, va_list * args) { @@ -16262,269 +16267,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) { @@ -22432,92 +22174,6 @@ api_app_namespace_add_del (vat_main_t * vam) return ret; } -static void vl_api_map_stats_segment_reply_t_handler - (vl_api_map_stats_segment_reply_t * mp) -{ -#if VPP_API_TEST_BUILTIN == 0 - vat_main_t *vam = &vat_main; - ssvm_private_t *ssvmp = &vam->stat_segment; - ssvm_shared_header_t *shared_header; - socket_client_main_t *scm = vam->socket_client_main; - int rv = ntohl (mp->retval); - int my_fd, retval; - clib_error_t *error; - - vam->retval = rv; - - if (rv != 0) - { - vam->result_ready = 1; - return; - } - - /* - * Check the socket for the magic fd - */ - error = vl_sock_api_recv_fd_msg (scm->socket_fd, &my_fd, 5); - if (error) - { - clib_error_report (error); - vam->retval = -99; - vam->result_ready = 1; - return; - } - - memset (ssvmp, 0, sizeof (*ssvmp)); - ssvmp->fd = my_fd; - - /* Note: this closes memfd.fd */ - retval = ssvm_slave_init_memfd (ssvmp); - if (retval) - { - clib_warning ("WARNING: segment map returned %d", retval); - vam->retval = -99; - vam->result_ready = 1; - return; - } - else - errmsg ("stat segment mapped OK..."); - - ASSERT (ssvmp && ssvmp->sh); - - /* Pick up the segment lock from the shared memory header */ - shared_header = ssvmp->sh; - vam->stat_segment_lockp = (clib_spinlock_t *) (shared_header->opaque[0]); - vam->retval = 0; - vam->result_ready = 1; -#endif -} - -static void vl_api_map_stats_segment_reply_t_handler_json - (vl_api_map_stats_segment_reply_t * mp) -{ -#if VPP_API_TEST_BUILTIN == 0 - vat_main_t *vam = &vat_main; - clib_warning ("not implemented"); - vam->retval = -99; - vam->result_ready = 1; -#endif -} - -static int -api_map_stats_segment (vat_main_t * vam) -{ -#if VPP_API_TEST_BUILTIN == 0 - vl_api_map_stats_segment_t *mp; - int ret; - - M (MAP_STATS_SEGMENT, mp); - S (mp); - W (ret); - - return ret; -#else - errmsg ("api unavailable"); - return -99; -#endif -} - static int api_sock_init_shm (vat_main_t * vam) { @@ -23291,15 +22947,15 @@ dump_node_table (vat_main_t * vam) return 0; } - for (i = 0; i < vec_len (vam->graph_nodes); i++) + for (i = 0; i < vec_len (vam->graph_nodes[0]); i++) { - node = vam->graph_nodes[i]; + node = vam->graph_nodes[0][i]; print (vam->ofp, "[%d] %s", i, node->name); for (j = 0; j < vec_len (node->next_nodes); j++) { if (node->next_nodes[j] != ~0) { - next_node = vam->graph_nodes[node->next_nodes[j]]; + next_node = vam->graph_nodes[0][node->next_nodes[j]]; print (vam->ofp, " [%d] %s", j, next_node->name); } } @@ -23394,13 +23050,13 @@ search_node_table (vat_main_t * vam) print (vam->ofp, "%s not found...", node_to_find); goto out; } - node = vam->graph_nodes[p[0]]; + node = vam->graph_nodes[0][p[0]]; print (vam->ofp, "[%d] %s", p[0], node->name); for (j = 0; j < vec_len (node->next_nodes); j++) { if (node->next_nodes[j] != ~0) { - next_node = vam->graph_nodes[node->next_nodes[j]]; + next_node = vam->graph_nodes[0][node->next_nodes[j]]; print (vam->ofp, " [%d] %s", j, next_node->name); } } @@ -23650,6 +23306,9 @@ _(l2tpv3_interface_enable_disable, \ _(l2tpv3_set_lookup_key, \ "lookup_v6_src | lookup_v6_dst | lookup_session_id") \ _(sw_if_l2tpv3_tunnel_dump, "") \ +_(vxlan_offload_rx, \ + "hw { | hw_if_index } " \ + "rx { | sw_if_index } [del]") \ _(vxlan_add_del_tunnel, \ "src { dst | group \n" \ "{ | mcast_sw_if_index } [instance ]}\n" \ @@ -23738,15 +23397,6 @@ _(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 ") \ _(want_interface_events, "enable|disable") \ _(want_stats,"enable|disable") \ _(get_first_msg_id, "client ") \ @@ -23961,8 +23611,7 @@ _(ip_container_proxy_add_del, "[add|del]
") \ _(output_acl_set_interface, \ " | sw_if_index [ip4-table ] [ip6-table ]\n" \ " [l2-table ] [del]") \ -_(qos_record_enable_disable, " | sw_if_index [disable]") \ -_(map_stats_segment, "") +_(qos_record_enable_disable, " | sw_if_index [disable]") /* List of command functions, CLI names map directly to functions */ #define foreach_cli_function \