An ifupdown-ng executor which blocks until the interface is actually running

git clone https://git.8pit.net/ifupdown-ng-waitif.git


2022-07-31 README.md: Update status Sören Tempel
2022-07-09 Prefix verbose output with executor name Sören Tempel
2022-07-09 Default to a 30s timeout value, instead of blocking indefinitely Sören Tempel
2022-07-09 Add comment regarding root privileges Sören Tempel
2022-06-28 Improve verbose debug output regarding timeout Sören Tempel

Clone the repository to access all 50 commits.


This software integrates ifupdown-ng with netlink link state detection via libmnl. I use this software myself and I am presently not aware of any bugs with the implemented functionality.


ifupdown-ng is a re-implementation of the ifup and ifdown commands provided by Debian and BusyBox. These commands configure network interfaces according to the /etc/network/interfaces configuration file. Interface configuration is split into multiple phases. For each phase, different executors are run. For example, a DHCP client may be run as an executor in the up phase. Unfortunately, ifupdown-ng doesn’t check the interface link state before running executors of the up phase. As such, executors which require the link to be up (e.g. the DHCP executor) usually retry requests in a configured interval until the requests succeed. As it turns out, choosing an appropriate interval is difficult. Inspired by bncm-waitif, this repository provides an executor which blocks until the interface state is changed to running by the Linux netlink subsystem.


In order to build this software, install the following dependencies:

Afterwards, run the following commands:

$ make
# make install

Refer to the GNUmakefile regarding available configuration variables.


In order to use this executor, add a use waitif declaration to your interface configuration in /etc/network/interfaces. For example:

iface wlan0
    use waitif
    use dhcp

In this case, the waitif executor will block in the up phase until the interface switched to the IFF_RUNNING state. Afterwards, the dhcp executor is run and it will hopefully be able to retrieve a lease immediately. By default, the waitif executor will wait for up to 30 seconds for the interface to come up. If the interface doesn’t change to IFF_RUNNING within this timespan, then the waitif executor exits with EXIT_FAILURE. It is possible to configure a different timeout value using waitif-timeout, for example:

iface wlan0
    waitif-timeout 10
    use waitif
    use dhcp

The waitif-timeout keyword specifies a timeout in seconds, the timeout can be set to zero to wait indefinitely.


ifupdown-ng currently does not stop executing executors of a given phase if one of them fails. As such, if the waitif up executor fails (e.g. due to a timeout) ifupdown-ng will still attempt to retrieve a DCHP lease. See: ifupdown-ng#179.


This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.