networkd: use socket activation when starting networkd
authorMichael Biebl <biebl@debian.org>
Wed, 26 Aug 2020 14:54:45 +0000 (16:54 +0200)
committerMichael Biebl <biebl@debian.org>
Mon, 14 Sep 2020 06:04:39 +0000 (07:04 +0100)
Add After=systemd-networkd.socket to avoid a race condition and networkd
falling back to the non-socket activation code.

Also add Wants=systemd-networkd.socket, so the socket is started when
networkd is started via `systemctl start systemd-networkd.service`.
A Requires is not strictly necessary, as networkd still ships the
non-socket activation code. Should this code be removed one day, the
Wants should be bumped to Requires accordingly.

See also 5544ee85163733eaa50f598fcf3bd9421d4a42f9.

Fixes: #16809
(cherry picked from commit 2c0dffe82db574b6b9e850e48f444674e4e1d7ea)

Gbp-Pq: Name networkd-use-socket-activation-when-starting-networkd.patch

units/systemd-networkd.service.in

index 26731468413d7614d4ed1ed64d16367db591dec8..b7e19449ea80a52823ba80c2ca6118b89d976777 100644 (file)
@@ -13,10 +13,10 @@ Documentation=man:systemd-networkd.service(8)
 ConditionCapability=CAP_NET_ADMIN
 DefaultDependencies=no
 # systemd-udevd.service can be dropped once tuntap is moved to netlink
-After=systemd-udevd.service network-pre.target systemd-sysusers.service systemd-sysctl.service
+After=systemd-networkd.socket systemd-udevd.service network-pre.target systemd-sysusers.service systemd-sysctl.service
 Before=network.target multi-user.target shutdown.target
 Conflicts=shutdown.target
-Wants=network.target
+Wants=systemd-networkd.socket network.target
 
 [Service]
 AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW