From: Alex Henrie Date: Fri, 6 May 2022 20:01:53 +0000 (-0600) Subject: network: clarify the relationship between RA flags and DHCPv6 modes X-Git-Tag: v251-rc3~46^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0bcc6557fbba32ebcdf323e76688ced50e3c8d8e;p=thirdparty%2Fsystemd.git network: clarify the relationship between RA flags and DHCPv6 modes In the documentation, using the term "managed" for both the RA flag and the DHCPv6 mode is confusing because the mode is referred to as "solicit" both in the official DHCPv6 documentation (see RFC 8415) and in the WithoutRA option. Furthermore, calling the other RA flag "other information" or "other address configuration" is confusing because its official name is simply "other configuration" (see RFC 4861 and RFC 5175) and it isn't used to assign IP addresses. Rewrite the documentation for DHCPv6Client and WithoutRA to make it clear that getting the "managed" RA flag triggers the same kind of DHCP request as WithoutRA=solicit, whereas getting the "other configuration" RA flag triggers the same kind of DHCP request as WithoutRA=information-request. --- diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 530319606a3..ac8cd1342d7 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -2172,9 +2172,10 @@ Table=1234 WithoutRA= - Allows DHCPv6 client to start without router advertisements's managed or other - address configuration flag. Takes one of no, solicit - or information-request. If this is not specified, + Allows DHCPv6 client to start without router advertisements's + managed or other configuration flag. Takes one of + no, solicit, or + information-request. If this is not specified, solicit is used when DHCPPrefixDelegation= is enabled and UplinkInterface=:self is specified in the [DHCPPrefixDelegation] section. Otherwise, defaults to no, and the DHCPv6 client will be started @@ -2507,10 +2508,14 @@ Token=prefixstable:2002:da8:1:: DHCPv6Client= Takes a boolean, or the special value always. When true, the - DHCPv6 client will be started when the RA has the managed or other information flag. If set - to always, the DHCPv6 client will be started in managed mode when an RA - is received, even if neither managed nor other information flag is set in the RA. This will - be ignored when WithoutRA= in the [DHCPv6] section is enabled, or + DHCPv6 client will be started in solicit mode if the RA has the + managed flag or information-request mode if the RA + lacks the managed flag but has the + other configuration flag. If set to always, the + DHCPv6 client will be started in solicit mode when an RA is received, + even if neither the managed nor the + other configuration flag is set in the RA. This will be ignored when + WithoutRA= in the [DHCPv6] section is enabled, or UplinkInterface=:self in the [DHCPPrefixDelegation] section is specified. Defaults to true. diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index a2725c99c62..b346a50d780 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -1384,7 +1384,7 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client) { } log_dhcp6_client(client, "Starting in %s mode", - client->information_request ? "Information request" : "Managed"); + client->information_request ? "Information request" : "Solicit"); return client_start_transaction(client, state); } diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index 16014dbaff9..5786eca8039 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -35,7 +35,7 @@ static DHCP6ClientStartMode link_get_dhcp6_client_start_mode(Link *link) { if (link->network->dhcp6_client_start_mode >= 0) return link->network->dhcp6_client_start_mode; - /* When this interface itself is an uplink interface, then start dhcp6 client in managed mode. */ + /* When this interface itself is an uplink interface, then start dhcp6 client in solicit mode. */ if (dhcp_pd_is_uplink(link, link, /* accept_auto = */ false)) return DHCP6_CLIENT_START_MODE_SOLICIT; @@ -686,7 +686,7 @@ static int dhcp6_configure(Link *link) { return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to %s requesting prefixes to be delegated: %m", enable_disable(link->network->dhcp6_use_pd_prefix)); - /* Even if UseAddress=no, we need to request IA_NA, as the dhcp6 client may be started in managed mode. */ + /* Even if UseAddress=no, we need to request IA_NA, as the dhcp6 client may be started in solicit mode. */ r = sd_dhcp6_client_set_address_request(client, link->network->dhcp6_use_pd_prefix ? link->network->dhcp6_use_address : true); if (r < 0) return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to %s requesting address: %m", diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 8bb4477a2f6..efe407fedb5 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -949,13 +949,13 @@ static int ndisc_start_dhcp6_client(Link *link, sd_ndisc_router *rt) { return 0; /* (re)start DHCPv6 client in stateful or stateless mode according to RA flags. - * Note, if both managed and other information bits are set, then ignore other - * information bit. See RFC 4861. */ + * Note, if both "managed" and "other configuration" bits are set, then ignore + * "other configuration" bit. See RFC 4861. */ r = dhcp6_start_on_ra(link, !(flags & ND_RA_FLAG_MANAGED)); break; } case IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS: - /* When IPv6AcceptRA.DHCPv6Client=always, start dhcp6 client in managed mode + /* When IPv6AcceptRA.DHCPv6Client=always, start dhcp6 client in solicit mode * even if the router flags have neither M nor O flags. */ r = dhcp6_start_on_ra(link, /* information_request = */ false); break;