]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: DHCPv6 - separate DHCPv6 options from DHCPv4 options
authorSusant Sahani <ssahani@vmware.com>
Tue, 9 Jul 2019 14:23:28 +0000 (19:53 +0530)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 10 Jul 2019 07:59:29 +0000 (16:59 +0900)
Closes https://github.com/systemd/systemd/issues/12917

man/systemd.network.xml
src/network/networkd-link.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 d32b60a2c9feb9f19db2aecd5af32536232cd0e6..a57c60080cdee5122b162b510183de17b5e7f6f8 100644 (file)
   <refsect1>
     <title>[DHCP] Section Options</title>
       <para>The <literal>[DHCP]</literal> section configures the
-      DHCPv4 and DHCP6 client, if it is enabled with the
+      DHCPv4 client, if it is enabled with the
       <varname>DHCP=</varname> setting described above:</para>
 
       <variablelist class='network-directives'>
           </listitem>
         </varlistentry>
 
+        <varlistentry>
+          <term><varname>BlackList=</varname></term>
+          <listitem>
+            <para>A whitespace-separated list of IPv4 addresses. DHCP offers from servers in the list are rejected.</para>
+          </listitem>
+        </varlistentry>
+
+       </variablelist>
+   </refsect1>
+
+  <refsect1>
+    <title>[DHCPv6] Section Options</title>
+      <para>The <literal>[DHCPv6]</literal> section configures the DHCPv6 client, if it is enabled with the
+      <varname>DHCPv6=</varname> setting described above:</para>
+
+      <variablelist class='network-directives'>
+        <varlistentry>
+          <term><varname>UseDNS=</varname></term>
+          <term><varname>UseNTP=</varname></term>
+          <listitem>
+            <para>As in the <literal>[DHCP]</literal> section.</para>
+          </listitem>
+        </varlistentry>
+
         <varlistentry>
           <term><varname>RapidCommit=</varname></term>
           <listitem>
           </listitem>
         </varlistentry>
 
-        <varlistentry>
-          <term><varname>BlackList=</varname></term>
-          <listitem>
-            <para>A whitespace-separated list of IPv4 addresses. DHCP offers from servers in the list are rejected.</para>
-          </listitem>
-        </varlistentry>
-
       </variablelist>
-    </refsect1>
+  </refsect1>
 
   <refsect1>
     <title>[IPv6AcceptRA] Section Options</title>
index 5f91d66dc09236933e9f1ce84b98d3725b138439..7a22883089b5c695ababec85732a30cc42fe2420 100644 (file)
@@ -3474,7 +3474,7 @@ int link_save(Link *link) {
                                         space = true;
                 }
 
