summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-04-08 21:58:11 +0200
committerGitHub <noreply@github.com>2019-04-08 21:58:11 +0200
commit2c9e7540e05a9ec6aaebbec901e01a362cbe2f5d (patch)
tree005c4e566e17e102763f4a1c07be742a713461c2
parentinhibit: fix argv[] usage (diff)
parentman: add a lengthy example for NamePolicy= debugging (diff)
downloadsystemd-2c9e7540e05a9ec6aaebbec901e01a362cbe2f5d.tar.xz
systemd-2c9e7540e05a9ec6aaebbec901e01a362cbe2f5d.zip
Merge pull request #12241 from keszybz/two-man-link-additions
Two man link additions
-rw-r--r--man/systemd.link.xml74
1 files changed, 65 insertions, 9 deletions
diff --git a/man/systemd.link.xml b/man/systemd.link.xml
index 7594c4996e..af9799e8c0 100644
--- a/man/systemd.link.xml
+++ b/man/systemd.link.xml
@@ -242,9 +242,11 @@
<listitem>
<para>An ordered, space-separated list of policies by which the interface name should be set.
<varname>NamePolicy=</varname> may be disabled by specifying <option>net.ifnames=0</option> on the
- kernel command line. Each of the policies may fail, and the first successful one is used. The name
+ kernel command line. Each of the policies may fail, and the first successful one is used. The name
is not set directly, but is exported to udev as the property <option>ID_NET_NAME</option>, which
- is, by default, used by a udev rule to set <varname>NAME</varname>. The available policies are:
+ is, by default, used by a
+ <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ rule to set <varname>NAME</varname>. The available policies are:
</para>
<variablelist>
@@ -312,11 +314,10 @@
<varlistentry>
<term><varname>Name=</varname></term>
<listitem>
- <para>The interface name to use in case all the
- policies specified in
- <varname>NamePolicy=</varname> fail, or in case
- <varname>NamePolicy=</varname> is missing or
- disabled.</para>
+ <para>The interface name to use. This option has lower precedence than
+ <varname>NamePolicy=</varname>, so for this setting to take effect, <varname>NamePolicy=</varname>
+ must either be unset, empty, disabled, or all policies configured there must fail. Also see the
+ example below with <literal>Name=dmz0</literal>.</para>
<para>Note that specifying a name that the kernel might use for another
interface (for example <literal>eth0</literal>) is dangerous because the
@@ -618,8 +619,7 @@ MACAddressPolicy=persistent</programlisting>
<example>
<title>/etc/systemd/network/10-dmz.link</title>
- <para>This example assigns the fixed name
- <literal>dmz0</literal> to the interface with the MAC address
+ <para>This example assigns the fixed name <literal>dmz0</literal> to the interface with the MAC address
00:a0:de:63:7a:e6:</para>
<programlisting>[Match]
@@ -627,6 +627,62 @@ MACAddress=00:a0:de:63:7a:e6
[Link]
Name=dmz0</programlisting>
+
+ <para><varname>NamePolicy=</varname> is not set, so <varname>Name=</varname> takes effect. We use the
+ <literal>10-</literal> prefix to order this file early in the list. Note that it needs to before
+ <literal>99-link</literal>, i.e. it needs a numerical prefix, to have any effect at all.</para>
+ </example>
+
+ <example>
+ <title>Debugging <varname>NamePolicy=</varname> assignments</title>
+
+ <programlisting>$ sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/hub0
+…
+Parsed configuration file /usr/lib/systemd/network/99-default.link
+Parsed configuration file /etc/systemd/network/10-eth0.link
+ID_NET_DRIVER=cdc_ether
+Config file /etc/systemd/network/10-eth0.link applies to device hub0
+link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
+hub0: Device has name_assign_type=4
+Using default interface naming scheme 'v240'.
+hub0: Policies didn't yield a name, using specified Name=hub0.
+ID_NET_LINK_FILE=/etc/systemd/network/10-eth0.link
+ID_NET_NAME=hub0
+…</programlisting>
+
+ <para>Explicit <varname>Name=</varname> configuration wins in this case.</para>
+
+ <programlisting>sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/enp0s31f6
+…
+Parsed configuration file /usr/lib/systemd/network/99-default.link
+Parsed configuration file /etc/systemd/network/10-eth0.link
+Created link configuration context.
+ID_NET_DRIVER=e1000e
+Config file /usr/lib/systemd/network/99-default.link applies to device enp0s31f6
+link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
+enp0s31f6: Device has name_assign_type=4
+Using default interface naming scheme 'v240'.
+enp0s31f6: Policy *keep*: keeping existing userspace name
+enp0s31f6: Device has addr_assign_type=0
+enp0s31f6: MAC on the device already matches policy *persistent*
+ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
+…
+</programlisting>
+
+ <para>In this case, the interface was already renamed, so the <option>keep</option> policy specified as
+ the first option in <filename noindex='true'>99-default.link</filename> means that the existing name is
+ preserved. If <option>keep</option> was removed, or if were in boot before the renaming has happened,
+ we might get the following instead:</para>
+
+ <programlisting>enp0s31f6: Policy *path* yields "enp0s31f6".
+enp0s31f6: Device has addr_assign_type=0
+enp0s31f6: MAC on the device already matches policy *persistent*
+ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
+ID_NET_NAME=enp0s31f6
+…
+</programlisting>
+
+ <para>Please note that the details of output are subject to change.</para>
</example>
<example>