Skip to content

Commit be135cc

Browse files
author
CKI Backport Bot
committed
selftests: netfilter: move fib vrf test to nft_fib.sh
JIRA: https://issues.redhat.com/browse/RHEL-88574 commit 9828704 Author: Florian Westphal <fw@strlen.de> Date: Wed May 21 11:38:46 2025 +0200 selftests: netfilter: move fib vrf test to nft_fib.sh It was located in conntrack_vrf.sh because that already had the VRF bits. Lets not add to this and move it to nft_fib.sh where this belongs. No functional changes for the subtest intended. The subtest is limited, it only covered 'fib oif' (route output interface query) when the incoming interface is part of a VRF. Next we can extend it to cover 'fib type' for VRFs and also check fib results when there is an unrelated VRF in same netns. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: CKI Backport Bot <cki-ci-bot+cki-gitlab-backport-bot@redhat.com>
1 parent f1a8c6f commit be135cc

File tree

2 files changed

+90
-34
lines changed

2 files changed

+90
-34
lines changed

tools/testing/selftests/net/netfilter/conntrack_vrf.sh

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ source lib.sh
3232

3333
IP0=172.30.30.1
3434
IP1=172.30.30.2
35-
DUMMYNET=10.9.9
3635
PFXL=30
3736
ret=0
3837

@@ -52,8 +51,6 @@ trap cleanup EXIT
5251

5352
setup_ns ns0 ns1
5453

55-
ip netns exec "$ns0" sysctl -q -w net.ipv4.conf.all.forwarding=1
56-
5754
if ! ip link add veth0 netns "$ns0" type veth peer name veth0 netns "$ns1" > /dev/null 2>&1; then
5855
echo "SKIP: Could not add veth device"
5956
exit $ksft_skip
@@ -64,18 +61,13 @@ if ! ip -net "$ns0" li add tvrf type vrf table 9876; then
6461
exit $ksft_skip
6562
fi
6663

67-
ip -net "$ns0" link add dummy0 type dummy
68-
6964
ip -net "$ns0" li set veth0 master tvrf
70-
ip -net "$ns0" li set dummy0 master tvrf
7165
ip -net "$ns0" li set tvrf up
7266
ip -net "$ns0" li set veth0 up
73-
ip -net "$ns0" li set dummy0 up
7467
ip -net "$ns1" li set veth0 up
7568

7669
ip -net "$ns0" addr add $IP0/$PFXL dev veth0
7770
ip -net "$ns1" addr add $IP1/$PFXL dev veth0
78-
ip -net "$ns0" addr add $DUMMYNET.1/$PFXL dev dummy0
7971

8072
listener_ready()
8173
{
@@ -216,35 +208,9 @@ EOF
216208
fi
217209
}
218210

219-
test_fib()
220-
{
221-
ip netns exec "$ns0" nft -f - <<EOF
222-
flush ruleset
223-
table ip t {
224-
counter fibcount { }
225-
226-
chain prerouting {
227-
type filter hook prerouting priority 0;
228-
meta iifname veth0 ip daddr $DUMMYNET.2 fib daddr oif dummy0 counter name fibcount notrack
229-
}
230-
}
231-
EOF
232-
ip -net "$ns1" route add 10.9.9.0/24 via "$IP0" dev veth0
233-
ip netns exec "$ns1" ping -q -w 1 -c 1 "$DUMMYNET".2 > /dev/null
234-
235-
if ip netns exec "$ns0" nft list counter t fibcount | grep -q "packets 1"; then
236-
echo "PASS: fib lookup returned exepected output interface"
237-
else
238-
echo "FAIL: fib lookup did not return exepected output interface"
239-
ret=1
240-
return
241-
fi
242-
}
243-
244211
test_ct_zone_in
245212
test_masquerade_vrf "default"
246213
test_masquerade_vrf "pfifo"
247214
test_masquerade_veth
248-
test_fib
249215

250216
exit $ret

tools/testing/selftests/net/netfilter/nft_fib.sh

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,23 @@ test_ping() {
252252
return 0
253253
}
254254

