Package: ifupdown Version: 0.8.8 Severity: important Hello
I have been having a problem where my network devices are not being configured properly on boot. I suspect that my problems are caused in a fundamental oversight in the /etc/init.d/networking init script, though I'm not sure. /etc/init.d/networking calls "udevadm settle" to determine when device drivers are loaded and network devices exist. However, that's not what "udevadm settle" does. "udevadm settle" returns before drivers have finished loading and before devices exist. As a result, it is possible for ifup to try and start network interfaces on devices which don't exist yet. I don't know if ifup itself may have some internal checking to make sure that devices actually exist. If it does, than this checking is insufficient. If it does not, then the situation is even worse than I suspected. In my particular case, I have a bridge interface with eth0 and wlan0 members. I find it common that the wlan0 interface has not finished loading the driver when the bridge attempts to start. I have several "pre-up" commands required for my setup, and they fail because the devices onto which the commands rely don't yet exist (iw or ethtool as examples). The solution to this problem is that the init script must wait for these network devices to exist. Before they exist, it does not seem appropriate for ifup to be called. It is notable that in my particular case, ifquery simply returns the name of my bridge interface, br0, and not the member interfaces (eth0 and wlan0, since they have no normal config stanzas). Thus, ifquery will probably need to know about these interfaces for the init script to wait for them. One possibility is that I should add a config like this, but this might not be a great idea for all types of special interface configs (LACP bundles come to mind): auto eth0 iface eth0 inet manual Alternatively, a new configuration parameter indicating a device dependency, such as "waitdev wlan0" might be appropriate. I don't know what the right solution is here. Feedback would be apreciated. For now, as a workaround, I can do something horrible like this in my bridge interface config: pre-up while ! [ -e /sys/class/net/wlan0 ] ; do echo "dev wlan0 not ready!" ; sleep 0.25 ; done Please advise -- System Information: Debian Release: stretch/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.3.0-1-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages ifupdown depends on: ii adduser 3.113+nmu3 ii init-system-helpers 1.25 ii iproute2 4.3.0-1 ii libc6 2.21-6 ii lsb-base 9.20160110 Versions of packages ifupdown recommends: ii isc-dhcp-client [dhcp-client] 4.3.3-5 Versions of packages ifupdown suggests: pn ppp <none> pn rdnssd <none> -- debconf-show failed