0001
0002
0003
0004 readonly KSFT_SKIP=4
0005 readonly NS1="ns1-$(mktemp -u XXXXXX)"
0006 readonly NS2="ns2-$(mktemp -u XXXXXX)"
0007
0008 cleanup()
0009 {
0010 if [ "$?" = "0" ]; then
0011 echo "selftests: test_xdp_meta [PASS]";
0012 else
0013 echo "selftests: test_xdp_meta [FAILED]";
0014 fi
0015
0016 set +e
0017 ip link del veth1 2> /dev/null
0018 ip netns del ${NS1} 2> /dev/null
0019 ip netns del ${NS2} 2> /dev/null
0020 }
0021
0022 ip link set dev lo xdp off 2>/dev/null > /dev/null
0023 if [ $? -ne 0 ];then
0024 echo "selftests: [SKIP] Could not run test without the ip xdp support"
0025 exit $KSFT_SKIP
0026 fi
0027 set -e
0028
0029 ip netns add ${NS1}
0030 ip netns add ${NS2}
0031
0032 trap cleanup 0 2 3 6 9
0033
0034 ip link add veth1 type veth peer name veth2
0035
0036 ip link set veth1 netns ${NS1}
0037 ip link set veth2 netns ${NS2}
0038
0039 ip netns exec ${NS1} ip addr add 10.1.1.11/24 dev veth1
0040 ip netns exec ${NS2} ip addr add 10.1.1.22/24 dev veth2
0041
0042 ip netns exec ${NS1} tc qdisc add dev veth1 clsact
0043 ip netns exec ${NS2} tc qdisc add dev veth2 clsact
0044
0045 ip netns exec ${NS1} tc filter add dev veth1 ingress bpf da obj test_xdp_meta.o sec t
0046 ip netns exec ${NS2} tc filter add dev veth2 ingress bpf da obj test_xdp_meta.o sec t
0047
0048 ip netns exec ${NS1} ip link set dev veth1 xdp obj test_xdp_meta.o sec x
0049 ip netns exec ${NS2} ip link set dev veth2 xdp obj test_xdp_meta.o sec x
0050
0051 ip netns exec ${NS1} ip link set dev veth1 up
0052 ip netns exec ${NS2} ip link set dev veth2 up
0053
0054 ip netns exec ${NS1} ping -c 1 10.1.1.22
0055 ip netns exec ${NS2} ping -c 1 10.1.1.11
0056
0057 exit 0