Commit b3dddab2 authored by Alexei Starovoitov's avatar Alexei Starovoitov
Browse files

Merge branch 'selftests/bpf: use temp netns for testing'



Hangbin Liu says:

====================

There are some bpf tests using hard code netns name like ns0, ns1, etc.
This kind of ns name is easily used by other tests or system. If there
is already a such netns, all the related tests will failed. So let's
use temp netns name for testing.

The first patch not only change to temp netns. But also fixed an interface
index issue. So I add fixes tag. For the later patches, I think that
should be an update instead of fixes, so the fixes tag is not added.
====================

Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parents b6ec7951 4ec25b49
Loading
Loading
Loading
Loading
+88 −82
Original line number Diff line number Diff line
@@ -23,6 +23,12 @@

# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4
readonly NS1="ns1-$(mktemp -u XXXXXX)"
readonly NS2="ns2-$(mktemp -u XXXXXX)"
readonly NS3="ns3-$(mktemp -u XXXXXX)"
readonly NS4="ns4-$(mktemp -u XXXXXX)"
readonly NS5="ns5-$(mktemp -u XXXXXX)"
readonly NS6="ns6-$(mktemp -u XXXXXX)"

msg="skip all tests:"
if [ $UID != 0 ]; then
@@ -41,23 +47,23 @@ cleanup()
	fi

	set +e
	ip netns del ns1 2> /dev/null
	ip netns del ns2 2> /dev/null
	ip netns del ns3 2> /dev/null
	ip netns del ns4 2> /dev/null
	ip netns del ns5 2> /dev/null
	ip netns del ns6 2> /dev/null
	ip netns del ${NS1} 2> /dev/null
	ip netns del ${NS2} 2> /dev/null
	ip netns del ${NS3} 2> /dev/null
	ip netns del ${NS4} 2> /dev/null
	ip netns del ${NS5} 2> /dev/null
	ip netns del ${NS6} 2> /dev/null
	rm -f $TMP_FILE
}

set -e

ip netns add ns1
ip netns add ns2
ip netns add ns3
ip netns add ns4
ip netns add ns5
ip netns add ns6
ip netns add ${NS1}
ip netns add ${NS2}
ip netns add ${NS3}
ip netns add ${NS4}
ip netns add ${NS5}
ip netns add ${NS6}

trap cleanup 0 2 3 6 9

@@ -67,78 +73,78 @@ ip link add veth5 type veth peer name veth6
ip link add veth7 type veth peer name veth8
ip link add veth9 type veth peer name veth10

ip link set veth1 netns ns1
ip link set veth2 netns ns2
ip link set veth3 netns ns2
ip link set veth4 netns ns3
ip link set veth5 netns ns3
ip link set veth6 netns ns4
ip link set veth7 netns ns4
ip link set veth8 netns ns5
ip link set veth9 netns ns5
ip link set veth10 netns ns6

ip netns exec ns1 ip link set dev veth1 up
ip netns exec ns2 ip link set dev veth2 up
ip netns exec ns2 ip link set dev veth3 up
ip netns exec ns3 ip link set dev veth4 up
ip netns exec ns3 ip link set dev veth5 up
ip netns exec ns4 ip link set dev veth6 up
ip netns exec ns4 ip link set dev veth7 up
ip netns exec ns5 ip link set dev veth8 up
ip netns exec ns5 ip link set dev veth9 up
ip netns exec ns6 ip link set dev veth10 up
ip netns exec ns6 ip link set dev lo up
ip link set veth1 netns ${NS1}
ip link set veth2 netns ${NS2}
ip link set veth3 netns ${NS2}
ip link set veth4 netns ${NS3}
ip link set veth5 netns ${NS3}
ip link set veth6 netns ${NS4}
ip link set veth7 netns ${NS4}
ip link set veth8 netns ${NS5}
ip link set veth9 netns ${NS5}
ip link set veth10 netns ${NS6}

