* [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU in broadcast routes
@ 2025-07-10 14:27 Oscar Maes
2025-07-10 14:27 ` [PATCH net-next v2 2/2] selftests: net: add test for variable PMTU " Oscar Maes
2025-07-15 0:40 ` [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU " patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Oscar Maes @ 2025-07-10 14:27 UTC (permalink / raw)
To: netdev
Cc: davem, dsahern, edumazet, kuba, pabeni, horms, stable,
linux-kernel, Oscar Maes
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>
---
net/ipv4/route.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 64ba377cd..f639a2ae8 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2588,7 +2588,6 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
do_cache = true;
if (type == RTN_BROADCAST) {
flags |= RTCF_BROADCAST | RTCF_LOCAL;
- fi = NULL;
} else if (type == RTN_MULTICAST) {
flags |= RTCF_MULTICAST | RTCF_LOCAL;
if (!ip_check_mc_rcu(in_dev, fl4->daddr, fl4->saddr,
--
2.39.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH net-next v2 2/2] selftests: net: add test for variable PMTU in broadcast routes
2025-07-10 14:27 [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU in broadcast routes Oscar Maes
@ 2025-07-10 14:27 ` Oscar Maes
2025-07-15 0:40 ` [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU " patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Oscar Maes @ 2025-07-10 14:27 UTC (permalink / raw)
To: netdev
Cc: davem, dsahern, edumazet, kuba, pabeni, horms, stable,
linux-kernel, Oscar Maes
Added a test for variable PMTU in broadcast routes.
This test uses iputils' ping and attempts to send a ping between
two peers, which should result in a regular echo reply.
This test will fail when the receiving peer does not receive the echo
request due to a lack of packet fragmentation.
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
---
tools/testing/selftests/net/Makefile | 1 +
tools/testing/selftests/net/broadcast_pmtu.sh | 47 +++++++++++++++++++
2 files changed, 48 insertions(+)
create mode 100755 tools/testing/selftests/net/broadcast_pmtu.sh
diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index 543776596..fc308c68a 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -114,6 +114,7 @@ TEST_PROGS += skf_net_off.sh
TEST_GEN_FILES += skf_net_off
TEST_GEN_FILES += tfo
TEST_PROGS += tfo_passive.sh
+TEST_PROGS += broadcast_pmtu.sh
# YNL files, must be before "include ..lib.mk"
YNL_GEN_FILES := busy_poller netlink-dumps
diff --git a/tools/testing/selftests/net/broadcast_pmtu.sh b/tools/testing/selftests/net/broadcast_pmtu.sh
new file mode 100755
index 000000000..726eb5d25
--- /dev/null
+++ b/tools/testing/selftests/net/broadcast_pmtu.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Ensures broadcast route MTU is respected
+
+CLIENT_NS=$(mktemp -u client-XXXXXXXX)
+CLIENT_IP4="192.168.0.1/24"
+CLIENT_BROADCAST_ADDRESS="192.168.0.255"
+
+SERVER_NS=$(mktemp -u server-XXXXXXXX)
+SERVER_IP4="192.168.0.2/24"
+
+setup() {
+ ip netns add "${CLIENT_NS}"
+ ip netns add "${SERVER_NS}"
+
+ ip -net "${SERVER_NS}" link add link1 type veth peer name link0 netns "${CLIENT_NS}"
+
+ ip -net "${CLIENT_NS}" link set link0 up
+ ip -net "${CLIENT_NS}" link set link0 mtu 9000
+ ip -net "${CLIENT_NS}" addr add "${CLIENT_IP4}" dev link0
+
+ ip -net "${SERVER_NS}" link set link1 up
+ ip -net "${SERVER_NS}" link set link1 mtu 1500
+ ip -net "${SERVER_NS}" addr add "${SERVER_IP4}" dev link1
+
+ read -r -a CLIENT_BROADCAST_ENTRY <<< "$(ip -net "${CLIENT_NS}" route show table local type broadcast)"
+ ip -net "${CLIENT_NS}" route del "${CLIENT_BROADCAST_ENTRY[@]}"
+ ip -net "${CLIENT_NS}" route add "${CLIENT_BROADCAST_ENTRY[@]}" mtu 1500
+
+ ip net exec "${SERVER_NS}" sysctl -wq net.ipv4.icmp_echo_ignore_broadcasts=0
+}
+
+cleanup() {
+ ip -net "${SERVER_NS}" link del link1
+ ip netns del "${CLIENT_NS}"
+ ip netns del "${SERVER_NS}"
+}
+
+trap cleanup EXIT
+
+setup &&
+ echo "Testing for broadcast route MTU" &&
+ ip net exec "${CLIENT_NS}" ping -f -M want -q -c 1 -s 8000 -w 1 -b "${CLIENT_BROADCAST_ADDRESS}" > /dev/null 2>&1
+
+exit $?
+
--
2.39.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU in broadcast routes
2025-07-10 14:27 [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU in broadcast routes Oscar Maes
2025-07-10 14:27 ` [PATCH net-next v2 2/2] selftests: net: add test for variable PMTU " Oscar Maes
@ 2025-07-15 0:40 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-07-15 0:40 UTC (permalink / raw)
To: Oscar Maes
Cc: netdev, davem, dsahern, edumazet, kuba, pabeni, horms, stable,
linux-kernel
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Thu, 10 Jul 2025 16:27:13 +0200 you wrote:
> 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
>
> [...]
Here is the summary with links:
- [net-next,v2,1/2] net: ipv4: fix incorrect MTU in broadcast routes
https://git.kernel.org/netdev/net-next/c/9e30ecf23b1b
- [net-next,v2,2/2] selftests: net: add test for variable PMTU in broadcast routes
https://git.kernel.org/netdev/net-next/c/5777d1871bf6
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-07-15 0:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-10 14:27 [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU in broadcast routes Oscar Maes
2025-07-10 14:27 ` [PATCH net-next v2 2/2] selftests: net: add test for variable PMTU " Oscar Maes
2025-07-15 0:40 ` [PATCH net-next v2 1/2] net: ipv4: fix incorrect MTU " patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).