Skip site navigation (1)Skip section navigation (2)
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>