mirror of
https://github.com/systemd/systemd
synced 2024-10-15 04:24:19 +00:00
network/ndisc: disable Neighbor discovery client if RADV is enabled
Running both sd-ndisc and sd-radv should be mostly a misconfiguration, but may not. So, let's only disable sd-ndisc by default when sd-radv is enabled, but allow when both are explicitly requested.
This commit is contained in:
parent
50ba4e401a
commit
769f9744b7
|
@ -888,12 +888,13 @@ Table=1234</programlisting></para>
|
|||
<varlistentry>
|
||||
<term><varname>IPv6AcceptRA=</varname></term>
|
||||
<listitem>
|
||||
<para>Takes a boolean. Controls IPv6 Router Advertisement (RA) reception support for the
|
||||
interface. If true, RAs are accepted; if false, RAs are ignored. When RAs are accepted, they
|
||||
may trigger the start of the DHCPv6 client if the relevant flags are set in the RA data, or
|
||||
if no routers are found on the link. The default is to disable RA reception for bridge
|
||||
devices or when IP forwarding is enabled, and to enable it otherwise. Cannot be enabled on
|
||||
devices aggregated in a bond device or when link-local addressing is disabled.</para>
|
||||
<para>Takes a boolean. Controls IPv6 Router Advertisement (RA) reception support for the interface.
|
||||
If true, RAs are accepted; if false, RAs are ignored. When RAs are accepted, they may trigger the
|
||||
start of the DHCPv6 client if the relevant flags are set in the RA data, or if no routers are found
|
||||
on the link. Defaults to false for bridge devices, when IP forwarding is enabled,
|
||||
<varname>IPv6SendRA=</varname> or <varname>KeepMaster=</varname> is enabled. Otherwise, enabled by
|
||||
default. Cannot be enabled on devices aggregated in a bond device or when link-local addressing is
|
||||
disabled.</para>
|
||||
|
||||
<para>Further settings for the IPv6 RA support may be configured in the [IPv6AcceptRA]
|
||||
section, see below.</para>
|
||||
|
|
|
@ -53,9 +53,14 @@ bool link_ndisc_enabled(Link *link) {
|
|||
if (!link_may_have_ipv6ll(link, /* check_multicast = */ true))
|
||||
return false;
|
||||
|
||||
/* Honor explicitly specified value. */
|
||||
if (link->network->ndisc >= 0)
|
||||
return link->network->ndisc;
|
||||
|
||||
/* Disable if RADV is enabled. */
|
||||
if (link_radv_enabled(link))
|
||||
return false;
|
||||
|
||||
/* Accept RAs if IPv6 forwarding is disabled, and ignore RAs if IPv6 forwarding is enabled. */
|
||||
int t = link_get_ip_forwarding(link, AF_INET6);
|
||||
if (t >= 0)
|
||||
|
|
Loading…
Reference in a new issue