]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: ipv6ra allow to ignore addresses
authorSusant Sahani <ssahani@gmail.com>
Thu, 14 Feb 2019 15:35:17 +0000 (21:05 +0530)
committerSusant Sahani <ssahani@gmail.com>
Thu, 14 Feb 2019 15:35:17 +0000 (21:05 +0530)
Allows to ignore prefixes.

```
UseAutonomousPrefix=
UseOnLinkPrefix=
```

closes #9582

man/systemd.network.xml
src/network/networkd-ndisc.c
src/network/networkd-network-gperf.gperf
src/network/networkd-network.c
src/network/networkd-network.h

index ee464ffff4c7b4ae4d212fb150c141c0c7126298..f68262349590c25ff7388e8b64c64f844486df9f 100644 (file)
             </para>
           </listitem>
         </varlistentry>
+
+        <varlistentry>
+          <term><varname>UseAutonomousPrefix=</varname></term>
+          <listitem>
+            <para>When true (the default), the autonomous prefix received in the Router Advertisement will be used and take
+            precedence over any statically configured ones.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><varname>UseOnLinkPrefix=</varname></term>
+          <listitem>
+            <para>When true (the default), the onlink prefix received in the Router Advertisement will be used and take
+            precedence over any statically configured ones.</para>
+          </listitem>
+        </varlistentry>
+
       </variablelist>
   </refsect1>
 
index e5b8d115551b71f2edb57eb5978087fc1d778544..b8384dfe537e0cccddc1fe3202b2a3b2414811d6 100644 (file)
@@ -527,10 +527,13 @@ static void ndisc_router_process_options(Link *link, sd_ndisc_router *rt) {
                                 return;
                         }
 
-                        if (flags & ND_OPT_PI_FLAG_ONLINK)
-                                (void) ndisc_router_process_onlink_prefix(link, rt);
-                        if (flags & ND_OPT_PI_FLAG_AUTO)
-                                (void) ndisc_router_process_autonomous_prefix(link, rt);
+                        if (link->network->ipv6_accept_ra_use_onlink_prefix)
+                                if (flags & ND_OPT_PI_FLAG_ONLINK)
+                                        (void) ndisc_router_process_onlink_prefix(link, rt);
+
+                        if (link->network->ipv6_accept_ra_use_autonomous_prefix)
+                                if (flags & ND_OPT_PI_FLAG_AUTO)
+                                        (void) ndisc_router_process_autonomous_prefix(link, rt);
 
                         break;
                 }
index 5d8aede59303dd52e8a9c9d9809eb1fe11cac272..20397dc7d44a9ca1965f43eb8c73989409297e18 100644 (file)
@@ -146,6 +146,8 @@ DHCP.IAID,                              config_parse_iaid,
 DHCP.ListenPort,                        config_parse_uint16,                            0,                             offsetof(Network, dhcp_client_port)
 DHCP.RapidCommit,                       config_parse_bool,                              0,                             offsetof(Network, rapid_commit)
 DHCP.ForceDHCPv6PDOtherInformation,     config_parse_bool,                              0,                             offsetof(Network, dhcp6_force_pd_other_information)
+IPv6AcceptRA.UseAutonomousPrefix,       config_parse_bool,                              0,                             offsetof(Network, ipv6_accept_ra_use_autonomous_prefix)
+IPv6AcceptRA.UseOnLinkPrefix,           config_parse_bool,                              0,                             offsetof(Network, ipv6_accept_ra_use_onlink_prefix)
 IPv6AcceptRA.UseDNS,                    config_parse_bool,                              0,                             offsetof(Network, ipv6_accept_ra_use_dns)
 IPv6AcceptRA.UseDomains,                config_parse_dhcp_use_domains,                  0,                             offsetof(Network, ipv6_accept_ra_use_domains)
 IPv6AcceptRA.RouteTable,                config_parse_uint32,                            0,                             offsetof(Network, ipv6_accept_ra_route_table)
index 12344ec695b7a923a4a8d8b2abda34f8358a0e0a..623a00e66801c551e628886056f5a7ff24c35c0d 100644 (file)
@@ -206,6 +206,8 @@ int network_load_one(Manager *manager, const char *filename) {
                 .multicast = -1,
                 .allmulticast = -1,
                 .ipv6_accept_ra_use_dns = true,
+                .ipv6_accept_ra_use_autonomous_prefix = true,
+                .ipv6_accept_ra_use_onlink_prefix = true,
                 .ipv6_accept_ra_route_table = RT_TABLE_MAIN,
         };
 
index f6e62cdd79930ec1be853f203201675e22549d93..8ec6b6b689f74e6248302e965671bd97147ee800 100644 (file)
@@ -209,6 +209,8 @@ struct Network {
         uint32_t ipv6_mtu;
 
         bool ipv6_accept_ra_use_dns;
+        bool ipv6_accept_ra_use_autonomous_prefix;
+        bool ipv6_accept_ra_use_onlink_prefix;
         bool active_slave;
         bool primary_slave;
         DHCPUseDomains ipv6_accept_ra_use_domains;