-                if (link->network->dhcp_use_dns && dhcp6_lease) {
+                if (link->network->dhcp6_use_dns && dhcp6_lease) {
                         struct in6_addr *in6_addrs;
 
                         r = sd_dhcp6_lease_get_dns(dhcp6_lease, &in6_addrs);
@@ -3517,7 +3517,7 @@ int link_save(Link *link) {
                                         space = true;
                 }
 
-                if (link->network->dhcp_use_ntp && dhcp6_lease) {
+                if (link->network->dhcp6_use_ntp && dhcp6_lease) {
                         struct in6_addr *in6_addrs;
                         char **hosts;
 
index e6723f2e90b44ca6207d0d31aecde0cfc670941e..0aa84f307ce1cf3bbbed12bc67a619aab207a32c 100644 (file)
@@ -161,15 +161,17 @@ DHCP.UseTimezone,                       config_parse_bool,
 DHCP.IAID,                              config_parse_iaid,                               0,                             0
 DHCP.ListenPort,                        config_parse_uint16,                             0,                             offsetof(Network, dhcp_client_port)
 DHCP.SendRelease,                       config_parse_bool,                               0,                             offsetof(Network, dhcp_send_release)
-DHCP.RapidCommit,                       config_parse_bool,                               0,                             offsetof(Network, rapid_commit)
 DHCP.BlackList,                         config_parse_dhcp_black_listed_ip_address,       0,                             0
-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_section_route_table,                0,                             0
 IPv6AcceptRA.BlackList,                 config_parse_ndisc_black_listed_prefix,          0,                             0
+DHCPv6.UseDNS,                          config_parse_bool,                               0,                             offsetof(Network, dhcp6_use_dns)
+DHCPv6.UseNTP,                          config_parse_bool,                               0,                             offsetof(Network, dhcp6_use_ntp)
+DHCPv6.RapidCommit,                     config_parse_bool,                               0,                             offsetof(Network, rapid_commit)
+DHCPv6.ForceDHCPv6PDOtherInformation,   config_parse_bool,                               0,                             offsetof(Network, dhcp6_force_pd_other_information)
 DHCPServer.MaxLeaseTimeSec,             config_parse_sec,                                0,                             offsetof(Network, dhcp_server_max_lease_time_usec)
 DHCPServer.DefaultLeaseTimeSec,         config_parse_sec,                                0,                             offsetof(Network, dhcp_server_default_lease_time_usec)
 DHCPServer.EmitDNS,                     config_parse_bool,                               0,                             offsetof(Network, dhcp_server_emit_dns)
@@ -230,3 +232,5 @@ DHCPv4.UseHostname,                     config_parse_bool,
 DHCP.UseDomainName,                     config_parse_dhcp_use_domains,                   0,                             offsetof(Network, dhcp_use_domains)
 DHCPv4.UseDomainName,                   config_parse_dhcp_use_domains,                   0,                             offsetof(Network, dhcp_use_domains)
 DHCPv4.CriticalConnection,              config_parse_bool,                               0,                             offsetof(Network, dhcp_critical)
+DHCP.RapidCommit,                       config_parse_bool,                               0,                             offsetof(Network, rapid_commit)
+DHCP.ForceDHCPv6PDOtherInformation,     config_parse_bool,                               0,                             offsetof(Network, dhcp6_force_pd_other_information)
index 0b5205e8e28b28eeffe46bfe892d7964af7eef84..ee8876abb93e12af3e86565c59954c53ac1247f3 100644 (file)
@@ -361,6 +361,9 @@ int network_load_one(Manager *manager, const char *filename) {
                 .dhcp_use_timezone = false,
                 .rapid_commit = true,
 
+                .dhcp6_use_ntp = true,
+                .dhcp6_use_dns = true,
+
                 .dhcp_server_emit_dns = true,
                 .dhcp_server_emit_ntp = true,
                 .dhcp_server_emit_router = true,
@@ -426,6 +429,7 @@ int network_load_one(Manager *manager, const char *filename) {
                               "Route\0"
                               "DHCP\0"
                               "DHCPv4\0" /* compat */
+                              "DHCPv6\0"
                               "DHCPServer\0"
                               "IPv6AcceptRA\0"
                               "IPv6NDPProxyAddress\0"
index 72f1b946662067b4a6c181f9e7cbe5840680b910..6a3db9beac514a97379aff16c96d97a411c48903 100644 (file)
@@ -101,6 +101,10 @@ struct Network {
         DHCPUseDomains dhcp_use_domains;
         Set *dhcp_black_listed_ip;
 
+        /* DHCPv6 Client support*/
+        bool dhcp6_use_dns;
+        bool dhcp6_use_ntp;
+
         /* DHCP Server Support */
         bool dhcp_server;
         bool dhcp_server_emit_dns;
index 26dd83d8dad15ee7fc20c7030b20e6846764f504..8136322030c00a87f8b1c9ccc99c8a7a926c3e5a 100644 (file)
@@ -66,6 +66,11 @@ UseTimezone=
 RouteTable=
 BlackList=
 SendRelease=
+[DHCPv6]
+UseNTP=
+UseDNS=
+RapidCommit=
+ForceDHCPv6PDOtherInformation=
 [Route]
 Destination=
 Protocol=