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 18*895b62eeSMagnus Karlsson test_exit $ksft_fail 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 29*895b62eeSMagnus Karlsson test_exit $ksft_skip 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 39*895b62eeSMagnus Karlsson if [ $statusval -eq $ksft_fail ]; then 40*895b62eeSMagnus Karlsson echo "$2: [ FAIL ]" 41*895b62eeSMagnus Karlsson elif [ $statusval -eq $ksft_skip ]; then 42*895b62eeSMagnus Karlsson echo "$2: [ SKIPPED ]" 43*895b62eeSMagnus Karlsson elif [ $statusval -eq $ksft_pass ]; then 44*895b62eeSMagnus Karlsson echo "$2: [ PASS ]" 45a8905257SWeqaar Janjua fi 46a8905257SWeqaar Janjua} 47a8905257SWeqaar Janjua 48a8905257SWeqaar Janjuatest_exit() 49a8905257SWeqaar Janjua{ 50*895b62eeSMagnus Karlsson if [ $1 -ne 0 ]; then 51*895b62eeSMagnus Karlsson test_status $1 $(basename $0) 52a8905257SWeqaar Janjua fi 53*895b62eeSMagnus Karlsson exit 1 54a8905257SWeqaar Janjua} 55a8905257SWeqaar Janjua 56a8905257SWeqaar Janjuaclear_configs() 57a8905257SWeqaar Janjua{ 58a8905257SWeqaar Janjua if [ $(ip netns show | grep $3 &>/dev/null; echo $?;) == 0 ]; then 59a8905257SWeqaar Janjua [ $(ip netns exec $3 ip link show $2 &>/dev/null; echo $?;) == 0 ] && 60ecde6061SMagnus Karlsson { ip netns exec $3 ip link del $2; } 61a8905257SWeqaar Janjua ip netns del $3 62a8905257SWeqaar Janjua fi 63a8905257SWeqaar Janjua #Once we delete a veth pair node, the entire veth pair is removed, 64a8905257SWeqaar Janjua #this is just to be cautious just incase the NS does not exist then 65a8905257SWeqaar Janjua #veth node inside NS won't get removed so we explicitly remove it 66a8905257SWeqaar Janjua [ $(ip link show $1 &>/dev/null; echo $?;) == 0 ] && 67ecde6061SMagnus Karlsson { ip link del $1; } 68a8905257SWeqaar Janjua} 69a8905257SWeqaar Janjua 70a8905257SWeqaar Janjuacleanup_exit() 71a8905257SWeqaar Janjua{ 72a8905257SWeqaar Janjua clear_configs $1 $2 $3 73a8905257SWeqaar Janjua} 74a8905257SWeqaar Janjua 75a8905257SWeqaar Janjuavalidate_ip_utility() 76a8905257SWeqaar Janjua{ 77*895b62eeSMagnus Karlsson [ ! $(type -P ip) ] && { echo "'ip' not found. Skipping tests."; test_exit $ksft_skip; } 78a8905257SWeqaar Janjua} 79a8905257SWeqaar Janjua 80facb7cb2SWeqaar Janjuaexecxdpxceiver() 81facb7cb2SWeqaar Janjua{ 82f90062b5SMagnus Karlsson if [[ $busy_poll -eq 1 ]]; then 83f90062b5SMagnus Karlsson ARGS+="-b " 84f90062b5SMagnus Karlsson fi 85f90062b5SMagnus Karlsson 86f90062b5SMagnus Karlsson ./${XSKOBJ} -i ${VETH0} -i ${VETH1},${NS1} ${ARGS} 87*895b62eeSMagnus Karlsson 88*895b62eeSMagnus Karlsson retval=$? 89*895b62eeSMagnus Karlsson test_status $retval "${TEST_NAME}" 90*895b62eeSMagnus Karlsson statusList+=($retval) 91*895b62eeSMagnus Karlsson nameList+=(${TEST_NAME}) 92facb7cb2SWeqaar Janjua} 93