]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: IPv6LinkLocalAddressGenerationMode=none disables IPv6LL addressing 19704/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 21 May 2021 23:15:00 +0000 (08:15 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 23 May 2021 08:13:06 +0000 (17:13 +0900)
man/systemd.network.xml
src/network/networkd-network.c

index 61acea1a8b5a09a767adeb2acd248663390796fd..e267d4d40c68f92835d78d05daf9cee2e8038485 100644 (file)
         <varlistentry>
           <term><varname>IPv6LinkLocalAddressGenerationMode=</varname></term>
           <listitem>
-            <para>Specifies how IPv6 link local address is generated. Takes one of <literal>eui64</literal>,
-            <literal>none</literal>, <literal>stable-privacy</literal> and <literal>random</literal>.
-            When unset, the kernel's default will be used. Note that if <varname>LinkLocalAddressing=</varname>
-            not configured as <literal>ipv6</literal> then <varname>IPv6LinkLocalAddressGenerationMode=</varname>
-            is ignored.</para>
+            <para>Specifies how IPv6 link local address is generated. Takes one of
+            <literal>eui64</literal>, <literal>none</literal>, <literal>stable-privacy</literal> and
+            <literal>random</literal>. When unset, the kernel's default will be used. Note that if
+            <varname>LinkLocalAddressing=</varname> is <literal>no</literal> or
+            <literal>ipv4</literal>, then <varname>IPv6LinkLocalAddressGenerationMode=</varname> will
+            be ignored. Also, even if <varname>LinkLocalAddressing=</varname> is <literal>yes</literal>
+            or <literal>ipv6</literal>, setting
+            <varname>IPv6LinkLocalAddressGenerationMode=none</varname> disables to configure an IPv6
+            link-local address.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
index bf2c0e99d434a3fbb7d8d096d443d9e65f7d5dcc..0fa505bcbb3d0418518abd111b6b5782666f418e 100644 (file)
@@ -170,6 +170,8 @@ int network_verify(Network *network) {
 
         if (network->link_local < 0)
                 network->link_local = network->bridge ? ADDRESS_FAMILY_NO : ADDRESS_FAMILY_IPV6;
+        if (network->ipv6ll_address_gen_mode == IPV6_LINK_LOCAL_ADDRESSS_GEN_MODE_NONE)
+                SET_FLAG(network->link_local, ADDRESS_FAMILY_IPV6, false);
 
         /* IPMasquerade implies IPForward */
         network->ip_forward |= network->ip_masquerade;