1*a8905257SWeqaar Janjua#!/bin/bash 2*a8905257SWeqaar Janjua# SPDX-License-Identifier: GPL-2.0 3*a8905257SWeqaar Janjua# Copyright(c) 2020 Intel Corporation. 4*a8905257SWeqaar Janjua 5*a8905257SWeqaar Janjuaksft_pass=0 6*a8905257SWeqaar Janjuaksft_fail=1 7*a8905257SWeqaar Janjuaksft_xfail=2 8*a8905257SWeqaar Janjuaksft_xpass=3 9*a8905257SWeqaar Janjuaksft_skip=4 10*a8905257SWeqaar Janjua 11*a8905257SWeqaar JanjuaGREEN='\033[0;92m' 12*a8905257SWeqaar JanjuaYELLOW='\033[0;93m' 13*a8905257SWeqaar JanjuaRED='\033[0;31m' 14*a8905257SWeqaar JanjuaNC='\033[0m' 15*a8905257SWeqaar JanjuaSTACK_LIM=131072 16*a8905257SWeqaar JanjuaSPECFILE=veth.spec 17*a8905257SWeqaar Janjua 18*a8905257SWeqaar Janjuavalidate_root_exec() 19*a8905257SWeqaar Janjua{ 20*a8905257SWeqaar Janjua msg="skip all tests:" 21*a8905257SWeqaar Janjua if [ $UID != 0 ]; then 22*a8905257SWeqaar Janjua echo $msg must be run as root >&2 23*a8905257SWeqaar Janjua test_exit $ksft_fail 2 24*a8905257SWeqaar Janjua else 25*a8905257SWeqaar Janjua return $ksft_pass 26*a8905257SWeqaar Janjua fi 27*a8905257SWeqaar Janjua} 28*a8905257SWeqaar Janjua 29*a8905257SWeqaar Janjuavalidate_veth_support() 30*a8905257SWeqaar Janjua{ 31*a8905257SWeqaar Janjua msg="skip all tests:" 32*a8905257SWeqaar Janjua if [ $(ip link add $1 type veth 2>/dev/null; echo $?;) != 0 ]; then 33*a8905257SWeqaar Janjua echo $msg veth kernel support not available >&2 34*a8905257SWeqaar Janjua test_exit $ksft_skip 1 35*a8905257SWeqaar Janjua else 36*a8905257SWeqaar Janjua ip link del $1 37*a8905257SWeqaar Janjua return $ksft_pass 38*a8905257SWeqaar Janjua fi 39*a8905257SWeqaar Janjua} 40*a8905257SWeqaar Janjua 41*a8905257SWeqaar Janjuavalidate_veth_spec_file() 42*a8905257SWeqaar Janjua{ 43*a8905257SWeqaar Janjua if [ ! -f ${SPECFILE} ]; then 44*a8905257SWeqaar Janjua test_exit $ksft_skip 1 45*a8905257SWeqaar Janjua fi 46*a8905257SWeqaar Janjua} 47*a8905257SWeqaar Janjua 48*a8905257SWeqaar Janjuatest_status() 49*a8905257SWeqaar Janjua{ 50*a8905257SWeqaar Janjua statusval=$1 51*a8905257SWeqaar Janjua if [ -n "${colorconsole+set}" ]; then 52*a8905257SWeqaar Janjua if [ $statusval -eq 2 ]; then 53*a8905257SWeqaar Janjua echo -e "${YELLOW}$2${NC}: [ ${RED}FAIL${NC} ]" 54*a8905257SWeqaar Janjua elif [ $statusval -eq 1 ]; then 55*a8905257SWeqaar Janjua echo -e "${YELLOW}$2${NC}: [ ${RED}SKIPPED${NC} ]" 56*a8905257SWeqaar Janjua elif [ $statusval -eq 0 ]; then 57*a8905257SWeqaar Janjua echo -e "${YELLOW}$2${NC}: [ ${GREEN}PASS${NC} ]" 58*a8905257SWeqaar Janjua fi 59*a8905257SWeqaar Janjua else 60*a8905257SWeqaar Janjua if [ $statusval -eq 2 ]; then 61*a8905257SWeqaar Janjua echo -e "$2: [ FAIL ]" 62*a8905257SWeqaar Janjua elif [ $statusval -eq 1 ]; then 63*a8905257SWeqaar Janjua echo -e "$2: [ SKIPPED ]" 64*a8905257SWeqaar Janjua elif [ $statusval -eq 0 ]; then 65*a8905257SWeqaar Janjua echo -e "$2: [ PASS ]" 66*a8905257SWeqaar Janjua fi 67*a8905257SWeqaar Janjua fi 68*a8905257SWeqaar Janjua} 69*a8905257SWeqaar Janjua 70*a8905257SWeqaar Janjuatest_exit() 71*a8905257SWeqaar Janjua{ 72*a8905257SWeqaar Janjua retval=$1 73*a8905257SWeqaar Janjua if [ $2 -ne 0 ]; then 74*a8905257SWeqaar Janjua test_status $2 $(basename $0) 75*a8905257SWeqaar Janjua fi 76*a8905257SWeqaar Janjua exit $retval 77*a8905257SWeqaar Janjua} 78*a8905257SWeqaar Janjua 79*a8905257SWeqaar Janjuaclear_configs() 80*a8905257SWeqaar Janjua{ 81*a8905257SWeqaar Janjua if [ $(ip netns show | grep $3 &>/dev/null; echo $?;) == 0 ]; then 82*a8905257SWeqaar Janjua [ $(ip netns exec $3 ip link show $2 &>/dev/null; echo $?;) == 0 ] && 83*a8905257SWeqaar Janjua { echo "removing link $1:$2"; ip netns exec $3 ip link del $2; } 84*a8905257SWeqaar Janjua echo "removing ns $3" 85*a8905257SWeqaar Janjua ip netns del $3 86*a8905257SWeqaar Janjua fi 87*a8905257SWeqaar Janjua #Once we delete a veth pair node, the entire veth pair is removed, 88*a8905257SWeqaar Janjua #this is just to be cautious just incase the NS does not exist then 89*a8905257SWeqaar Janjua #veth node inside NS won't get removed so we explicitly remove it 90*a8905257SWeqaar Janjua [ $(ip link show $1 &>/dev/null; echo $?;) == 0 ] && 91*a8905257SWeqaar Janjua { echo "removing link $1"; ip link del $1; } 92*a8905257SWeqaar Janjua if [ -f ${SPECFILE} ]; then 93*a8905257SWeqaar Janjua echo "removing spec file:" ${SPECFILE} 94*a8905257SWeqaar Janjua rm -f ${SPECFILE} 95*a8905257SWeqaar Janjua fi 96*a8905257SWeqaar Janjua} 97*a8905257SWeqaar Janjua 98*a8905257SWeqaar Janjuacleanup_exit() 99*a8905257SWeqaar Janjua{ 100*a8905257SWeqaar Janjua echo "cleaning up..." 101*a8905257SWeqaar Janjua clear_configs $1 $2 $3 102*a8905257SWeqaar Janjua} 103*a8905257SWeqaar Janjua 104*a8905257SWeqaar Janjuavalidate_ip_utility() 105*a8905257SWeqaar Janjua{ 106*a8905257SWeqaar Janjua [ ! $(type -P ip) ] && { echo "'ip' not found. Skipping tests."; test_exit $ksft_skip 1; } 107*a8905257SWeqaar Janjua} 108*a8905257SWeqaar Janjua 109*a8905257SWeqaar JanjuavethXDPgeneric() 110*a8905257SWeqaar Janjua{ 111*a8905257SWeqaar Janjua ip link set dev $1 xdpdrv off 112*a8905257SWeqaar Janjua ip netns exec $3 ip link set dev $2 xdpdrv off 113*a8905257SWeqaar Janjua} 114*a8905257SWeqaar Janjua 115*a8905257SWeqaar JanjuavethXDPnative() 116*a8905257SWeqaar Janjua{ 117*a8905257SWeqaar Janjua ip link set dev $1 xdpgeneric off 118*a8905257SWeqaar Janjua ip netns exec $3 ip link set dev $2 xdpgeneric off 119*a8905257SWeqaar Janjua} 120