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