X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fvxlan-gbp%2Fvxlan_gbp_api.c;h=6a87d4dda52e59c063294b033d55dd9585a273b8;hb=4dd4cf4f9c02953f8ce7df0b2912e4da7c6786ed;hp=b7e6935b2f8cdcb988a457f1f5dffaf4a27453d6;hpb=b7b929931a07fbb27b43d5cd105f366c3e29807e;p=vpp.git diff --git a/src/vnet/vxlan-gbp/vxlan_gbp_api.c b/src/vnet/vxlan-gbp/vxlan_gbp_api.c index b7e6935b2f8..6a87d4dda52 100644 --- a/src/vnet/vxlan-gbp/vxlan_gbp_api.c +++ b/src/vnet/vxlan-gbp/vxlan_gbp_api.c @@ -66,10 +66,29 @@ static void REPLY_MACRO (VL_API_SW_INTERFACE_SET_VXLAN_GBP_BYPASS_REPLY); } +static int +vxlan_gbp_tunnel_mode_decode (vl_api_vxlan_gbp_api_tunnel_mode_t in, + vxlan_gbp_tunnel_mode_t * out) +{ + in = clib_net_to_host_u32 (in); + + switch (in) + { + case VXLAN_GBP_API_TUNNEL_MODE_L2: + *out = VXLAN_GBP_TUNNEL_MODE_L2; + return (0); + case VXLAN_GBP_API_TUNNEL_MODE_L3: + *out = VXLAN_GBP_TUNNEL_MODE_L3; + return (0); + } + return (1); +} + static void vl_api_vxlan_gbp_tunnel_add_del_t_handler (vl_api_vxlan_gbp_tunnel_add_del_t * mp) { vl_api_vxlan_gbp_tunnel_add_del_reply_t *rmp; + vxlan_gbp_tunnel_mode_t mode; ip46_address_t src, dst; ip46_type_t itype; int rv = 0; @@ -86,16 +105,21 @@ static void vl_api_vxlan_gbp_tunnel_add_del_t_handler goto out; } + rv = vxlan_gbp_tunnel_mode_decode (mp->tunnel.mode, &mode); + + if (rv) + goto out; + vnet_vxlan_gbp_tunnel_add_del_args_t a = { .is_add = mp->is_add, .is_ip6 = (itype == IP46_TYPE_IP6), .instance = ntohl (mp->tunnel.instance), .mcast_sw_if_index = ntohl (mp->tunnel.mcast_sw_if_index), .encap_fib_index = fib_index, - .decap_next_index = ntohl (mp->tunnel.decap_next_index), .vni = ntohl (mp->tunnel.vni), .dst = dst, .src = src, + .mode = mode, }; /* Check src & dst are different */ @@ -142,7 +166,6 @@ static void send_vxlan_gbp_tunnel_details rmp->tunnel.instance = htonl (t->user_instance); rmp->tunnel.mcast_sw_if_index = htonl (t->mcast_sw_if_index); rmp->tunnel.vni = htonl (t->vni); - rmp->tunnel.decap_next_index = htonl (t->decap_next_index); rmp->tunnel.sw_if_index = htonl (t->sw_if_index); rmp->context = context;