]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: add setting to support RA without DHCPv6 client
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 15 Feb 2020 16:32:49 +0000 (01:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 6 Mar 2020 16:39:26 +0000 (01:39 +0900)
Closes #13991.

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
test/fuzz/fuzz-network-parser/directives.network

index f2a96d97fbdd5f3402786965ae56c2e30d554ff1..c6fefd8da8a8f66f3ade697e1ae941eb6009b652 100644 (file)
           </listitem>
         </varlistentry>
 
+        <varlistentry>
+          <term><varname>DHCPv6Client=</varname></term>
+          <listitem>
+            <para>Takes a boolean. When true (the default), the DHCPv6 client will be started when the
+            RA has the managed or other information flag.</para>
+          </listitem>
+        </varlistentry>
+
       </variablelist>
   </refsect1>
 
index 90cd0c81abd4acba9431680509898a01b990ff19..fe1de6387ee2c1969a5d18773e9a82016869aa34 100644 (file)
@@ -794,7 +794,8 @@ static int ndisc_router_handler(Link *link, sd_ndisc_router *rt) {
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to get RA flags: %m");
 
-        if (flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER)) {
+        if (flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER) &&
+            link->network->ipv6_accept_ra_start_dhcp6_client) {
                 /* (re)start DHCPv6 client in stateful or stateless mode according to RA flags */
                 r = dhcp6_request_address(link, !(flags & ND_RA_FLAG_MANAGED));
                 if (r < 0 && r != -EBUSY)
index 143ab276c4d723bed5821f99b59adf0a8bafb02a..c0e2479460bd7a43a1f168d16b2e06bcbce5fc53 100644 (file)
@@ -193,6 +193,7 @@ IPv6AcceptRA.UseAutonomousPrefix,            config_parse_bool,
 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.DHCPv6Client,                   config_parse_bool,                                        0,                             offsetof(Network, ipv6_accept_ra_start_dhcp6_client)
 IPv6AcceptRA.RouteTable,                     config_parse_section_route_table,                         0,                             0
 IPv6AcceptRA.BlackList,                      config_parse_ndisc_black_listed_prefix,                   0,                             0
 DHCPServer.MaxLeaseTimeSec,                  config_parse_sec,                                         0,                             offsetof(Network, dhcp_server_max_lease_time_usec)
index 2e716b291e9779b761a5fa7b15e1e75a4c2670e3..066263c28081bf59966780f4c157783507f66534 100644 (file)
@@ -451,6 +451,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                 .ipv6_accept_ra_use_onlink_prefix = true,
                 .ipv6_accept_ra_route_table = RT_TABLE_MAIN,
                 .ipv6_accept_ra_route_table_set = false,
+                .ipv6_accept_ra_start_dhcp6_client = true,
 
                 .keep_configuration = _KEEP_CONFIGURATION_INVALID,
 
index c3be3d95f773bbfac4fa5e3d4e23ed8f6530b85f..1e43635c54a6f8be9f463d05182a30037cc27802 100644 (file)
@@ -214,6 +214,7 @@ struct Network {
         bool ipv6_accept_ra_use_dns;
         bool ipv6_accept_ra_use_autonomous_prefix;
         bool ipv6_accept_ra_use_onlink_prefix;
+        bool ipv6_accept_ra_start_dhcp6_client;
         bool active_slave;
         bool primary_slave;
         DHCPUseDomains ipv6_accept_ra_use_domains;
index 3f517ac0c352f3134c22c73d9e896db4a4585873..82d978795833d69889b4fe792234115af00541de 100644 (file)
@@ -251,6 +251,7 @@ Prefix=
 UseDomains=
 RouteTable=
 UseDNS=
+DHCPv6Client=
 UseAutonomousPrefix=
 UseOnLinkPrefix=
 BlackList=