unit: introduce wait-online@.service for specific interface

This should be useful when a host has multiple interfaces.

Inspired by #22246.
This commit is contained in:
Yu Watanabe 2022-01-28 15:30:01 +09:00 committed by Daan De Meyer
parent 6c66575f0b
commit 674df18a32
4 changed files with 40 additions and 1 deletions

View file

@ -932,7 +932,7 @@ manpages = [
['systemd-network-generator.service', '8', ['systemd-network-generator'], ''], ['systemd-network-generator.service', '8', ['systemd-network-generator'], ''],
['systemd-networkd-wait-online.service', ['systemd-networkd-wait-online.service',
'8', '8',
['systemd-networkd-wait-online'], ['systemd-networkd-wait-online', 'systemd-networkd-wait-online@.service'],
'ENABLE_NETWORKD'], 'ENABLE_NETWORKD'],
['systemd-networkd.service', '8', ['systemd-networkd'], 'ENABLE_NETWORKD'], ['systemd-networkd.service', '8', ['systemd-networkd'], 'ENABLE_NETWORKD'],
['systemd-notify', '1', [], ''], ['systemd-notify', '1', [], ''],

View file

@ -18,12 +18,14 @@
<refnamediv> <refnamediv>
<refname>systemd-networkd-wait-online.service</refname> <refname>systemd-networkd-wait-online.service</refname>
<refname>systemd-networkd-wait-online@.service</refname>
<refname>systemd-networkd-wait-online</refname> <refname>systemd-networkd-wait-online</refname>
<refpurpose>Wait for network to come online</refpurpose> <refpurpose>Wait for network to come online</refpurpose>
</refnamediv> </refnamediv>
<refsynopsisdiv> <refsynopsisdiv>
<para><filename>systemd-networkd-wait-online.service</filename></para> <para><filename>systemd-networkd-wait-online.service</filename></para>
<para><filename>systemd-networkd-wait-online@.service</filename></para>
<para><filename>/usr/lib/systemd/systemd-networkd-wait-online</filename></para> <para><filename>/usr/lib/systemd/systemd-networkd-wait-online</filename></para>
</refsynopsisdiv> </refsynopsisdiv>
@ -38,6 +40,17 @@
to be fully configured or failed, and for at least one link to be online. Here, online means that to be fully configured or failed, and for at least one link to be online. Here, online means that
the link's operational state is equal or higher than <literal>degraded</literal>. The threshold the link's operational state is equal or higher than <literal>degraded</literal>. The threshold
can be configured by <option>--operational-state=</option> option.</para> can be configured by <option>--operational-state=</option> option.</para>
<para>The service <filename>systemd-networkd-wait-online.service</filename> invokes
<command>systemd-networkd-wait-online</command> without any options. Thus, it waits for all managed
interfaces to be configured or failed, and for at least one to be online.</para>
<para>The service <filename>systemd-networkd-wait-online@.service</filename> takes an interface
name, and invokes <command>systemd-networkd-wait-online</command> with <option>-i</option> and the
specified interface name. Thus, wait for the specified interface to be configured and online. For
example, <filename>systemd-networkd-wait-online@eth0.service</filename> waits for
<filename>eth0</filename> to be configured by <command>systemd-networkd</command> and online.
</para>
</refsect1> </refsect1>
<refsect1> <refsect1>

View file

@ -220,6 +220,7 @@ in_units = [
['systemd-network-generator.service', ''], ['systemd-network-generator.service', ''],
['systemd-networkd.service', 'ENABLE_NETWORKD'], ['systemd-networkd.service', 'ENABLE_NETWORKD'],
['systemd-networkd-wait-online.service', 'ENABLE_NETWORKD'], ['systemd-networkd-wait-online.service', 'ENABLE_NETWORKD'],
['systemd-networkd-wait-online@.service','ENABLE_NETWORKD'],
['systemd-nspawn@.service', ''], ['systemd-nspawn@.service', ''],
['systemd-oomd.service', 'ENABLE_OOMD'], ['systemd-oomd.service', 'ENABLE_OOMD'],
['systemd-portabled.service', 'ENABLE_PORTABLED', ['systemd-portabled.service', 'ENABLE_PORTABLED',

View file

@ -0,0 +1,25 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Wait for Network Interface %i to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
DefaultDependencies=no
Conflicts=shutdown.target
Requires=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart={{ROOTLIBEXECDIR}}/systemd-networkd-wait-online -i %i
RemainAfterExit=yes
[Install]
WantedBy=network-online.target