Skip to content

Commit d4f7bf8

Browse files
Phil Suttermehmetb0
authored andcommitted
selftests: netfilter: Stabilize rpath.sh
BugLink: https://bugs.launchpad.net/bugs/2102181 [ Upstream commit d92906fd1b940681b4509f7bb8ae737789fb4695 ] On some systems, neighbor discoveries from ns1 for fec0:42::1 (i.e., the martian trap address) would happen at the wrong time and cause false-negative test result. Problem analysis also discovered that IPv6 martian ping test was broken in that sent neighbor discoveries, not echo requests were inadvertently trapped Avoid the race condition by introducing the neighbors to each other upfront. Also pin down the firewall rules to matching on echo requests only. Fixes: efb056e ("netfilter: ip6t_rpfilter: Fix regression with VRF interfaces") Signed-off-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org> [koichiroden: adjusted context due to missing commits: bb0ee78f9418 ("selftests: netfilter: skip tests on early errors") 3f189349e52a ("selftests: netfilter: move to net subdir")] Signed-off-by: Koichiro Den <koichiro.den@canonical.com> Signed-off-by: Mehmet Basaran <mehmet.basaran@canonical.com>
1 parent ab20428 commit d4f7bf8

File tree

1 file changed

+16
-2
lines changed
  • tools/testing/selftests/netfilter

1 file changed

+16
-2
lines changed

tools/testing/selftests/netfilter/rpath.sh

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,23 +61,37 @@ ip -net "$ns2" a a 192.168.42.1/24 dev d0
6161
ip -net "$ns1" a a fec0:42::2/64 dev v0 nodad
6262
ip -net "$ns2" a a fec0:42::1/64 dev d0 nodad
6363

64+
# avoid neighbor lookups and enable martian IPv6 pings
65+
ns2_hwaddr=$(ip -net "$ns2" link show dev v0 | \
66+
sed -n 's, *link/ether \([^ ]*\) .*,\1,p')
67+
ns1_hwaddr=$(ip -net "$ns1" link show dev v0 | \
68+
sed -n 's, *link/ether \([^ ]*\) .*,\1,p')
69+
ip -net "$ns1" neigh add fec0:42::1 lladdr "$ns2_hwaddr" nud permanent dev v0
70+
ip -net "$ns1" neigh add fec0:23::1 lladdr "$ns2_hwaddr" nud permanent dev v0
71+
ip -net "$ns2" neigh add fec0:42::2 lladdr "$ns1_hwaddr" nud permanent dev d0
72+
ip -net "$ns2" neigh add fec0:23::2 lladdr "$ns1_hwaddr" nud permanent dev v0
73+
6474
# firewall matches to test
6575
[ -n "$iptables" ] && {
6676
common='-t raw -A PREROUTING -s 192.168.0.0/16'
77+
common+=' -p icmp --icmp-type echo-request'
6778
ip netns exec "$ns2" "$iptables" $common -m rpfilter
6879
ip netns exec "$ns2" "$iptables" $common -m rpfilter --invert
6980
}
7081
[ -n "$ip6tables" ] && {
7182
common='-t raw -A PREROUTING -s fec0::/16'
83+
common+=' -p icmpv6 --icmpv6-type echo-request'
7284
ip netns exec "$ns2" "$ip6tables" $common -m rpfilter
7385
ip netns exec "$ns2" "$ip6tables" $common -m rpfilter --invert
7486
}
7587
[ -n "$nft" ] && ip netns exec "$ns2" $nft -f - <<EOF
7688
table inet t {
7789
chain c {
7890
type filter hook prerouting priority raw;
79-
ip saddr 192.168.0.0/16 fib saddr . iif oif exists counter
80-
ip6 saddr fec0::/16 fib saddr . iif oif exists counter
91+
ip saddr 192.168.0.0/16 icmp type echo-request \
92+
fib saddr . iif oif exists counter
93+
ip6 saddr fec0::/16 icmpv6 type echo-request \
94+
fib saddr . iif oif exists counter
8195
}
8296
}
8397
EOF

0 commit comments

Comments
 (0)