xref: /linux/tools/testing/selftests/bpf/test_xdp_meta.sh (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
122c88526SDaniel Borkmann#!/bin/sh
222c88526SDaniel Borkmann
3*98af3746SWang YufenBPF_FILE="test_xdp_meta.bpf.o"
4d4b6f87eSPo-Hsu Lin# Kselftest framework requirement - SKIP code is 4.
5d4b6f87eSPo-Hsu Linreadonly KSFT_SKIP=4
636d9970eSHangbin Liureadonly NS1="ns1-$(mktemp -u XXXXXX)"
736d9970eSHangbin Liureadonly NS2="ns2-$(mktemp -u XXXXXX)"
8d4b6f87eSPo-Hsu Lin
922c88526SDaniel Borkmanncleanup()
1022c88526SDaniel Borkmann{
1122c88526SDaniel Borkmann	if [ "$?" = "0" ]; then
1222c88526SDaniel Borkmann		echo "selftests: test_xdp_meta [PASS]";
1322c88526SDaniel Borkmann	else
1422c88526SDaniel Borkmann		echo "selftests: test_xdp_meta [FAILED]";
1522c88526SDaniel Borkmann	fi
1622c88526SDaniel Borkmann
1722c88526SDaniel Borkmann	set +e
187b4eb53dSYonghong Song	ip link del veth1 2> /dev/null
1936d9970eSHangbin Liu	ip netns del ${NS1} 2> /dev/null
2036d9970eSHangbin Liu	ip netns del ${NS2} 2> /dev/null
2122c88526SDaniel Borkmann}
2222c88526SDaniel Borkmann
2322c88526SDaniel Borkmannip link set dev lo xdp off 2>/dev/null > /dev/null
2422c88526SDaniel Borkmannif [ $? -ne 0 ];then
2522c88526SDaniel Borkmann	echo "selftests: [SKIP] Could not run test without the ip xdp support"
26d4b6f87eSPo-Hsu Lin	exit $KSFT_SKIP
2722c88526SDaniel Borkmannfi
2822c88526SDaniel Borkmannset -e
2922c88526SDaniel Borkmann
3036d9970eSHangbin Liuip netns add ${NS1}
3136d9970eSHangbin Liuip netns add ${NS2}
3222c88526SDaniel Borkmann
3322c88526SDaniel Borkmanntrap cleanup 0 2 3 6 9
3422c88526SDaniel Borkmann
3522c88526SDaniel Borkmannip link add veth1 type veth peer name veth2
3622c88526SDaniel Borkmann
3736d9970eSHangbin Liuip link set veth1 netns ${NS1}
3836d9970eSHangbin Liuip link set veth2 netns ${NS2}
3922c88526SDaniel Borkmann
4036d9970eSHangbin Liuip netns exec ${NS1} ip addr add 10.1.1.11/24 dev veth1
4136d9970eSHangbin Liuip netns exec ${NS2} ip addr add 10.1.1.22/24 dev veth2
4222c88526SDaniel Borkmann
4336d9970eSHangbin Liuip netns exec ${NS1} tc qdisc add dev veth1 clsact
4436d9970eSHangbin Liuip netns exec ${NS2} tc qdisc add dev veth2 clsact
4522c88526SDaniel Borkmann
46*98af3746SWang Yufenip netns exec ${NS1} tc filter add dev veth1 ingress bpf da obj ${BPF_FILE} sec t
47*98af3746SWang Yufenip netns exec ${NS2} tc filter add dev veth2 ingress bpf da obj ${BPF_FILE} sec t
4822c88526SDaniel Borkmann
49*98af3746SWang Yufenip netns exec ${NS1} ip link set dev veth1 xdp obj ${BPF_FILE} sec x
50*98af3746SWang Yufenip netns exec ${NS2} ip link set dev veth2 xdp obj ${BPF_FILE} sec x
5122c88526SDaniel Borkmann
5236d9970eSHangbin Liuip netns exec ${NS1} ip link set dev veth1 up
5336d9970eSHangbin Liuip netns exec ${NS2} ip link set dev veth2 up
5422c88526SDaniel Borkmann
5536d9970eSHangbin Liuip netns exec ${NS1} ping -c 1 10.1.1.22
5636d9970eSHangbin Liuip netns exec ${NS2} ping -c 1 10.1.1.11
5722c88526SDaniel Borkmann
5822c88526SDaniel Borkmannexit 0
59