255+
test_ping_unreachable() {
256+
local daddr4=$1
257+
local daddr6=$2
258+
259+
if ip netns exec "$ns1" ping -c 1 -w 1 -q "$daddr4" > /dev/null; then
260+
echo "FAIL: ${ns1} could reach $daddr4" 1>&2
261+
return 1
262+
fi
263+
264+
if ip netns exec "$ns1" ping -c 1 -w 1 -q "$daddr6" > /dev/null; then
265+
echo "FAIL: ${ns1} could reach $daddr6" 1>&2
266+
return 1
267+
fi
268+
269+
return 0
270+
}
271+
255272
test_fib_type() {
256273
local notice="$1"
257274
local errmsg="addr-on-if"
@@ -295,6 +312,77 @@ test_fib_type() {
295312
fi
296313
}
297314

315+
test_fib_vrf_dev_add_dummy()
316+
{
317+
if ! ip -net "$nsrouter" link add dummy0 type dummy ;then
318+
echo "SKIP: VRF tests: dummy device type not supported"
319+
return 1
320+
fi
321+
322+
if ! ip -net "$nsrouter" link add tvrf type vrf table 9876;then
323+
echo "SKIP: VRF tests: vrf device type not supported"
324+
return 1
325+
fi
326+
327+
ip -net "$nsrouter" link set veth0 master tvrf
328+
ip -net "$nsrouter" link set dummy0 master tvrf
329+
ip -net "$nsrouter" link set dummy0 up
330+
ip -net "$nsrouter" link set tvrf up
331+
}
332+
333+
# Extends nsrouter config by adding dummy0+vrf.
334+
#
335+
# 10.0.1.99 10.0.1.1 10.0.2.1 10.0.2.99
336+
# dead:1::99 dead:1::1 dead:2::1 dead:2::99
337+
# ns1 <-------> [ veth0 ] nsrouter [veth1] <-------> ns2
338+
# [dummy0]
339+
# 10.9.9.1
340+
# dead:9::1
341+
# [tvrf]
342+
test_fib_vrf()
343+
{
344+
local dummynet="10.9.9"
345+
local dummynet6="dead:9"
346+
local cntname=""
347+
348+
if ! test_fib_vrf_dev_add_dummy; then
349+
[ $ret -eq 0 ] && ret=$ksft_skip
350+
return
351+
fi
352+
353+
ip -net "$nsrouter" addr add "$dummynet.1"/24 dev dummy0
354+
ip -net "$nsrouter" addr add "${dummynet6}::1"/64 dev dummy0 nodad
355+
356+
357+
ip netns exec "$nsrouter" nft -f - <<EOF
358+
flush ruleset
359+
table inet t {
360+
counter fibcount4 { }
361+
counter fibcount6 { }
362+
363+
chain prerouting {
364+
type filter hook prerouting priority 0;
365+
meta iifname veth0 ip daddr ${dummynet}.2 fib daddr oif dummy0 counter name fibcount4
366+
meta iifname veth0 ip6 daddr ${dummynet6}::2 fib daddr oif dummy0 counter name fibcount6
367+
}
368+
}
369+
EOF
370+
# no echo reply for these addresses: The dummy interface is part of tvrf,
371+
test_ping_unreachable "$dummynet.2" "${dummynet6}::2" &
372+
373+
wait
374+
375+
for cntname in fibcount4 fibcount6;do
376+
if ip netns exec "$nsrouter" nft list counter inet t "$cntname" | grep -q "packets 1"; then
377+
echo "PASS: vrf fib lookup did return expected output interface for $cntname"
378+
else
379+
ip netns exec "$nsrouter" nft list counter inet t "$cntname"
380+
echo "FAIL: vrf fib lookup did not return expected output interface for $cntname"
381+
ret=1
382+
fi
383+
done
384+
}
385+
298386
ip netns exec "$nsrouter" sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
299387
ip netns exec "$nsrouter" sysctl net.ipv4.conf.veth0.forwarding=1 > /dev/null
300388
ip netns exec "$nsrouter" sysctl net.ipv4.conf.veth1.forwarding=1 > /dev/null
@@ -416,4 +504,6 @@ test_fib_type "default table"
416504
ip netns exec "$nsrouter" nft delete table ip filter
417505
ip netns exec "$nsrouter" nft delete table ip6 filter
418506

507+
test_fib_vrf
508+
419509
exit $ret

0 commit comments

Comments
 (0)