Date: Sat, 31 Oct 2020 07:08:25 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 250749] /etc/network.subr: Mitigate absence of LINK_UP notification when VIRTIO_NET_F_STATUS is not negotiated Message-ID: <bug-250749-227@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D250749 Bug ID: 250749 Summary: /etc/network.subr: Mitigate absence of LINK_UP notification when VIRTIO_NET_F_STATUS is not negotiated Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: misc Assignee: bugs@FreeBSD.org Reporter: samy.mahmoudi@gmail.com Created attachment 219229 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D219229&action= =3Dedit Patch file Hi, On some virtual machines (e.g. on VirtualBox, on the cloud platform Vultr, etc.), restarting a vtnet interface configured with DHCP fails to restart dhclient. Because the driver 'if_vtnet' follows the driver requirements of the VIRTIO specification [1], LINK_UP is notified at most once (most probably during t= he boot process) when VIRTIO_NET_F_STATUS is not negotiated. As a result, dhcl= ient can not be restarted via devd. For a similar reason, it might be possible that LINK_UP is not emitted at t= he interface restart even in a variant scenario where VIRTIO_NET_F_STATUS is negotiated (I do not have access to a bhyve-capable computer right now so I= am unable to test). If SYNCDHCP is used to configure the interface, dhclient is restarted via netif/network.subr. The attached patch makes dhclient start from two different ways (devd and netif/network.subr) when the interface is configured with DHCP. In that reg= ard, DHCP would behave exactly like SYNCDHCP and inherit the same race that currently happens with SYNCDHCP when an interface is restarted [2]. =E2=80=A2 Mitigate the absence of LINK_UP notification to restart dhclient,= at least when VIRTIO_NET_F_STATUS is not negotiated =E2=80=A2 Remove a comment note (success of wpaif does imply interface conf= iguration and wpa_supplicant does bring up the interface) =E2=80=A2 Remove a trailing whitespace [1] https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.= html (5.1.4.2 Driver Requirements, second paragraph) [2] This race does not happen during the boot process because devd has not = yet been started when netif runs). It is reproductible on a computer by configu= ring an interface with SYNCDHCP and executing, e.g., 'service netif restart wlan= 0' a dozen of times, or even more easily with a lagg interface by executing, e.g= ., 'service netif restart wlan0 lagg0'. It has no functional impact, but it ma= kes one seriously wonder why 'dhclient is already running' whereas one just restarted one's interface... --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-250749-227>