ip netns exec ${NS1} ip link set dev veth1 up
ip netns exec ${NS2} ip link set dev veth2 up
ip netns exec ${NS2} ip link set dev veth3 up
ip netns exec ${NS3} ip link set dev veth4 up
ip netns exec ${NS3} ip link set dev veth5 up
ip netns exec ${NS4} ip link set dev veth6 up
ip netns exec ${NS4} ip link set dev veth7 up
ip netns exec ${NS5} ip link set dev veth8 up
ip netns exec ${NS5} ip link set dev veth9 up
ip netns exec ${NS6} ip link set dev veth10 up
ip netns exec ${NS6} ip link set dev lo up

# All link scope addresses and routes required between veths
ip netns exec ns1 ip -6 addr add fb00::12/16 dev veth1 scope link
ip netns exec ns1 ip -6 route add fb00::21 dev veth1 scope link
ip netns exec ns2 ip -6 addr add fb00::21/16 dev veth2 scope link
ip netns exec ns2 ip -6 addr add fb00::34/16 dev veth3 scope link
ip netns exec ns2 ip -6 route add fb00::43 dev veth3 scope link
ip netns exec ns3 ip -6 route add fb00::65 dev veth5 scope link
ip netns exec ns3 ip -6 addr add fb00::43/16 dev veth4 scope link
ip netns exec ns3 ip -6 addr add fb00::56/16 dev veth5 scope link
ip netns exec ns4 ip -6 addr add fb00::65/16 dev veth6 scope link
ip netns exec ns4 ip -6 addr add fb00::78/16 dev veth7 scope link
ip netns exec ns4 ip -6 route add fb00::87 dev veth7 scope link
ip netns exec ns5 ip -6 addr add fb00::87/16 dev veth8 scope link
ip netns exec ns5 ip -6 addr add fb00::910/16 dev veth9 scope link
ip netns exec ns5 ip -6 route add fb00::109 dev veth9 scope link
ip netns exec ns5 ip -6 route add fb00::109 table 117 dev veth9 scope link
ip netns exec ns6 ip -6 addr add fb00::109/16 dev veth10 scope link

ip netns exec ns1 ip -6 addr add fb00::1/16 dev lo
ip netns exec ns1 ip -6 route add fb00::6 dev veth1 via fb00::21

ip netns exec ns2 ip -6 route add fb00::6 encap bpf in obj test_lwt_seg6local.o sec encap_srh dev veth2
ip netns exec ns2 ip -6 route add fd00::1 dev veth3 via fb00::43 scope link

ip netns exec ns3 ip -6 route add fc42::1 dev veth5 via fb00::65
ip netns exec ns3 ip -6 route add fd00::1 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec add_egr_x dev veth4

ip netns exec ns4 ip -6 route add fd00::2 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec pop_egr dev veth6
ip netns exec ns4 ip -6 addr add fc42::1 dev lo
ip netns exec ns4 ip -6 route add fd00::3 dev veth7 via fb00::87

ip netns exec ns5 ip -6 route add fd00::4 table 117 dev veth9 via fb00::109
ip netns exec ns5 ip -6 route add fd00::3 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec inspect_t dev veth8

ip netns exec ns6 ip -6 addr add fb00::6/16 dev lo
ip netns exec ns6 ip -6 addr add fd00::4/16 dev lo

ip netns exec ns1 sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ns2 sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ns3 sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ns4 sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ns5 sysctl net.ipv6.conf.all.forwarding=1 > /dev/null

ip netns exec ns6 sysctl net.ipv6.conf.all.seg6_enabled=1 > /dev/null
ip netns exec ns6 sysctl net.ipv6.conf.lo.seg6_enabled=1 > /dev/null
ip netns exec ns6 sysctl net.ipv6.conf.veth10.seg6_enabled=1 > /dev/null

