X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Ftap%2Ftap.c;h=e6a7ba518a665313bee7566609bd5e909421fa6b;hb=7866c4595b65f54f491ffc4e92b1f8cf94d6f142;hp=ff7bd91e8db74783e1394582feeddcac508d1d69;hpb=73e7f427e8865b0af71740c5ecfa55c7ee78dbd1;p=vpp.git diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index ff7bd91e8db..e6a7ba518a6 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -292,6 +292,26 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) goto error; } + if (args->host_ip4_gw_set) + { + args->error = vnet_netlink_add_ip4_route (0, 0, &args->host_ip4_gw); + if (args->error) + { + args->rv = VNET_API_ERROR_NETLINK_ERROR; + goto error; + } + } + + if (args->host_ip6_gw_set) + { + args->error = vnet_netlink_add_ip6_route (0, 0, &args->host_ip6_gw); + if (args->error) + { + args->rv = VNET_API_ERROR_NETLINK_ERROR; + goto error; + } + } + /* switch back to old net namespace */ if (args->host_namespace) { @@ -390,7 +410,7 @@ error: close (vif->tap_fd); if (vif->fd != -1) close (vif->fd); - vec_foreach_index (i, vif->vrings) virtio_vring_free (vif, i); + vec_foreach_index (i, vif->vrings) virtio_vring_free (vm, vif, i); memset (vif, 0, sizeof (virtio_if_t)); pool_put (vim->interfaces, vif); @@ -429,7 +449,7 @@ tap_delete_if (vlib_main_t * vm, u32 sw_if_index) if (vif->fd != -1) close (vif->fd); - vec_foreach_index (i, vif->vrings) virtio_vring_free (vif, i); + vec_foreach_index (i, vif->vrings) virtio_vring_free (vm, vif, i); vec_free (vif->vrings); hash_unset (tm->dev_instance_by_interface_id, vif->id);