]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
selftest: forwarding: router: Add a test case for IPv4 link-local source IP
authorIdo Schimmel <idosch@nvidia.com>
Thu, 14 Aug 2025 13:06:41 +0000 (15:06 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 15 Aug 2025 17:44:48 +0000 (10:44 -0700)
Add a test case which checks that packets with an IPv4 link-local source
IP are forwarded and not dropped.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/3c2e0b17d99530f57bef5ddff9af284fa0c9b667.1755174341.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/forwarding/router.sh

index b98ea9449b8b26856c8cfd571e07116f084f190f..dfb6646cb97bf4699a1210ae5d56d8544d6dd4cb 100755 (executable)
@@ -18,6 +18,8 @@
 # | 2001:db8:1::1/64                             2001:db8:2::1/64   |
 # |                                                                 |
 # +-----------------------------------------------------------------+
+#
+#shellcheck disable=SC2034 # SC doesn't see our uses of global variables
 
 ALL_TESTS="
        ping_ipv4
@@ -27,6 +29,7 @@ ALL_TESTS="
        ipv4_sip_equal_dip
        ipv6_sip_equal_dip
        ipv4_dip_link_local
+       ipv4_sip_link_local
 "
 
 NUM_NETIFS=4
@@ -330,6 +333,32 @@ ipv4_dip_link_local()
        tc filter del dev $rp2 egress protocol ip pref 1 handle 101 flower
 }
 
+ipv4_sip_link_local()
+{
+       local sip=169.254.1.1
+
+       RET=0
+
+       # Disable rpfilter to prevent packets to be dropped because of it.
+       sysctl_set net.ipv4.conf.all.rp_filter 0
+       sysctl_set net.ipv4.conf."$rp1".rp_filter 0
+
+       tc filter add dev "$rp2" egress protocol ip pref 1 handle 101 \
+               flower src_ip "$sip" action pass
+
+       $MZ "$h1" -t udp "sp=54321,dp=12345" -c 5 -d 1msec -b "$rp1mac" \
+               -A "$sip" -B 198.51.100.2 -q
+
+       tc_check_packets "dev $rp2 egress" 101 5
+       check_err $? "Packets were dropped"
+
+       log_test "IPv4 source IP is link-local"
+
+       tc filter del dev "$rp2" egress protocol ip pref 1 handle 101 flower
+       sysctl_restore net.ipv4.conf."$rp1".rp_filter
+       sysctl_restore net.ipv4.conf.all.rp_filter
+}
+
 trap cleanup EXIT
 
 setup_prepare