ip netns exec ns6 nc -l -6 -u -d 7330 > $TMP_FILE &
ip netns exec ns1 bash -c "echo 'foobar' | nc -w0 -6 -u -p 2121 -s fb00::1 fb00::6 7330"
ip netns exec ${NS1} ip -6 addr add fb00::12/16 dev veth1 scope link
ip netns exec ${NS1} ip -6 route add fb00::21 dev veth1 scope link
ip netns exec ${NS2} ip -6 addr add fb00::21/16 dev veth2 scope link
ip netns exec ${NS2} ip -6 addr add fb00::34/16 dev veth3 scope link
ip netns exec ${NS2} ip -6 route add fb00::43 dev veth3 scope link
ip netns exec ${NS3} ip -6 route add fb00::65 dev veth5 scope link
ip netns exec ${NS3} ip -6 addr add fb00::43/16 dev veth4 scope link
ip netns exec ${NS3} ip -6 addr add fb00::56/16 dev veth5 scope link
ip netns exec ${NS4} ip -6 addr add fb00::65/16 dev veth6 scope link
ip netns exec ${NS4} ip -6 addr add fb00::78/16 dev veth7 scope link
ip netns exec ${NS4} ip -6 route add fb00::87 dev veth7 scope link
ip netns exec ${NS5} ip -6 addr add fb00::87/16 dev veth8 scope link
ip netns exec ${NS5} ip -6 addr add fb00::910/16 dev veth9 scope link
ip netns exec ${NS5} ip -6 route add fb00::109 dev veth9 scope link
ip netns exec ${NS5} ip -6 route add fb00::109 table 117 dev veth9 scope link
ip netns exec ${NS6} ip -6 addr add fb00::109/16 dev veth10 scope link

ip netns exec ${NS1} ip -6 addr add fb00::1/16 dev lo
ip netns exec ${NS1} ip -6 route add fb00::6 dev veth1 via fb00::21

ip netns exec ${NS2} ip -6 route add fb00::6 encap bpf in obj test_lwt_seg6local.o sec encap_srh dev veth2
ip netns exec ${NS2} ip -6 route add fd00::1 dev veth3 via fb00::43 scope link

ip netns exec ${NS3} ip -6 route add fc42::1 dev veth5 via fb00::65
ip netns exec ${NS3} ip -6 route add fd00::1 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec add_egr_x dev veth4

ip netns exec ${NS4} ip -6 route add fd00::2 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec pop_egr dev veth6
ip netns exec ${NS4} ip -6 addr add fc42::1 dev lo
ip netns exec ${NS4} ip -6 route add fd00::3 dev veth7 via fb00::87

ip netns exec ${NS5} ip -6 route add fd00::4 table 117 dev veth9 via fb00::109
ip netns exec ${NS5} ip -6 route add fd00::3 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec inspect_t dev veth8

ip netns exec ${NS6} ip -6 addr add fb00::6/16 dev lo
ip netns exec ${NS6} ip -6 addr add fd00::4/16 dev lo

ip netns exec ${NS1} sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ${NS2} sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ${NS3} sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ${NS4} sysctl net.ipv6.conf.all.forwarding=1 > /dev/null
ip netns exec ${NS5} sysctl net.ipv6.conf.all.forwarding=1 > /dev/null

ip netns exec ${NS6} sysctl net.ipv6.conf.all.seg6_enabled=1 > /dev/null
ip netns exec ${NS6} sysctl net.ipv6.conf.lo.seg6_enabled=1 > /dev/null
ip netns exec ${NS6} sysctl net.ipv6.conf.veth10.seg6_enabled=1 > /dev/null

ip netns exec ${NS6} nc -l -6 -u -d 7330 > $TMP_FILE &
ip netns exec ${NS1} bash -c "echo 'foobar' | nc -w0 -6 -u -p 2121 -s fb00::1 fb00::6 7330"
sleep 5 # wait enough time to ensure the UDP datagram arrived to the last segment
kill -TERM $!

+3 −2
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
# Copyright (c) 2019 Cloudflare

set -eu
readonly NS1="ns1-$(mktemp -u XXXXXX)"

