diff options
-rw-r--r-- | man/systemd.network.xml | 20 | ||||
-rw-r--r-- | src/network/networkd-link.c | 8 |
2 files changed, 19 insertions, 9 deletions
diff --git a/man/systemd.network.xml b/man/systemd.network.xml index a27f2ff99e..1a33b77002 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -409,11 +409,21 @@ </varlistentry> <varlistentry> <term><varname>IPv6AcceptRouterAdvertisements=</varname></term> - <listitem><para>Configures Accept Router Advertisements. - This is enabled if local forwarding is disabled. - Disabled if local forwarding is enabled. - Takes a boolean. Defaults to unset. - </para></listitem> + <listitem><para>Force the setting of <filename>accept_ra</filename> + (router advertisements) setting for the interface. + When unset, the kernel default is used, and router + advertisements are accepted only when local forwarding + is disabled for that interface. + Takes a boolean. If true, router advertisements are + accepted, when false, router advertisements are ignored, + independently of the local forwarding state.</para> + + <para>See + <ulink url="https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt">ip-sysctl.txt</ulink> + in the kernel documentation, but note that systemd's + setting of <constant>1</constant> corresponds to + kernel's setting of <constant>2</constant>.</para> + </listitem> </varlistentry> <varlistentry> <term><varname>Bridge=</varname></term> diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index ffc9578e86..aa09065cf5 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1812,16 +1812,16 @@ static int link_set_ipv6_accept_ra(Link *link) { * disabled if local forwarding is enabled). * If set, ignore or enforce RA independent of local forwarding state. */ - if (link->network->ipv6_accept_ra < 0) { + if (link->network->ipv6_accept_ra < 0) /* default to accept RA if ip_forward is disabled and ignore RA if ip_forward is enabled */ v = "1"; - } else if (link->network->ipv6_accept_ra > 0) { + else if (link->network->ipv6_accept_ra > 0) /* "2" means accept RA even if ip_forward is enabled */ v = "2"; - } else { + else /* "0" means ignore RA */ v = "0"; - } + p = strjoina("/proc/sys/net/ipv6/conf/", link->ifname, "/accept_ra"); r = write_string_file(p, v, 0); |