+ vxlan_main_t *vxm = &vxlan_main;
+ vxlan_tunnel_t *t = pool_elt_at_index (vxm->tunnels, t_index);
+ if (!ip46_address_is_ip4 (&t->dst))
+ {
+ rv = VNET_API_ERROR_INVALID_ADDRESS_FAMILY;
+ goto err;
+ }
+
+ vnet_main_t *vnm = vnet_get_main ();
+ vnet_hw_interface_t *hw_if = vnet_get_hw_interface (vnm, hw_if_index);
+ ip4_main_t *im = &ip4_main;
+ u32 rx_fib_index =
+ vec_elt (im->fib_index_by_sw_if_index, hw_if->sw_if_index);
+
+ if (t->encap_fib_index != rx_fib_index)
+ {
+ rv = VNET_API_ERROR_NO_SUCH_FIB;
+ goto err;
+ }
+
+ if (vnet_vxlan_add_del_rx_flow (hw_if_index, t_index, mp->enable))
+ {
+ rv = VNET_API_ERROR_UNSPECIFIED;
+ goto err;
+ }
+ BAD_SW_IF_INDEX_LABEL;
+err:
+
+ REPLY_MACRO (VL_API_VXLAN_OFFLOAD_RX_REPLY);
+}
+
+static void
+ vl_api_sw_interface_set_vxlan_bypass_t_handler
+ (vl_api_sw_interface_set_vxlan_bypass_t * mp)
+{
+ vl_api_sw_interface_set_vxlan_bypass_reply_t *rmp;
+ int rv = 0;
+ u32 sw_if_index = ntohl (mp->sw_if_index);
+
+ VALIDATE_SW_IF_INDEX (mp);
+
+ vnet_int_vxlan_bypass_mode (sw_if_index, mp->is_ipv6, mp->enable);