]> www.infradead.org Git - users/hch/dma-mapping.git/commitdiff
selftests: netfilter: conntrack_vrf.sh: add fib test case
authorFlorian Westphal <fw@strlen.de>
Wed, 9 Oct 2024 07:19:03 +0000 (09:19 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 9 Oct 2024 21:31:15 +0000 (23:31 +0200)
meta iifname veth0 ip daddr ... fib daddr oif

... is expected to return "dummy0" interface which is part of same vrf
as veth0.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
tools/testing/selftests/net/netfilter/conntrack_vrf.sh

index 073e8e62d350b28f8b2664468f439a18b4a6951e..e95ecb37c2b145712e0e1f20267d0789f9ccb5c0 100755 (executable)
@@ -32,6 +32,7 @@ source lib.sh
 
 IP0=172.30.30.1
 IP1=172.30.30.2
+DUMMYNET=10.9.9
 PFXL=30
 ret=0
 
@@ -54,6 +55,7 @@ setup_ns ns0 ns1
 ip netns exec "$ns0" sysctl -q -w net.ipv4.conf.default.rp_filter=0
 ip netns exec "$ns0" sysctl -q -w net.ipv4.conf.all.rp_filter=0
 ip netns exec "$ns0" sysctl -q -w net.ipv4.conf.all.rp_filter=0
+ip netns exec "$ns0" sysctl -q -w net.ipv4.conf.all.forwarding=1
 
 if ! ip link add veth0 netns "$ns0" type veth peer name veth0 netns "$ns1" > /dev/null 2>&1; then
        echo "SKIP: Could not add veth device"
@@ -65,13 +67,18 @@ if ! ip -net "$ns0" li add tvrf type vrf table 9876; then
        exit $ksft_skip
 fi
 
+ip -net "$ns0" link add dummy0 type dummy
+
 ip -net "$ns0" li set veth0 master tvrf
+ip -net "$ns0" li set dummy0 master tvrf
 ip -net "$ns0" li set tvrf up
 ip -net "$ns0" li set veth0 up
+ip -net "$ns0" li set dummy0 up
 ip -net "$ns1" li set veth0 up
 
 ip -net "$ns0" addr add $IP0/$PFXL dev veth0
 ip -net "$ns1" addr add $IP1/$PFXL dev veth0
+ip -net "$ns0" addr add $DUMMYNET.1/$PFXL dev dummy0
 
 listener_ready()
 {
@@ -212,9 +219,35 @@ EOF
        fi
 }
 
+test_fib()
+{
+ip netns exec "$ns0" nft -f - <<EOF
+flush ruleset
+table ip t {
+       counter fibcount { }
+
+       chain prerouting {
+               type filter hook prerouting priority 0;
+               meta iifname veth0 ip daddr $DUMMYNET.2 fib daddr oif dummy0 counter name fibcount notrack
+       }
+}
+EOF
+       ip -net "$ns1" route add 10.9.9.0/24 via "$IP0" dev veth0
+       ip netns exec "$ns1" ping -q -w 1 -c 1 "$DUMMYNET".2 > /dev/null
+
+       if ip netns exec "$ns0" nft list counter t fibcount | grep -q "packets 1"; then
+               echo "PASS: fib lookup returned exepected output interface"
+       else
+               echo "FAIL: fib lookup did not return exepected output interface"
+               ret=1
+               return
+       fi
+}
+
 test_ct_zone_in
 test_masquerade_vrf "default"
 test_masquerade_vrf "pfifo"
 test_masquerade_veth
+test_fib
 
 exit $ret