X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fvxlan%2Fvxlan_api.c;h=20034f74f0eb3a8aeb877ebe162648528d4ab9b6;hb=e86a8edd3c14fb41ace2a12efd17bc7772bf623f;hp=6c9cbd79764bda11594776837798e47e44a164b9;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vnet/vxlan/vxlan_api.c b/src/vnet/vxlan/vxlan_api.c index 6c9cbd79764..20034f74f0e 100644 --- a/src/vnet/vxlan/vxlan_api.c +++ b/src/vnet/vxlan/vxlan_api.c @@ -59,14 +59,7 @@ static void VALIDATE_SW_IF_INDEX (mp); - if (mp->is_ipv6) - { - /* not yet implemented */ - } - else - vnet_feature_enable_disable ("ip4-unicast", "ip4-vxlan-bypass", - sw_if_index, mp->enable, 0, 0); - + vnet_int_vxlan_bypass_mode (sw_if_index, mp->is_ipv6, mp->enable); BAD_SW_IF_INDEX_LABEL; REPLY_MACRO (VL_API_SW_INTERFACE_SET_VXLAN_BYPASS_REPLY); @@ -77,47 +70,41 @@ static void vl_api_vxlan_add_del_tunnel_t_handler { vl_api_vxlan_add_del_tunnel_reply_t *rmp; int rv = 0; - vnet_vxlan_add_del_tunnel_args_t _a, *a = &_a; - u32 encap_fib_index; - uword *p; ip4_main_t *im = &ip4_main; - vnet_main_t *vnm = vnet_get_main (); - u32 sw_if_index = ~0; - p = hash_get (im->fib_index_by_table_id, ntohl (mp->encap_vrf_id)); + uword *p = hash_get (im->fib_index_by_table_id, ntohl (mp->encap_vrf_id)); if (!p) { rv = VNET_API_ERROR_NO_SUCH_FIB; goto out; } - encap_fib_index = p[0]; - memset (a, 0, sizeof (*a)); - - a->is_add = mp->is_add; - a->is_ip6 = mp->is_ipv6; - /* ip addresses sent in network byte order */ - ip46_from_addr_buf (mp->is_ipv6, mp->dst_address, &a->dst); - ip46_from_addr_buf (mp->is_ipv6, mp->src_address, &a->src); + vnet_vxlan_add_del_tunnel_args_t a = { + .is_add = mp->is_add, + .is_ip6 = mp->is_ipv6, + .mcast_sw_if_index = ntohl (mp->mcast_sw_if_index), + .encap_fib_index = p[0], + .decap_next_index = ntohl (mp->decap_next_index), + .vni = ntohl (mp->vni), + .dst = to_ip46 (mp->is_ipv6, mp->dst_address), + .src = to_ip46 (mp->is_ipv6, mp->src_address), + }; /* Check src & dst are different */ - if (ip46_address_cmp (&a->dst, &a->src) == 0) + if (ip46_address_cmp (&a.dst, &a.src) == 0) { rv = VNET_API_ERROR_SAME_SRC_DST; goto out; } - a->mcast_sw_if_index = ntohl (mp->mcast_sw_if_index); - if (ip46_address_is_multicast (&a->dst) && - pool_is_free_index (vnm->interface_main.sw_interfaces, - a->mcast_sw_if_index)) + if (ip46_address_is_multicast (&a.dst) && + !vnet_sw_if_index_is_api_valid (a.mcast_sw_if_index)) { rv = VNET_API_ERROR_INVALID_SW_IF_INDEX; goto out; } - a->encap_fib_index = encap_fib_index; - a->decap_next_index = ntohl (mp->decap_next_index); - a->vni = ntohl (mp->vni); - rv = vnet_vxlan_add_del_tunnel (a, &sw_if_index); + + u32 sw_if_index = ~0; + rv = vnet_vxlan_add_del_tunnel (&a, &sw_if_index); out: /* *INDENT-OFF* */ @@ -129,7 +116,7 @@ out: } static void send_vxlan_tunnel_details - (vxlan_tunnel_t * t, unix_shared_memory_queue_t * q, u32 context) + (vxlan_tunnel_t * t, svm_queue_t * q, u32 context) { vl_api_vxlan_tunnel_details_t *rmp; ip4_main_t *im4 = &ip4_main; @@ -164,7 +151,7 @@ static void send_vxlan_tunnel_details static void vl_api_vxlan_tunnel_dump_t_handler (vl_api_vxlan_tunnel_dump_t * mp) { - unix_shared_memory_queue_t *q; + svm_queue_t *q; vxlan_main_t *vxm = &vxlan_main; vxlan_tunnel_t *t; u32 sw_if_index;