]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: dhcp6-pd: add RouteMetric= setting in [DHCPv6PrefixDelegation]
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 17 Apr 2021 17:32:51 +0000 (02:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 21 Apr 2021 04:55:02 +0000 (13:55 +0900)
man/systemd.network.xml
src/network/networkd-dhcp6.c
src/network/networkd-network-gperf.gperf
src/network/networkd-network.h
test/fuzz/fuzz-network-parser/directives.network

index c119c716ac66607a6b53dd3a0aeaeb8a4bc408f2..7a47132336d224deff2bb5ed4be7036e30dbf5c9 100644 (file)
@@ -2160,6 +2160,14 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
           <para>As in the [Address] section, but defaults to true.</para>
         </listitem>
       </varlistentry>
+
+      <varlistentry>
+        <term><varname>RouteMetric=</varname></term>
+        <listitem>
+          <para>The metric of the route to the delegated prefix subnet. Takes an unsigned integer in
+          the range 0…4294967295. When unset or set to 0, the kernel's default value is used.</para>
+        </listitem>
+      </varlistentry>
     </variablelist>
   </refsect1>
 
index f5e66b945758481feb4ae8737d868a3e2378f399..6f3c02d44d9e06ef85c945747691c0a3d5423e0f 100644 (file)
@@ -284,6 +284,7 @@ static int dhcp6_set_pd_route(Link *link, const union in_addr_union *prefix, con
         route->dst = *prefix;
         route->dst_prefixlen = 64;
         route->protocol = RTPROT_DHCP;
+        route->priority = link->network->dhcp6_pd_route_metric;
 
         r = route_configure(route, link, dhcp6_pd_route_handler, &ret);
         if (r < 0)
@@ -399,6 +400,7 @@ static int dhcp6_set_pd_address(
         address->cinfo.ifa_prefered = lifetime_preferred;
         address->cinfo.ifa_valid = lifetime_valid;
         SET_FLAG(address->flags, IFA_F_MANAGETEMPADDR, link->network->dhcp6_pd_manage_temporary_address);
+        address->route_metric = link->network->dhcp6_pd_route_metric;
 
         r = address_configure(address, link, dhcp6_pd_address_handler, &ret);
         if (r < 0)
index 43e4d30bea56d4dcf3073b6ec9d0c75fc88d3999..50aab8de6d11335b91b30552dbd2516fef442832 100644 (file)
@@ -309,6 +309,7 @@ DHCPv6PrefixDelegation.Announce,             config_parse_bool,
 DHCPv6PrefixDelegation.Assign,               config_parse_bool,                                        0,                             offsetof(Network, dhcp6_pd_assign)
 DHCPv6PrefixDelegation.ManageTemporaryAddress, config_parse_bool,                                      0,                             offsetof(Network, dhcp6_pd_manage_temporary_address)
 DHCPv6PrefixDelegation.Token,                config_parse_dhcp6_pd_token,                              0,                             offsetof(Network, dhcp6_pd_token)
+DHCPv6PrefixDelegation.RouteMetric,          config_parse_uint32,                                      0,                             offsetof(Network, dhcp6_pd_route_metric)
 IPv6SendRA.RouterLifetimeSec,                config_parse_sec,                                         0,                             offsetof(Network, router_lifetime_usec)
 IPv6SendRA.Managed,                          config_parse_bool,                                        0,                             offsetof(Network, router_managed)
 IPv6SendRA.OtherInformation,                 config_parse_bool,                                        0,                             offsetof(Network, router_other_information)
index e36dada3446bd49a8bed3bdf49eda3a92abccae6..db0fbbdf1ad11d91b4bdf5f268844998c4d333ad 100644 (file)
@@ -219,6 +219,7 @@ struct Network {
         bool dhcp6_pd_assign;
         bool dhcp6_pd_manage_temporary_address;
         int64_t dhcp6_pd_subnet_id;
+        uint32_t dhcp6_pd_route_metric;
         union in_addr_union dhcp6_pd_token;
 
         /* Bridge Support */
index a938394bab9865529c498eb862beaf28254e49e1..467854728e2e4ca8e2509da8723aa5e58a03cc0e 100644 (file)
@@ -147,6 +147,7 @@ Announce=
 Assign=
 ManageTemporaryAddress=
 Token=
+RouteMetric=
 [Route]
 Destination=
 Protocol=