Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: ipv4: fix incorrect MTU in broadcast routes

Currently, __mkroute_output overrules the MTU value configured for
broadcast routes.

This buggy behaviour can be reproduced with:

ip link set dev eth1 mtu 9000
ip route del broadcast 192.168.0.255 dev eth1 proto kernel scope link src 192.168.0.2
ip route add broadcast 192.168.0.255 dev eth1 proto kernel scope link src 192.168.0.2 mtu 1500

The maximum packet size should be 1500, but it is actually 8000:

ping -b 192.168.0.255 -s 8000

Fix __mkroute_output to allow MTU values to be configured for
for broadcast routes (to support a mixed-MTU local-area-network).

Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
Link: https://patch.msgid.link/20250710142714.12986-1-oscmaes92@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Oscar Maes and committed by
Jakub Kicinski
9e30ecf2 2f4053db

-1
-1
net/ipv4/route.c
··· 2588 2588 do_cache = true; 2589 2589 if (type == RTN_BROADCAST) { 2590 2590 flags |= RTCF_BROADCAST | RTCF_LOCAL; 2591 - fi = NULL; 2592 2591 } else if (type == RTN_MULTICAST) { 2593 2592 flags |= RTCF_MULTICAST | RTCF_LOCAL; 2594 2593 if (!ip_check_mc_rcu(in_dev, fl4->daddr, fl4->saddr,