]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
unit: introduce wait-online@.service for specific interface
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 28 Jan 2022 06:30:01 +0000 (15:30 +0900)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 28 Jan 2022 12:52:52 +0000 (12:52 +0000)
This should be useful when a host has multiple interfaces.

Inspired by #22246.

man/rules/meson.build
man/systemd-networkd-wait-online.service.xml
units/meson.build
units/systemd-networkd-wait-online@.service.in [new file with mode: 0644]

index b689b1c1af698eef0db173aac11a131a68c1dd30..7200ecf6810e4799e45326c916bcf9c00ad1e79d 100644 (file)
@@ -932,7 +932,7 @@ manpages = [
  ['systemd-network-generator.service', '8', ['systemd-network-generator'], ''],
  ['systemd-networkd-wait-online.service',
   '8',
-  ['systemd-networkd-wait-online'],
+  ['systemd-networkd-wait-online', 'systemd-networkd-wait-online@.service'],
   'ENABLE_NETWORKD'],
  ['systemd-networkd.service', '8', ['systemd-networkd'], 'ENABLE_NETWORKD'],
  ['systemd-notify', '1', [], ''],
index 9c6b02ac1c80fe5d29b3a96563022ef89fec4352..a3a70db20912e607ba27d14fcaaa4830e820ac80 100644 (file)
 
   <refnamediv>
     <refname>systemd-networkd-wait-online.service</refname>
+    <refname>systemd-networkd-wait-online@.service</refname>
     <refname>systemd-networkd-wait-online</refname>
     <refpurpose>Wait for network to come online</refpurpose>
   </refnamediv>
 
   <refsynopsisdiv>
     <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>
   </refsynopsisdiv>
 
     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
     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>
index 3184433b8f547198befc71ecf67f794fd1e2d2f5..2bb0a8e845de8310418f30495f0bfbd63a40129e 100644 (file)
@@ -220,6 +220,7 @@ in_units = [
         ['systemd-network-generator.service',    ''],
         ['systemd-networkd.service',             'ENABLE_NETWORKD'],
         ['systemd-networkd-wait-online.service', 'ENABLE_NETWORKD'],
+        ['systemd-networkd-wait-online@.service','ENABLE_NETWORKD'],
         ['systemd-nspawn@.service',              ''],
         ['systemd-oomd.service',                 'ENABLE_OOMD'],
         ['systemd-portabled.service',            'ENABLE_PORTABLED',
diff --git a/units/systemd-networkd-wait-online@.service.in b/units/systemd-networkd-wait-online@.service.in
new file mode 100644 (file)
index 0000000..949695f
--- /dev/null
@@ -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