Compare commits

...

6 Commits

Author SHA1 Message Date
Lennart Poettering 7d7c75f149 update TODO 2020-11-16 21:08:38 +01:00
Lennart Poettering a21f53219b man: add missing full stop 2020-11-16 21:08:38 +01:00
Yu Watanabe e5b88e8d73
Merge pull request #17619 from yuwata/network-ndisc-dhcp6-client-always
network: honor M or O flag in RA even if IPv6AcceptRA.DHCPv6Cleint=always
2020-11-17 01:20:56 +09:00
Yu Watanabe d448888924 meson: use "_" as separator in test names
Follow-up for ca121e20c4.

Fixes #17568.
2020-11-16 21:28:05 +09:00
Yu Watanabe 787dd704e1 sd-dhcp6-client: insert spaces around ternary operator 2020-11-16 18:59:28 +09:00
Yu Watanabe 0e686feaff network: honor M or O flag in RA even if IPv6AcceptRA.DHCPv6Cleint=always
Follow-up for ac24e418d9.

The original motivation of the commit and RFE #15339 is to start dhcpv6
client in managed mode when neither M nor O flag is set in the RA.
But, previously, if the setting is set to "always", then the DHCPv6
client is always started in managed mode even if O flag is set in the
RA. Such the behavior breaks RFC 7084.
2020-11-16 18:59:24 +09:00
6 changed files with 29 additions and 11 deletions

12
TODO
View File

@ -20,6 +20,18 @@ Janitorial Clean-ups:
Features:
* cryptsetup: optionally, when run during boot-up and password is never
entered, and we are on AC power (or so), power off machine again
* when configuring loopback netif, and it fails due to EPERM, eat up error if
it happens to be set up alright already.
* at boot: check if battery above some threshold, if not power off again after explanation
* userdb: add field for ambient caps, so that a user can have CAP_WAKE_ALARM
for example. And add code that resets ambient caps for all services by
default.
* homed: try to unmount in regular intervals when home dir was busy when we
tried because idle.

View File

@ -199,7 +199,7 @@
domains (TLDs) that are not known by the DNS root server. This
logic does not work in all private zone setups.</para>
<para>Defaults to <literal>allow-downgrade</literal></para>
<para>Defaults to <literal>allow-downgrade</literal>.</para>
</listitem>
</varlistentry>

View File

@ -2086,9 +2086,11 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<varlistentry>
<term><varname>DHCPv6Client=</varname></term>
<listitem>
<para>Takes a boolean, or the special value <literal>always</literal>. When true (the default), 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 even if there is no
managed or other information flag in the RA.</para>
<para>Takes a boolean, or the special value <literal>always</literal>. When true or
<literal>always</literal>, 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 also be
started in managed mode when neither managed nor other information flag is set in the RA.
Defaults to true.</para>
</listitem>
</varlistentry>
</variablelist>

View File

@ -1743,8 +1743,7 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client) {
}
log_dhcp6_client(client, "Started in %s mode",
client->information_request? "Information request":
"Managed");
client->information_request ? "Information request" : "Managed");
return client_start(client, state);
}

View File

@ -1163,13 +1163,17 @@ static int ndisc_router_handler(Link *link, sd_ndisc_router *rt) {
if (r < 0)
return log_link_error_errno(link, r, "Failed to get RA flags: %m");
if ((flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER) && link->network->ipv6_accept_ra_start_dhcp6_client)) {
if ((flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER) &&
link->network->ipv6_accept_ra_start_dhcp6_client != IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO) ||
link->network->ipv6_accept_ra_start_dhcp6_client == IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS) {
if (link->network->ipv6_accept_ra_start_dhcp6_client == IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS)
r = dhcp6_request_address(link, false);
else
if (flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER))
/* (re)start DHCPv6 client in stateful or stateless mode according to RA flags */
r = dhcp6_request_address(link, !(flags & ND_RA_FLAG_MANAGED));
else
/* When IPv6AcceptRA.DHCPv6Client=always, start dhcp6 client in managed mode
* even if router does not have M or O flag. */
r = dhcp6_request_address(link, false);
if (r < 0 && r != -EBUSY)
return log_link_error_errno(link, r, "Could not acquire DHCPv6 lease on NDisc request: %m");
else

View File

@ -68,7 +68,8 @@ endif
foreach header : _systemd_headers + _not_installed_headers + ['../libudev/libudev.h']
foreach opt : opts
name = ''.join(['cc-', header.split('/')[-1], '_'] + opt)
std_name = opt.length() == 2 ? '_'.join(opt[1].split(':')) : ''
name = ''.join(['cc-', header.split('/')[-1], '_', opt[0], std_name])
if want_tests != 'false'
test(name,
check_compilation_sh,