1a8905257SWeqaar Janjua#!/bin/bash
2a8905257SWeqaar Janjua# SPDX-License-Identifier: GPL-2.0
3a8905257SWeqaar Janjua# Copyright(c) 2020 Intel Corporation.
4a8905257SWeqaar Janjua
5a8905257SWeqaar Janjuaksft_pass=0
6a8905257SWeqaar Janjuaksft_fail=1
7a8905257SWeqaar Janjuaksft_xfail=2
8a8905257SWeqaar Janjuaksft_xpass=3
9a8905257SWeqaar Janjuaksft_skip=4
10a8905257SWeqaar Janjua
11facb7cb2SWeqaar JanjuaXSKOBJ=xdpxceiver
12a8905257SWeqaar Janjua
13a8905257SWeqaar Janjuavalidate_root_exec()
14a8905257SWeqaar Janjua{
15a8905257SWeqaar Janjua	msg="skip all tests:"
16a8905257SWeqaar Janjua	if [ $UID != 0 ]; then
17a8905257SWeqaar Janjua		echo $msg must be run as root >&2
18a8905257SWeqaar Janjua		test_exit $ksft_fail 2
19a8905257SWeqaar Janjua	else
20a8905257SWeqaar Janjua		return $ksft_pass
21a8905257SWeqaar Janjua	fi
22a8905257SWeqaar Janjua}
23a8905257SWeqaar Janjua
24a8905257SWeqaar Janjuavalidate_veth_support()
25a8905257SWeqaar Janjua{
26a8905257SWeqaar Janjua	msg="skip all tests:"
27a8905257SWeqaar Janjua	if [ $(ip link add $1 type veth 2>/dev/null; echo $?;) != 0 ]; then
28a8905257SWeqaar Janjua		echo $msg veth kernel support not available >&2
29a8905257SWeqaar Janjua		test_exit $ksft_skip 1
30a8905257SWeqaar Janjua	else
31a8905257SWeqaar Janjua		ip link del $1
32a8905257SWeqaar Janjua		return $ksft_pass
33a8905257SWeqaar Janjua	fi
34a8905257SWeqaar Janjua}
35a8905257SWeqaar Janjua
36a8905257SWeqaar Janjuatest_status()
37a8905257SWeqaar Janjua{
38a8905257SWeqaar Janjua	statusval=$1
39a8905257SWeqaar Janjua	if [ $statusval -eq 2 ]; then
40a8905257SWeqaar Janjua		echo -e "$2: [ FAIL ]"
41a8905257SWeqaar Janjua	elif [ $statusval -eq 1 ]; then
42a8905257SWeqaar Janjua		echo -e "$2: [ SKIPPED ]"
43a8905257SWeqaar Janjua	elif [ $statusval -eq 0 ]; then
44a8905257SWeqaar Janjua		echo -e "$2: [ PASS ]"
45a8905257SWeqaar Janjua	fi
46a8905257SWeqaar Janjua}
47a8905257SWeqaar Janjua
48a8905257SWeqaar Janjuatest_exit()
49a8905257SWeqaar Janjua{
50a8905257SWeqaar Janjua	retval=$1
51a8905257SWeqaar Janjua	if [ $2 -ne 0 ]; then
52a8905257SWeqaar Janjua		test_status $2 $(basename $0)
53a8905257SWeqaar Janjua	fi
54a8905257SWeqaar Janjua	exit $retval
55a8905257SWeqaar Janjua}
56a8905257SWeqaar Janjua
57a8905257SWeqaar Janjuaclear_configs()
58a8905257SWeqaar Janjua{
59a8905257SWeqaar Janjua	if [ $(ip netns show | grep $3 &>/dev/null; echo $?;) == 0 ]; then
60a8905257SWeqaar Janjua		[ $(ip netns exec $3 ip link show $2 &>/dev/null; echo $?;) == 0 ] &&
61ecde6061SMagnus Karlsson			{ ip netns exec $3 ip link del $2; }
62a8905257SWeqaar Janjua		ip netns del $3
63a8905257SWeqaar Janjua	fi
64a8905257SWeqaar Janjua	#Once we delete a veth pair node, the entire veth pair is removed,
65a8905257SWeqaar Janjua	#this is just to be cautious just incase the NS does not exist then
66a8905257SWeqaar Janjua	#veth node inside NS won't get removed so we explicitly remove it
67a8905257SWeqaar Janjua	[ $(ip link show $1 &>/dev/null; echo $?;) == 0 ] &&
68ecde6061SMagnus Karlsson		{ ip link del $1; }
69a8905257SWeqaar Janjua}
70a8905257SWeqaar Janjua
71a8905257SWeqaar Janjuacleanup_exit()
72a8905257SWeqaar Janjua{
73a8905257SWeqaar Janjua	clear_configs $1 $2 $3
74a8905257SWeqaar Janjua}
75a8905257SWeqaar Janjua
76a8905257SWeqaar Janjuavalidate_ip_utility()
77a8905257SWeqaar Janjua{
78a8905257SWeqaar Janjua	[ ! $(type -P ip) ] && { echo "'ip' not found. Skipping tests."; test_exit $ksft_skip 1; }
79a8905257SWeqaar Janjua}
80a8905257SWeqaar Janjua
81facb7cb2SWeqaar Janjuaexecxdpxceiver()
82facb7cb2SWeqaar Janjua{
83*f90062b5SMagnus Karlsson        if [[ $busy_poll -eq 1 ]]; then
84*f90062b5SMagnus Karlsson	        ARGS+="-b "
85*f90062b5SMagnus Karlsson	fi
86*f90062b5SMagnus Karlsson
87*f90062b5SMagnus Karlsson	./${XSKOBJ} -i ${VETH0} -i ${VETH1},${NS1} ${ARGS}
88facb7cb2SWeqaar Janjua}
89