53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From 76591e4075194cf717dc085b8285912f706bcd46 Mon Sep 17 00:00:00 2001
|
|
From: Stefan Agner <stefan@agner.ch>
|
|
Date: Tue, 28 Mar 2023 12:02:10 +0200
|
|
Subject: [PATCH] ipv6: add option to explicitly enable reachability test
|
|
|
|
Systems which act as host as well as router might prefer the host
|
|
behavior. Currently the kernel does not allow to use IPv6 forwarding
|
|
globally and at the same time use route reachability probing.
|
|
|
|
Add a compile time flag to enable route reachability probe in any
|
|
case.
|
|
|
|
Signed-off-by: Stefan Agner <stefan@agner.ch>
|
|
---
|
|
net/ipv6/Kconfig | 9 +++++++++
|
|
net/ipv6/route.c | 3 ++-
|
|
2 files changed, 11 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig
|
|
index 08d4b7132d4c..242bf2eeb7ae 100644
|
|
--- a/net/ipv6/Kconfig
|
|
+++ b/net/ipv6/Kconfig
|
|
@@ -48,6 +48,15 @@ config IPV6_OPTIMISTIC_DAD
|
|
|
|
If unsure, say N.
|
|
|
|
+config IPV6_REACHABILITY_PROBE
|
|
+ bool "IPv6: Always use reachability probing (RFC 4191)"
|
|
+ help
|
|
+ By default reachability probing is disabled on router devices (when
|
|
+ IPv6 forwarding is enabled). This option explicitly enables
|
|
+ reachability probing always.
|
|
+
|
|
+ If unsure, say N.
|
|
+
|
|
config INET6_AH
|
|
tristate "IPv6: AH transformation"
|
|
select XFRM_AH
|
|
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
|
|
index 56525b5b95a2..916769b9a772 100644
|
|
--- a/net/ipv6/route.c
|
|
+++ b/net/ipv6/route.c
|
|
@@ -2211,7 +2211,8 @@ struct rt6_info *ip6_pol_route(struct net *net, struct fib6_table *table,
|
|
|
|
strict |= flags & RT6_LOOKUP_F_IFACE;
|
|
strict |= flags & RT6_LOOKUP_F_IGNORE_LINKSTATE;
|
|
- if (net->ipv6.devconf_all->forwarding == 0)
|
|
+ if (net->ipv6.devconf_all->forwarding == 0 ||
|
|
+ IS_ENABLED(CONFIG_IPV6_REACHABILITY_PROBE))
|
|
strict |= RT6_LOOKUP_F_REACHABLE;
|
|
|
|
rcu_read_lock();
|