mirror of
https://github.com/openwrt/openwrt.git
synced 2026-10-14 06:38:29 +04:00
The switch has a single routing table. The driver tells its routes apart by the kernel table they came from, but writes every one of them to that single table, where it matches whatever packet the hardware routes. A route that only a policy rule selects - one per uplink, the way multi-WAN setups do it - is then applied to all traffic, and two routes to one prefix from two tables become two rows for the same destination, either of which can answer. Take FIB events from the main and local tables only, for both address families, and warn about a route from any other: it stays in software. The local table carries the switch's own addresses, which the driver traps. A route from another table is set aside before anything else looks at it, so an IPv4 route there with an IPv6 gateway is no longer refused. This is a change for IPv4 as well, which has had the same exposure: a route in another table was offloaded until now. The RTL839x, whose L3 code runs in a stock build, is affected the same way and was not tested. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Gennaro Cimmino <gcimmino@rayonra.net> Link: https://github.com/openwrt/openwrt/pull/25313 Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>