diff options
author | Mohsin Kazmi <sykazmi@cisco.com> | 2020-02-28 14:21:25 +0100 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2020-03-04 20:08:24 +0000 |
commit | 488e74adf48406441434ba5ea7e03339e9c09751 (patch) | |
tree | 6fde7ff40034985f0e91c720d46dcf1739124ccc /src/vnet | |
parent | 03bcbd3621867dac4c5dcb32b59f70424a7bc4d9 (diff) |
tap: misc fixes
Ticket: VPPSUPP-58
1) Previously, host mtu can't be set if tap interface is in namespace.
2) generate the host mac address, if it is not provided.
3) fix the parameters for tap_create_v2 in vat.
4) fix the pretty print of parameters for tap_create_v2 in custom dump.
Type: fix
Change-Id: I18898af90dbd37d773a40b6535dd9c03c9984679
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/devices/tap/tap.c | 39 | ||||
-rw-r--r-- | src/vnet/devices/virtio/virtio.c | 2 |
2 files changed, 21 insertions, 20 deletions
diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index f2903a95adc..7f0a0e9943d 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -246,15 +246,14 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) } } - if (!ethernet_mac_address_is_zero (args->host_mac_addr)) + if (ethernet_mac_address_is_zero (args->host_mac_addr)) + ethernet_mac_address_generate (args->host_mac_addr); + args->error = vnet_netlink_set_link_addr (vif->ifindex, + args->host_mac_addr); + if (args->error) { - args->error = vnet_netlink_set_link_addr (vif->ifindex, - args->host_mac_addr); - if (args->error) - { - args->rv = VNET_API_ERROR_NETLINK_ERROR; - goto error; - } + args->rv = VNET_API_ERROR_NETLINK_ERROR; + goto error; } if (args->host_bridge) @@ -320,18 +319,6 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) } } - /* switch back to old net namespace */ - if (args->host_namespace) - { - if (setns (old_netns_fd, CLONE_NEWNET) == -1) - { - args->rv = VNET_API_ERROR_SYSCALL_ERROR_2; - args->error = clib_error_return_unix (0, "setns '%s'", - args->host_namespace); - goto error; - } - } - if (args->host_mtu_set) { args->error = @@ -355,6 +342,18 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) args->host_mtu_size = tm->host_mtu_size; } + /* switch back to old net namespace */ + if (args->host_namespace) + { + if (setns (old_netns_fd, CLONE_NEWNET) == -1) + { + args->rv = VNET_API_ERROR_SYSCALL_ERROR_2; + args->error = clib_error_return_unix (0, "setns '%s'", + args->host_namespace); + goto error; + } + } + /* Set vhost memory table */ i = sizeof (struct vhost_memory) + sizeof (struct vhost_memory_region); vhost_mem = clib_mem_alloc (i); diff --git a/src/vnet/devices/virtio/virtio.c b/src/vnet/devices/virtio/virtio.c index 90adf97dc3c..88511d74411 100644 --- a/src/vnet/devices/virtio/virtio.c +++ b/src/vnet/devices/virtio/virtio.c @@ -317,6 +317,8 @@ virtio_show (vlib_main_t * vm, u32 * hw_if_indices, u8 show_descr, u32 type) vlib_cli_output (vm, " name \"%s\"", vif->host_if_name); if (vif->net_ns) vlib_cli_output (vm, " host-ns \"%s\"", vif->net_ns); + vlib_cli_output (vm, " host-mac-addr %U", format_ethernet_address, + vif->host_mac_addr); if (vif->host_mtu_size) vlib_cli_output (vm, " host-mtu-size \"%d\"", vif->host_mtu_size); |