Regression caused by wait-online backport f4831559171 ff.
systemd version the issue has been seen with
252.17-1~deb12u1
Used distribution
Debian 12.2
Linux kernel version used
6.1.0-13-amd64
CPU architectures issue was seen on
x86_64
Component
systemd-networkd-wait-online
Expected behaviour you didn't see
systemd-networkd-wait-online should exit with success (zero exit code) when neither '--any' nor '--interface' options specified and
at least one of the interfaces must be in configured state.
Unexpected behaviour you saw
$ /lib/systemd/systemd-networkd-wait-online
Timeout occurred while waiting for network connectivity.
$ networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eth0 ether routable configured
3 eth1 ether carrier configured
4 eth2 ether off unmanaged
5 eth3 ether off unmanaged
5 links listed.
Steps to reproduce the problem
Configure one interface with a static IP address using systemd-networkd. Maybe you need multiple interfaces and at least one unmanaged interface to hit this.
Additional program output to the terminal or log subsystem illustrating the issue
$ SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd-wait-online
Found link 5
Found link 4
Found link 3
Found link 2
Found link 1
eth0: link is configured by networkd and online.
eth2: link is not managed by networkd.
eth1: Operational state 'carrier' is not in range ['degraded':'routable']
Timeout occurred while waiting for network connectivity.
I upraded from Debian 12.1 to Debian 12.2 using apt-get dist-upgrade which upgraded systemd from 252.12-1~deb12u1 to 252.17-1~deb12u1.
After reboot I noticed that systemd-networkd-wait-online.service failed.
Calling /lib/systemd/systemd-networkd-wait-online manually showed the same problem.
/lib/systemd/systemd-networkd-wait-online --any or /lib/systemd/systemd-networkd-wait-online -i eth0 worked.
I went to https://github.com/systemd/systemd-stable/compare/v252.12...v252.17 and noticed few commits touching wait-online, for example https://github.com/systemd/systemd-stable/commit/f4831559171033ab044758e7fd68627e3bfe84a5
It still mentions that when you call wait-online with neither --any nor --interface option (which is the default in Debian) that the program should still exit with success. But as shown, it doesn't.
I restored systemd-networkd-wait-online from my backup (252.12-1~deb12u1) and it still works as expected:
$ SYSTEMD_LOG_LEVEL=debug ./systemd-networkd-wait-online
Found link 5
Found link 4
Found link 3
Found link 2
Found link 1
eth3: link is not managed by networkd (yet?).
eth2: link is not managed by networkd (yet?).
eth0: link is configured by networkd and online.
eth1: Operational state 'carrier' is not in range ['degraded':'routable']
lo: link is ignored
So I believe that the mentioned change is causing a regression.
@yuwata Can you help here?