tap: Move all-ones initialisation of mac_guest to tap_sock_init()
It has nothing to do with tap_sock_unix_init(). It used to be there as
that function could be called multiple times per passt instance, but
it's not the case anymore.
This also takes care of the fact that, with --fd, we wouldn't set the
initial MAC address, so we would need to wait for the guest to send us
an ARP packet before we could exchange data.
Fixes: 6b4e68383c
("passt, tap: Add --fd option")
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Richard W.M. Jones <rjones@redhat.com>
This commit is contained in:
parent
45b8632dcc
commit
d02bb6ca05
1 changed files with 6 additions and 6 deletions
12
tap.c
12
tap.c
|
@ -1111,12 +1111,6 @@ static void tap_sock_unix_init(struct ctx *c)
|
|||
if (fd < 0)
|
||||
die("UNIX socket: %s", strerror(errno));
|
||||
|
||||
/* In passt mode, we don't know the guest's MAC until it sends
|
||||
* us packets. Use the broadcast address so our first packets
|
||||
* will reach it.
|
||||
*/
|
||||
memset(&c->mac_guest, 0xff, sizeof(c->mac_guest));
|
||||
|
||||
for (i = 1; i < UNIX_SOCK_MAX; i++) {
|
||||
char *path = addr.sun_path;
|
||||
int ex, ret;
|
||||
|
@ -1312,6 +1306,12 @@ void tap_sock_init(struct ctx *c)
|
|||
if (c->mode == MODE_PASST) {
|
||||
if (c->fd_tap_listen == -1)
|
||||
tap_sock_unix_init(c);
|
||||
|
||||
/* In passt mode, we don't know the guest's MAC address until it
|
||||
* sends us packets. Use the broadcast address so that our
|
||||
* first packets will reach it.
|
||||
*/
|
||||
memset(&c->mac_guest, 0xff, sizeof(c->mac_guest));
|
||||
} else {
|
||||
tap_sock_tun_init(c);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue