]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: Introduce IPv6RA UseDNR= option
authorRonan Pigott <ronan@rjp.ie>
Mon, 22 Jan 2024 21:37:42 +0000 (14:37 -0700)
committerRonan Pigott <ronan@rjp.ie>
Mon, 21 Oct 2024 16:10:20 +0000 (09:10 -0700)
Same as the DHCP v4/v6 options, this controls the use of DNR received
from ipv6ra.

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

index eb6eaf3ce29fdeb7219a718589636ccb7db8beaf..567d41bf238803cf6ed5651b3b98d263206f2e85 100644 (file)
@@ -3431,6 +3431,16 @@ Token=prefixstable:2002:da8:1::</programlisting></para>
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><varname>UseDNR=</varname></term>
+        <listitem>
+          <para> When true, the DNR servers received in the Router Advertisement will be used. Defaults to
+            the value of <option>UseDNS=</option>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v257"/>
+        </listitem>
+      </varlistentry>
+
       <varlistentry>
         <term><varname>UseDomains=</varname></term>
         <listitem>
index b57785a92a0f697276a609714b8cc9c148488020..25a96eb486d94b512def830fc409c57e7aa52944 100644 (file)
@@ -109,6 +109,9 @@ bool link_get_use_dnr(Link *link, NetworkConfigSource proto) {
         case NETWORK_CONFIG_SOURCE_DHCP6:
                 n = link->network->dhcp6_use_dnr;
                 break;
+        case NETWORK_CONFIG_SOURCE_NDISC:
+                n = link->network->ndisc_use_dnr;
+                break;
         default:
                 assert_not_reached();
         }
index 6110bcdec90dcf88fa735049dc58c089aa00f509..53d1297d1a76eed2930c833dd2dd40188362d240 100644 (file)
@@ -1912,6 +1912,9 @@ static int ndisc_router_process_encrypted_dns(Link *link, sd_ndisc_router *rt) {
         sd_dns_resolver *res;
         _cleanup_(ndisc_dnr_freep) NDiscDNR *new_entry = NULL;
 
+        if (!link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_NDISC))
+                return 0;
+
         r = sd_ndisc_router_get_sender_address(rt, &router);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to get gateway address from RA: %m");
index 61dd333e1d75b7b0c82ad348a4beaee2bf4ffbb1..62662654a2906c63e1880417f6a3a9b570fb1b2f 100644 (file)
@@ -309,6 +309,7 @@ IPv6AcceptRA.UseAutonomousPrefix,            config_parse_bool,
 IPv6AcceptRA.UseOnLinkPrefix,                config_parse_bool,                                        0,                             offsetof(Network, ndisc_use_onlink_prefix)
 IPv6AcceptRA.UsePREF64,                      config_parse_bool,                                        0,                             offsetof(Network, ndisc_use_pref64)
 IPv6AcceptRA.UseDNS,                         config_parse_tristate,                                    0,                             offsetof(Network, ndisc_use_dns)
+IPv6AcceptRA.UseDNR,                         config_parse_tristate,                                    0,                             offsetof(Network, ndisc_use_dnr)
 IPv6AcceptRA.UseDomains,                     config_parse_use_domains,                                 0,                             offsetof(Network, ndisc_use_domains)
 IPv6AcceptRA.UseMTU,                         config_parse_bool,                                        0,                             offsetof(Network, ndisc_use_mtu)
 IPv6AcceptRA.UseHopLimit,                    config_parse_bool,                                        0,                             offsetof(Network, ndisc_use_hop_limit)
index 6339e25cef1477fd1dfe2723b94d6518063764e9..3691f7730dbbb75420588955d75ced78e4554a96 100644 (file)
@@ -484,6 +484,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
                 .ndisc = -1,
                 .ndisc_use_redirect = true,
                 .ndisc_use_dns = -1,
+                .ndisc_use_dnr = -1,
                 .ndisc_use_gateway = true,
                 .ndisc_use_captive_portal = true,
                 .ndisc_use_route_prefix = true,
index 74fefde07a1a6738efc2993f66172b7c0cdee476..b4ab1179289cc46275a832bdceca00faf446bc44 100644 (file)
@@ -345,6 +345,7 @@ struct Network {
 
         /* NDisc support */
         int ndisc;
+        int ndisc_use_dnr;
         bool ndisc_use_redirect;
         int ndisc_use_dns;
         bool ndisc_use_gateway;