tap: fix the host mac address
Tap configuration code sets the host mac address two time. This patch fixes it. Type: fix Change-Id: I7bebb9b7f25352a8a9a98bae6a0636757c0cea9c Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
ffad890961
commit
3039753eda
@@ -57,7 +57,8 @@ tap_create_command_fn (vlib_main_t * vm, unformat_input_t * input,
|
|||||||
else if (unformat (line_input, "host-ns %s", &args.host_namespace))
|
else if (unformat (line_input, "host-ns %s", &args.host_namespace))
|
||||||
;
|
;
|
||||||
else if (unformat (line_input, "host-mac-addr %U",
|
else if (unformat (line_input, "host-mac-addr %U",
|
||||||
unformat_ethernet_address, args.host_mac_addr))
|
unformat_ethernet_address,
|
||||||
|
args.host_mac_addr.bytes))
|
||||||
;
|
;
|
||||||
else if (unformat (line_input, "host-bridge %s", &args.host_bridge))
|
else if (unformat (line_input, "host-bridge %s", &args.host_bridge))
|
||||||
;
|
;
|
||||||
|
@@ -170,10 +170,6 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args)
|
|||||||
vif->num_rxqs = args->num_rx_queues;
|
vif->num_rxqs = args->num_rx_queues;
|
||||||
num_q_pairs = clib_max (vif->num_rxqs, vif->num_txqs);
|
num_q_pairs = clib_max (vif->num_rxqs, vif->num_txqs);
|
||||||
|
|
||||||
if (ethernet_mac_address_is_zero (args->host_mac_addr.bytes))
|
|
||||||
ethernet_mac_address_generate (args->host_mac_addr.bytes);
|
|
||||||
clib_memcpy (vif->host_mac_addr, args->host_mac_addr.bytes, 6);
|
|
||||||
|
|
||||||
if ((vif->tap_fd = tfd = open ("/dev/net/tun", O_RDWR | O_NONBLOCK)) < 0)
|
if ((vif->tap_fd = tfd = open ("/dev/net/tun", O_RDWR | O_NONBLOCK)) < 0)
|
||||||
{
|
{
|
||||||
args->rv = VNET_API_ERROR_SYSCALL_ERROR_2;
|
args->rv = VNET_API_ERROR_SYSCALL_ERROR_2;
|
||||||
@@ -245,13 +241,6 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args)
|
|||||||
tap_log_dbg (vif, "TUNSETOFFLOAD: fd %d offload 0x%lx", tfd, offload);
|
tap_log_dbg (vif, "TUNSETOFFLOAD: fd %d offload 0x%lx", tfd, offload);
|
||||||
_IOCTL (tfd, TUNSETOFFLOAD, offload);
|
_IOCTL (tfd, TUNSETOFFLOAD, offload);
|
||||||
|
|
||||||
clib_memset (&ifr, 0, sizeof (ifr));
|
|
||||||
ifr.ifr_addr.sa_family = ARPHRD_ETHER;
|
|
||||||
clib_memcpy (ifr.ifr_hwaddr.sa_data, vif->host_mac_addr, 6);
|
|
||||||
tap_log_dbg (vif, "SIOCSIFHWADDR: fd %d hwaddr %U", tfd,
|
|
||||||
format_hex_bytes, ifr.ifr_hwaddr.sa_data, 6);
|
|
||||||
_IOCTL (tfd, SIOCSIFHWADDR, (void *) &ifr);
|
|
||||||
|
|
||||||
/* open vhost-net fd for each queue pair and set ownership */
|
/* open vhost-net fd for each queue pair and set ownership */
|
||||||
for (i = 0; i < num_q_pairs; i++)
|
for (i = 0; i < num_q_pairs; i++)
|
||||||
{
|
{
|
||||||
@@ -350,15 +339,14 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ethernet_mac_address_is_zero (args->host_mac_addr.bytes))
|
if (ethernet_mac_address_is_zero (args->host_mac_addr.bytes))
|
||||||
|
ethernet_mac_address_generate (args->host_mac_addr.bytes);
|
||||||
|
args->error = vnet_netlink_set_link_addr (vif->ifindex,
|
||||||
|
args->host_mac_addr.bytes);
|
||||||
|
if (args->error)
|
||||||
{
|
{
|
||||||
args->error = vnet_netlink_set_link_addr (vif->ifindex,
|
args->rv = VNET_API_ERROR_NETLINK_ERROR;
|
||||||
args->host_mac_addr.bytes);
|
goto error;
|
||||||
if (args->error)
|
|
||||||
{
|
|
||||||
args->rv = VNET_API_ERROR_NETLINK_ERROR;
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args->host_bridge)
|
if (args->host_bridge)
|
||||||
|
@@ -299,6 +299,8 @@ virtio_show (vlib_main_t * vm, u32 * hw_if_indices, u8 show_descr, u32 type)
|
|||||||
if (vif->host_mtu_size)
|
if (vif->host_mtu_size)
|
||||||
vlib_cli_output (vm, " host-mtu-size \"%d\"",
|
vlib_cli_output (vm, " host-mtu-size \"%d\"",
|
||||||
vif->host_mtu_size);
|
vif->host_mtu_size);
|
||||||
|
vlib_cli_output (vm, " host-mac-addr: %U",
|
||||||
|
format_ethernet_address, vif->host_mac_addr);
|
||||||
|
|
||||||
vec_foreach_index (i, vif->vhost_fds)
|
vec_foreach_index (i, vif->vhost_fds)
|
||||||
str = format (str, " %d", vif->vhost_fds[i]);
|
str = format (str, " %d", vif->vhost_fds[i]);
|
||||||
|
Reference in New Issue
Block a user