mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
Merge pull request #23292 from alexhenrie/dhcpv6
network: clarify relationship between RA flags and DHCPv6 modes
This commit is contained in:
commit
87d3b4ef3b
@ -328,9 +328,10 @@
|
||||
<literal>no</literal>.</para>
|
||||
|
||||
<para>Note that DHCPv6 will by default be triggered by Router Advertisement, if that is
|
||||
enabled, regardless of this parameter. By enabling DHCPv6 support explicitly, the DHCPv6
|
||||
client will be started regardless of the presence of routers on the link, or what flags the
|
||||
routers pass. See <literal>IPv6AcceptRA=</literal>.</para>
|
||||
enabled, regardless of this parameter. By explicitly enabling DHCPv6 support here, the
|
||||
DHCPv6 client will be started in the mode specified by the <variable>WithoutRA=</variable>
|
||||
setting in the [DHCPv6] section, regardless of the presence of routers on the link, or
|
||||
what flags the routers pass. See <literal>IPv6AcceptRA=</literal>.</para>
|
||||
|
||||
<para>Furthermore, note that by default the domain name specified through DHCP is not used
|
||||
for name resolution. See option <option>UseDomains=</option> below.</para>
|
||||
@ -2172,9 +2173,10 @@ Table=1234</programlisting></para>
|
||||
<varlistentry>
|
||||
<term><varname>WithoutRA=</varname></term>
|
||||
<listitem>
|
||||
<para>Allows DHCPv6 client to start without router advertisements's managed or other
|
||||
address configuration flag. Takes one of <literal>no</literal>, <literal>solicit</literal>
|
||||
or <literal>information-request</literal>. If this is not specified,
|
||||
<para>Allows DHCPv6 client to start without router advertisements's
|
||||
<literal>managed</literal> or <literal>other configuration</literal> flag. Takes one of
|
||||
<literal>no</literal>, <literal>solicit</literal>, or
|
||||
<literal>information-request</literal>. If this is not specified,
|
||||
<literal>solicit</literal> is used when <varname>DHCPPrefixDelegation=</varname> is enabled
|
||||
and <varname>UplinkInterface=:self</varname> is specified in the [DHCPPrefixDelegation]
|
||||
section. Otherwise, defaults to <literal>no</literal>, and the DHCPv6 client will be started
|
||||
@ -2507,10 +2509,14 @@ Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<term><varname>DHCPv6Client=</varname></term>
|
||||
<listitem>
|
||||
<para>Takes a boolean, or the special value <literal>always</literal>. When true, the
|
||||
DHCPv6 client will be started when the RA has the managed or other information flag. If set
|
||||
to <literal>always</literal>, 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 <varname>WithoutRA=</varname> in the [DHCPv6] section is enabled, or
|
||||
DHCPv6 client will be started in <literal>solicit</literal> mode if the RA has the
|
||||
<literal>managed</literal> flag or <literal>information-request</literal> mode if the RA
|
||||
lacks the <literal>managed</literal> flag but has the
|
||||
<literal>other configuration</literal> flag. If set to <literal>always</literal>, the
|
||||
DHCPv6 client will be started in <literal>solicit</literal> mode when an RA is received,
|
||||
even if neither the <literal>managed</literal> nor the
|
||||
<literal>other configuration</literal> flag is set in the RA. This will be ignored when
|
||||
<varname>WithoutRA=</varname> in the [DHCPv6] section is enabled, or
|
||||
<varname>UplinkInterface=:self</varname> in the [DHCPPrefixDelegation] section is
|
||||
specified. Defaults to true.</para>
|
||||
</listitem>
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user