wait_for_ip()
{
@@ -28,12 +29,12 @@ get_prog_id()

ns1_exec()
{
	ip netns exec ns1 "$@"
	ip netns exec ${NS1} "$@"
}

setup()
{
	ip netns add ns1
	ip netns add ${NS1}
	ns1_exec ip link set lo up

	ns1_exec sysctl -w net.ipv4.tcp_syncookies=2
+20 −18
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

# Kselftest framework requirement - SKIP code is 4.
readonly KSFT_SKIP=4
readonly NS1="ns1-$(mktemp -u XXXXXX)"
readonly NS2="ns2-$(mktemp -u XXXXXX)"

cleanup()
{
@@ -13,8 +15,8 @@ cleanup()

	set +e
	ip link del veth1 2> /dev/null
	ip netns del ns1 2> /dev/null
	ip netns del ns2 2> /dev/null
	ip netns del ${NS1} 2> /dev/null
	ip netns del ${NS2} 2> /dev/null
}

ip link set dev lo xdp off 2>/dev/null > /dev/null
@@ -24,32 +26,32 @@ if [ $? -ne 0 ];then
fi
set -e

ip netns add ns1
ip netns add ns2
ip netns add ${NS1}
ip netns add ${NS2}

trap cleanup 0 2 3 6 9

ip link add veth1 type veth peer name veth2

ip link set veth1 netns ns1
ip link set veth2 netns ns2
ip link set veth1 netns ${NS1}
ip link set veth2 netns ${NS2}

ip netns exec ns1 ip addr add 10.1.1.11/24 dev veth1
ip netns exec ns2 ip addr add 10.1.1.22/24 dev veth2
ip netns exec ${NS1} ip addr add 10.1.1.11/24 dev veth1
ip netns exec ${NS2} ip addr add 10.1.1.22/24 dev veth2

ip netns exec ns1 tc qdisc add dev veth1 clsact
ip netns exec ns2 tc qdisc add dev veth2 clsact
ip netns exec ${NS1} tc qdisc add dev veth1 clsact
ip netns exec ${NS2} tc qdisc add dev veth2 clsact

ip netns exec ns1 tc filter add dev veth1 ingress bpf da obj test_xdp_meta.o sec t
ip netns exec ns2 tc filter add dev veth2 ingress bpf da obj test_xdp_meta.o sec t
ip netns exec ${NS1} tc filter add dev veth1 ingress bpf da obj test_xdp_meta.o sec t
ip netns exec ${NS2} tc filter add dev veth2 ingress bpf da obj test_xdp_meta.o sec t

ip netns exec ns1 ip link set dev veth1 xdp obj test_xdp_meta.o sec x
ip netns exec ns2 ip link set dev veth2 xdp obj test_xdp_meta.o sec x
ip netns exec ${NS1} ip link set dev veth1 xdp obj test_xdp_meta.o sec x
ip netns exec ${NS2} ip link set dev veth2 xdp obj test_xdp_meta.o sec x

ip netns exec ns1 ip link set dev veth1 up
ip netns exec ns2 ip link set dev veth2 up
ip netns exec ${NS1} ip link set dev veth1 up
ip netns exec ${NS2} ip link set dev veth2 up

ip netns exec ns1 ping -c 1 10.1.1.22
ip netns exec ns2 ping -c 1 10.1.1.11
ip netns exec ${NS1} ping -c 1 10.1.1.22
ip netns exec ${NS2} ping -c 1 10.1.1.11

exit 0
+16 −14
Original line number Diff line number Diff line
@@ -10,6 +10,8 @@
#     | xdp forwarding |
#     ------------------

readonly NS1="ns1-$(mktemp -u XXXXXX)"
readonly NS2="ns2-$(mktemp -u XXXXXX)"
ret=0

setup()
@@ -17,27 +19,27 @@ setup()

	local xdpmode=$1

	ip netns add ns1
	ip netns add ns2
	ip netns add ${NS1}
	ip netns add ${NS2}

	ip link add veth1 index 111 type veth peer name veth11 netns ns1
	ip link add veth2 index 222 type veth peer name veth22 netns ns2
	ip link add veth1 index 111 type veth peer name veth11 netns ${NS1}
	ip link add veth2 index 222 type veth peer name veth22 netns ${NS2}

	ip link set veth1 up
	ip link set veth2 up
	ip -n ns1 link set dev veth11 up
	ip -n ns2 link set dev veth22 up
	ip -n ${NS1} link set dev veth11 up
	ip -n ${NS2} link set dev veth22 up

	ip -n ns1 addr add 10.1.1.11/24 dev veth11
	ip -n ns2 addr add 10.1.1.22/24 dev veth22
	ip -n ${NS1} addr add 10.1.1.11/24 dev veth11
	ip -n ${NS2} addr add 10.1.1.22/24 dev veth22
}

cleanup()
{
	ip link del veth1 2> /dev/null
	ip link del veth2 2> /dev/null
	ip netns del ns1 2> /dev/null
	ip netns del ns2 2> /dev/null
	ip netns del ${NS1} 2> /dev/null
	ip netns del ${NS2} 2> /dev/null
}

test_xdp_redirect()
@@ -52,13 +54,13 @@ test_xdp_redirect()
		return 0
	fi

	ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp &> /dev/null
	ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp &> /dev/null
	ip -n ${NS1} link set veth11 $xdpmode obj xdp_dummy.o sec xdp &> /dev/null
	ip -n ${NS2} link set veth22 $xdpmode obj xdp_dummy.o sec xdp &> /dev/null
	ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 &> /dev/null
	ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 &> /dev/null

	if ip netns exec ns1 ping -c 1 10.1.1.22 &> /dev/null &&
	   ip netns exec ns2 ping -c 1 10.1.1.11 &> /dev/null; then
	if ip netns exec ${NS1} ping -c 1 10.1.1.22 &> /dev/null &&
	   ip netns exec ${NS2} ping -c 1 10.1.1.11 &> /dev/null; then
		echo "selftests: test_xdp_redirect $xdpmode [PASS]";
	else
		ret=1
+31 −29
Original line number Diff line number Diff line
@@ -32,6 +32,11 @@ DRV_MODE="xdpgeneric xdpdrv xdpegress"
PASS=0
FAIL=0
LOG_DIR=$(mktemp -d)
declare -a NS
NS[0]="ns0-$(mktemp -u XXXXXX)"
NS[1]="ns1-$(mktemp -u XXXXXX)"
NS[2]="ns2-$(mktemp -u XXXXXX)"
NS[3]="ns3-$(mktemp -u XXXXXX)"

test_pass()
{
@@ -47,11 +52,9 @@ test_fail()

clean_up()
{
	for i in $(seq $NUM); do
		ip link del veth$i 2> /dev/null
		ip netns del ns$i 2> /dev/null
	for i in $(seq 0 $NUM); do
		ip netns del ${NS[$i]} 2> /dev/null
	done
	ip netns del ns0 2> /dev/null
}

# Kselftest framework requirement - SKIP code is 4.
@@ -79,23 +82,22 @@ setup_ns()
		mode="xdpdrv"
	fi

	ip netns add ns0
	ip netns add ${NS[0]}
	for i in $(seq $NUM); do
	        ip netns add ns$i
		ip -n ns$i link add veth0 index 2 type veth \
			peer name veth$i netns ns0 index $((1 + $i))
		ip -n ns0 link set veth$i up
		ip -n ns$i link set veth0 up

		ip -n ns$i addr add 192.0.2.$i/24 dev veth0
		ip -n ns$i addr add 2001:db8::$i/64 dev veth0
	        ip netns add ${NS[$i]}
		ip -n ${NS[$i]} link add veth0 type veth peer name veth$i netns ${NS[0]}
		ip -n ${NS[$i]} link set veth0 up
		ip -n ${NS[0]} link set veth$i up

		ip -n ${NS[$i]} addr add 192.0.2.$i/24 dev veth0
		ip -n ${NS[$i]} addr add 2001:db8::$i/64 dev veth0
		# Add a neigh entry for IPv4 ping test
		ip -n ns$i neigh add 192.0.2.253 lladdr 00:00:00:00:00:01 dev veth0
		ip -n ns$i link set veth0 $mode obj \
		ip -n ${NS[$i]} neigh add 192.0.2.253 lladdr 00:00:00:00:00:01 dev veth0
		ip -n ${NS[$i]} link set veth0 $mode obj \
			xdp_dummy.o sec xdp &> /dev/null || \
			{ test_fail "Unable to load dummy xdp" && exit 1; }
		IFACES="$IFACES veth$i"
		veth_mac[$i]=$(ip -n ns0 link show veth$i | awk '/link\/ether/ {print $2}')
		veth_mac[$i]=$(ip -n ${NS[0]} link show veth$i | awk '/link\/ether/ {print $2}')
	done
}

@@ -104,10 +106,10 @@ do_egress_tests()
	local mode=$1

	# mac test
	ip netns exec ns2 tcpdump -e -i veth0 -nn -l -e &> ${LOG_DIR}/mac_ns1-2_${mode}.log &
	ip netns exec ns3 tcpdump -e -i veth0 -nn -l -e &> ${LOG_DIR}/mac_ns1-3_${mode}.log &
	ip netns exec ${NS[2]} tcpdump -e -i veth0 -nn -l -e &> ${LOG_DIR}/mac_ns1-2_${mode}.log &
	ip netns exec ${NS[3]} tcpdump -e -i veth0 -nn -l -e &> ${LOG_DIR}/mac_ns1-3_${mode}.log &
	sleep 0.5
	ip netns exec ns1 ping 192.0.2.254 -i 0.1 -c 4 &> /dev/null
	ip netns exec ${NS[1]} ping 192.0.2.254 -i 0.1 -c 4 &> /dev/null
	sleep 0.5
	pkill tcpdump

@@ -123,18 +125,18 @@ do_ping_tests()
	local mode=$1

	# ping6 test: echo request should be redirect back to itself, not others
	ip netns exec ns1 ip neigh add 2001:db8::2 dev veth0 lladdr 00:00:00:00:00:02
	ip netns exec ${NS[1]} ip neigh add 2001:db8::2 dev veth0 lladdr 00:00:00:00:00:02

	ip netns exec ns1 tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-1_${mode}.log &
	ip netns exec ns2 tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-2_${mode}.log &
	ip netns exec ns3 tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-3_${mode}.log &
	ip netns exec ${NS[1]} tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-1_${mode}.log &
	ip netns exec ${NS[2]} tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-2_${mode}.log &
	ip netns exec ${NS[3]} tcpdump -i veth0 -nn -l -e &> ${LOG_DIR}/ns1-3_${mode}.log &
	sleep 0.5
	# ARP test
	ip netns exec ns1 arping -q -c 2 -I veth0 192.0.2.254
	ip netns exec ${NS[1]} arping -q -c 2 -I veth0 192.0.2.254
	# IPv4 test
	ip netns exec ns1 ping 192.0.2.253 -i 0.1 -c 4 &> /dev/null
	ip netns exec ${NS[1]} ping 192.0.2.253 -i 0.1 -c 4 &> /dev/null
	# IPv6 test
	ip netns exec ns1 ping6 2001:db8::2 -i 0.1 -c 2 &> /dev/null
	ip netns exec ${NS[1]} ping6 2001:db8::2 -i 0.1 -c 2 &> /dev/null
	sleep 0.5
	pkill tcpdump

@@ -180,7 +182,7 @@ do_tests()
		xdpgeneric) drv_p="-S";;
	esac

	ip netns exec ns0 ./xdp_redirect_multi $drv_p $IFACES &> ${LOG_DIR}/xdp_redirect_${mode}.log &
	ip netns exec ${NS[0]} ./xdp_redirect_multi $drv_p $IFACES &> ${LOG_DIR}/xdp_redirect_${mode}.log &
	xdp_pid=$!
	sleep 1
	if ! ps -p $xdp_pid > /dev/null; then
@@ -197,10 +199,10 @@ do_tests()
	kill $xdp_pid
}

trap clean_up EXIT

check_env

trap clean_up EXIT

for mode in ${DRV_MODE}; do
	setup_ns $mode
	do_tests $mode
Loading