On Sat, Aug 23, 2025 at 02:24:39PM +0200, Brett Sheffield wrote:
On 2025-08-22 18:32, Jakub Kicinski wrote:
Thanks for bisecting and fixing!
The broadcast_pmtu.sh selftest provided with the original patch still passes with this patch applied.
Hm, yes, AFACT we're losing PMTU discovery but perhaps original commit wasn't concerned with that. Hopefully Oscar can comment.
Indeed. This takes it back to the previous behaviour.
On Fri, 22 Aug 2025 16:50:51 +0000 Brett A C Sheffield wrote:
if (type == RTN_BROADCAST) {
/* ensure MTU value for broadcast routes is retained */
ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);
You need to check if res->fi is actually set before using it
Ah, yes. Fixed.
Could you add a selftest / test case for the scenario we broke? selftests can be in C / bash / Python. If bash hopefully socat can be used to repro, cause it looks like wakeonlan is not very widely packaged.
Self-test added using socat as requested. If you want this wrapped in namespaces etc. let me know. I started doing that, but decided a simpler test without requiring root was better and cleaner.
Thanks for the review Jakub. v2 patches sent.
Cheers,
Brett
Brett Sheffield (he/him) Librecast - Decentralising the Internet with Multicast https://librecast.net/ https://blog.brettsheffield.com/
Replying to you both.
I missed this regression when I tested the blamed commit. Glad this surfaced quickly.
Just to clarify, the issue isn't that the destination address is "mangled". The removal of fi = NULL inadvertently causes a gateway to be assigned to local broadcast packets (see the call to rt_set_nexthop), which results in the observed regression. __mkroute_output is still correct for directed broadcast packets due to them having their own routes in the local table. The regression can easily be fixed by setting the fib info to NULL for lbcast packets.
The submitted selftest only fails if a default gateway is configured, but does not set one up. I'll submit my own patches to fix the regression and improve the selftest shortly.
Oscar