From: Chris Luke Date: Fri, 27 May 2016 16:11:24 +0000 (-0400) Subject: VPP-95 VXLAN add_del API intermittent failure X-Git-Tag: v16.09-rc1~365 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=404be66978ff77769953eb96c6db036574288697;p=vpp.git VPP-95 VXLAN add_del API intermittent failure The VXLAN add_del API sometimes rejects calls with VNET_API_ERROR_SAME_SRC_DST when the two parameters are obviously different. This is because the API code is checking the "is_ip6" flag in a not-yet initialized area of memory leading to random results. Also fix help text for vxlan_add_del_tunnel in vat. This does not change the API; it repairs intermittent failure. Change-Id: I41863694f478c1f669078f82f69d8cca4841c989 Signed-off-by: Chris Luke --- diff --git a/vpp-api-test/vat/api_format.c b/vpp-api-test/vat/api_format.c index 59da077e053..258e314bab2 100644 --- a/vpp-api-test/vat/api_format.c +++ b/vpp-api-test/vat/api_format.c @@ -11051,7 +11051,7 @@ _(l2tpv3_set_lookup_key, \ "lookup_v6_src | lookup_v6_dst | lookup_session_id") \ _(sw_if_l2tpv3_tunnel_dump, "") \ _(vxlan_add_del_tunnel, \ - "src dst vni [encap-vrf-id ]\n" \ + "src dst vni [encap-vrf-id ]\n" \ " [decap-next l2|ip4|ip6] [del]") \ _(vxlan_tunnel_dump, "[ | sw_if_index ]") \ _(gre_add_del_tunnel, \ diff --git a/vpp/api/api.c b/vpp/api/api.c index 8b801e5a5c0..52d0b2d21ba 100644 --- a/vpp/api/api.c +++ b/vpp/api/api.c @@ -4330,8 +4330,8 @@ static void vl_api_vxlan_add_del_tunnel_t_handler encap_fib_index = p[0]; /* Check src & dst are different */ - if ((a->is_ip6 && memcmp(mp->src_address, mp->dst_address, 16) == 0) || - (!a->is_ip6 && memcmp(mp->src_address, mp->dst_address, 4) == 0)) { + if ((mp->is_ipv6 && memcmp(mp->src_address, mp->dst_address, 16) == 0) || + (!mp->is_ipv6 && memcmp(mp->src_address, mp->dst_address, 4) == 0)) { rv = VNET_API_ERROR_SAME_SRC_DST; goto out; }