mirror of
https://github.com/openwrt/openwrt.git
synced 2026-10-13 02:28:43 +04:00
A router advertisement adds its routes with RTF_ADDRCONF: on-link prefixes, which have no gateway and are left out already, the default route, also left out, and with CONFIG_IPV6_ROUTE_INFO the Route Information routes. Such routes never become multipath siblings (rt6_qualify_for_ecmp()), so the routes several routers advertise for one prefix sit side by side and the kernel picks among them at lookup time (rt6_select()). The driver only hears of the route at the head of the list, and when a router changes its preference the route is updated in place, with no event. Leave RTF_ADDRCONF routes to the kernel. OpenWrt builds the kernel without CONFIG_IPV6_ROUTE_INFO, so none of the routes its router advertisements add is handled differently. Tested on a Hasivo S1100W-8XGT-SE (RTL9303) with L3 offload enabled. No router advertisement can create such a route with OpenWrt's kernel, so a bench-only tool added one through the legacy SIOCADDRT ioctl, which keeps RTF_ADDRCONF in the flags. On main it is programmed to forward and marked offloaded; with this change it gets the trap row a route left to the kernel gets, is not marked offloaded, and the echoes sent into it still all reach its gateway. A twin route to another prefix without the flag is offloaded on both. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Gennaro Cimmino <gcimmino@rayonra.net> Link: https://github.com/openwrt/openwrt/pull/25602 Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>