git: becdc0c0dc76 - stable/12 - pf tests: Test scrub fragment reassemble on interfaces with different MTU
Kristof Provost
kp at FreeBSD.org
Fri May 7 15:26:04 UTC 2021
The branch stable/12 has been updated by kp:
URL: https://cgit.FreeBSD.org/src/commit/?id=becdc0c0dc7604389dd06b682ab11ed4dc43afea
commit becdc0c0dc7604389dd06b682ab11ed4dc43afea
Author: Kristof Provost <kp at FreeBSD.org>
AuthorDate: 2021-04-27 16:46:03 +0000
Commit: Kristof Provost <kp at FreeBSD.org>
CommitDate: 2021-05-07 08:19:05 +0000
pf tests: Test scrub fragment reassemble on interfaces with different MTU
There's a problem with pf's reassembly code where it produces incorrect
checksums when reassembling across interfaces with different MTUs.
Test this.
PR: 255432
Reviewed by: donner
MFC after: 1 week
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D30013
(cherry picked from commit 388c0cde10293d9a3434e99146bf391aec6878a3)
---
tests/sys/netpfil/pf/fragmentation.sh | 49 +++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/tests/sys/netpfil/pf/fragmentation.sh b/tests/sys/netpfil/pf/fragmentation.sh
index 943c76e478f3..1be6a3bc17cd 100755
--- a/tests/sys/netpfil/pf/fragmentation.sh
+++ b/tests/sys/netpfil/pf/fragmentation.sh
@@ -116,8 +116,57 @@ v6_cleanup()
pft_cleanup
}
+atf_test_case "mtu_diff" "cleanup"
+mtu_diff_head()
+{
+ atf_set descr 'Test reassembly across different MTUs, PR #255432'
+ atf_set require.user root
+}
+
+mtu_diff_body()
+{
+ pft_init
+
+ epair_small=$(vnet_mkepair)
+ epair_large=$(vnet_mkepair)
+
+ vnet_mkjail first ${epair_small}b ${epair_large}a
+ vnet_mkjail second ${epair_large}b
+
+ ifconfig ${epair_small}a 192.0.2.1/25 up
+ jexec first ifconfig ${epair_small}b 192.0.2.2/25 up
+
+ jexec first sysctl net.inet.ip.forwarding=1
+ jexec first ifconfig ${epair_large}a 192.0.2.130/25 up
+ jexec first ifconfig ${epair_large}a mtu 9000
+ jexec second ifconfig ${epair_large}b 192.0.2.131/25 up
+ jexec second ifconfig ${epair_large}b mtu 9000
+ jexec second route add default 192.0.2.130
+
+ route add 192.0.2.128/25 192.0.2.2
+
+ jexec first pfctl -e
+ pft_set_rules first \
+ "scrub all fragment reassemble"
+
+ # Sanity checks
+ atf_check -s exit:0 -o ignore ping -c 1 192.0.2.2
+ atf_check -s exit:0 -o ignore ping -c 1 192.0.2.130
+ atf_check -s exit:0 -o ignore ping -c 1 192.0.2.131
+
+ # Large packet that'll get reassembled and sent out in one on the large
+ # epair
+ atf_check -s exit:0 -o ignore ping -c 1 -s 8000 192.0.2.131
+}
+
+mtu_diff_cleanup()
+{
+ pft_cleanup
+}
+
atf_init_test_cases()
{
atf_add_test_case "too_many_fragments"
atf_add_test_case "v6"
+ atf_add_test_case "mtu_diff"
}
More information about the dev-commits-src-branches
mailing list