Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/bpf: Add xdpdrv mode for test_xdp_redirect

This patch add xdpdrv mode for test_xdp_redirect.sh since veth has support
native mode. After update here is the test result:

# ./test_xdp_redirect.sh
selftests: test_xdp_redirect xdpgeneric [PASS]
selftests: test_xdp_redirect xdpdrv [PASS]

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Song Liu <songliubraving@fb.com>
Acked-by: William Tu <u9012063@gmail.com>
Link: https://lore.kernel.org/bpf/20200729085658.403794-1-liuhangbin@gmail.com

authored by

Hangbin Liu and committed by
Daniel Borkmann
dfdb0d93 4fb5f949

+58 -38
+58 -38
tools/testing/selftests/bpf/test_xdp_redirect.sh
··· 10 10 # | xdp forwarding | 11 11 # ------------------ 12 12 13 + ret=0 14 + 15 + setup() 16 + { 17 + 18 + local xdpmode=$1 19 + 20 + ip netns add ns1 21 + ip netns add ns2 22 + 23 + ip link add veth1 index 111 type veth peer name veth11 netns ns1 24 + ip link add veth2 index 222 type veth peer name veth22 netns ns2 25 + 26 + ip link set veth1 up 27 + ip link set veth2 up 28 + ip -n ns1 link set dev veth11 up 29 + ip -n ns2 link set dev veth22 up 30 + 31 + ip -n ns1 addr add 10.1.1.11/24 dev veth11 32 + ip -n ns2 addr add 10.1.1.22/24 dev veth22 33 + } 34 + 13 35 cleanup() 14 36 { 15 - if [ "$?" = "0" ]; then 16 - echo "selftests: test_xdp_redirect [PASS]"; 17 - else 18 - echo "selftests: test_xdp_redirect [FAILED]"; 19 - fi 20 - 21 - set +e 22 37 ip link del veth1 2> /dev/null 23 38 ip link del veth2 2> /dev/null 24 39 ip netns del ns1 2> /dev/null 25 40 ip netns del ns2 2> /dev/null 26 41 } 27 42 28 - ip link set dev lo xdpgeneric off 2>/dev/null > /dev/null 29 - if [ $? -ne 0 ];then 30 - echo "selftests: [SKIP] Could not run test without the ip xdpgeneric support" 31 - exit 0 32 - fi 43 + test_xdp_redirect() 44 + { 45 + local xdpmode=$1 46 + 47 + setup 48 + 49 + ip link set dev veth1 $xdpmode off &> /dev/null 50 + if [ $? -ne 0 ];then 51 + echo "selftests: test_xdp_redirect $xdpmode [SKIP]" 52 + return 0 53 + fi 54 + 55 + ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null 56 + ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null 57 + ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 &> /dev/null 58 + ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 &> /dev/null 59 + 60 + ip netns exec ns1 ping -c 1 10.1.1.22 &> /dev/null 61 + local ret1=$? 62 + ip netns exec ns2 ping -c 1 10.1.1.11 &> /dev/null 63 + local ret2=$? 64 + 65 + if [ $ret1 -eq 0 -a $ret2 -eq 0 ]; then 66 + echo "selftests: test_xdp_redirect $xdpmode [PASS]"; 67 + else 68 + ret=1 69 + echo "selftests: test_xdp_redirect $xdpmode [FAILED]"; 70 + fi 71 + 72 + cleanup 73 + } 74 + 33 75 set -e 76 + trap cleanup 2 3 6 9 34 77 35 - ip netns add ns1 36 - ip netns add ns2 78 + test_xdp_redirect xdpgeneric 79 + test_xdp_redirect xdpdrv 37 80 38 - trap cleanup 0 2 3 6 9 39 - 40 - ip link add veth1 index 111 type veth peer name veth11 41 - ip link add veth2 index 222 type veth peer name veth22 42 - 43 - ip link set veth11 netns ns1 44 - ip link set veth22 netns ns2 45 - 46 - ip link set veth1 up 47 - ip link set veth2 up 48 - 49 - ip netns exec ns1 ip addr add 10.1.1.11/24 dev veth11 50 - ip netns exec ns2 ip addr add 10.1.1.22/24 dev veth22 51 - 52 - ip netns exec ns1 ip link set dev veth11 up 53 - ip netns exec ns2 ip link set dev veth22 up 54 - 55 - ip link set dev veth1 xdpgeneric obj test_xdp_redirect.o sec redirect_to_222 56 - ip link set dev veth2 xdpgeneric obj test_xdp_redirect.o sec redirect_to_111 57 - 58 - ip netns exec ns1 ping -c 1 10.1.1.22 59 - ip netns exec ns2 ping -c 1 10.1.1.11 60 - 61 - exit 0 81 + exit $ret