diff --git a/buildroot-external/kernel/hassos.config b/buildroot-external/kernel/hassos.config index 800d0b037..46141bb27 100644 --- a/buildroot-external/kernel/hassos.config +++ b/buildroot-external/kernel/hassos.config @@ -60,6 +60,8 @@ CONFIG_BT_HIDP=m CONFIG_BT_LEDS=y CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_REACHABILITY_PROBE=y CONFIG_IPV6_SIT=m CONFIG_IP_MROUTE=y diff --git a/buildroot-external/patches/linux/0001-ipv6-add-option-to-explicitly-enable-reachability-te.patch b/buildroot-external/patches/linux/0001-ipv6-add-option-to-explicitly-enable-reachability-te.patch new file mode 100644 index 000000000..21a7be78d --- /dev/null +++ b/buildroot-external/patches/linux/0001-ipv6-add-option-to-explicitly-enable-reachability-te.patch @@ -0,0 +1,56 @@ +From b9182b02829b158d55acc53a0bcec1ed667b2668 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Stefan Agner +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 +--- + 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 658bfed1df8b..5147fd4c93ff 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 0fdb03df2287..5e1e1f02f400 100644 +--- a/net/ipv6/route.c ++++ b/net/ipv6/route.c +@@ -2210,7 +2210,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(IPV6_REACHABILITY_PROBE)) + strict |= RT6_LOOKUP_F_REACHABLE; + + rcu_read_lock(); +-- +2.40.0 + diff --git a/buildroot-external/patches/network-manager/0001-ndisc-support-multiple-gateways-for-a-single-network.patch b/buildroot-external/patches/network-manager/0001-ndisc-support-multiple-gateways-for-a-single-network.patch new file mode 100644 index 000000000..a594bae26 --- /dev/null +++ b/buildroot-external/patches/network-manager/0001-ndisc-support-multiple-gateways-for-a-single-network.patch @@ -0,0 +1,27 @@ +From a053500cf43a31ee82a6e0f3d644ea36f5c77ffb Mon Sep 17 00:00:00 2001 +Message-Id: +From: Stefan Agner +Date: Mon, 27 Mar 2023 17:48:34 +0200 +Subject: [PATCH] ndisc: support multiple gateways for a single network + +--- + src/core/ndisc/nm-ndisc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/core/ndisc/nm-ndisc.c b/src/core/ndisc/nm-ndisc.c +index 9a6038d406..67cdf5d99a 100644 +--- a/src/core/ndisc/nm-ndisc.c ++++ b/src/core/ndisc/nm-ndisc.c +@@ -654,7 +654,8 @@ nm_ndisc_add_route(NMNDisc *ndisc, const NMNDiscRoute *new_item, gint64 now_msec + NMNDiscRoute *item = &g_array_index(rdata->routes, NMNDiscRoute, i); + + if (IN6_ARE_ADDR_EQUAL(&item->network, &new_item->network) +- && item->plen == new_item->plen) { ++ && item->plen == new_item->plen ++ && IN6_ARE_ADDR_EQUAL(&item->gateway, &new_item->gateway)) { + if (new_item->expiry_msec <= now_msec) { + g_array_remove_index(rdata->routes, i); + return TRUE; +-- +2.40.0 +