selftests: test creating netdevsim inside network namespace
Add a test that creates netdevsim instance inside network namespace and verifies that the related devlink instance and port netdevices reside in the namespace. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7b60027bbc
commit
c04d71b5b2
72
tools/testing/selftests/drivers/net/netdevsim/devlink_in_netns.sh
Executable file
72
tools/testing/selftests/drivers/net/netdevsim/devlink_in_netns.sh
Executable file
|
@ -0,0 +1,72 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
lib_dir=$(dirname $0)/../../../net/forwarding
|
||||
|
||||
ALL_TESTS="check_devlink_test check_ports_test"
|
||||
NUM_NETIFS=0
|
||||
source $lib_dir/lib.sh
|
||||
|
||||
BUS_ADDR=10
|
||||
PORT_COUNT=4
|
||||
DEV_NAME=netdevsim$BUS_ADDR
|
||||
SYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV_NAME/net/
|
||||
DL_HANDLE=netdevsim/$DEV_NAME
|
||||
NETNS_NAME=testns1
|
||||
|
||||
port_netdev_get()
|
||||
{
|
||||
local port_index=$1
|
||||
|
||||
cmd_jq "devlink -N $NETNS_NAME port show -j" \
|
||||
".[][\"$DL_HANDLE/$port_index\"].netdev" "-e"
|
||||
}
|
||||
|
||||
check_ports_test()
|
||||
{
|
||||
RET=0
|
||||
|
||||
for i in $(seq 0 $(expr $PORT_COUNT - 1)); do
|
||||
netdev_name=$(port_netdev_get $i)
|
||||
check_err $? "Failed to get netdev name for port $DL_HANDLE/$i"
|
||||
ip -n $NETNS_NAME link show $netdev_name &> /dev/null
|
||||
check_err $? "Failed to find netdev $netdev_name"
|
||||
done
|
||||
|
||||
log_test "check ports test"
|
||||
}
|
||||
|
||||
check_devlink_test()
|
||||
{
|
||||
RET=0
|
||||
|
||||
devlink -N $NETNS_NAME dev show $DL_HANDLE &> /dev/null
|
||||
check_err $? "Failed to show devlink instance"
|
||||
|
||||
log_test "check devlink test"
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
{
|
||||
modprobe netdevsim
|
||||
ip netns add $NETNS_NAME
|
||||
ip netns exec $NETNS_NAME \
|
||||
echo "$BUS_ADDR $PORT_COUNT" > /sys/bus/netdevsim/new_device
|
||||
while [ ! -d $SYSFS_NET_DIR ] ; do :; done
|
||||
}
|
||||
|
||||
cleanup()
|
||||
{
|
||||
pre_cleanup
|
||||
echo "$BUS_ADDR" > /sys/bus/netdevsim/del_device
|
||||
ip netns del $NETNS_NAME
|
||||
modprobe -r netdevsim
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
setup_prepare
|
||||
|
||||
tests_run
|
||||
|
||||
exit $EXIT_STATUS
|
|
@ -254,6 +254,7 @@ cmd_jq()
|
|||
{
|
||||
local cmd=$1
|
||||
local jq_exp=$2
|
||||
local jq_opts=$3
|
||||
local ret
|
||||
local output
|
||||
|
||||
|
@ -263,7 +264,11 @@ cmd_jq()
|
|||
if [[ $ret -ne 0 ]]; then
|
||||
return $ret
|
||||
fi
|
||||
output=$(echo $output | jq -r "$jq_exp")
|
||||
output=$(echo $output | jq -r $jq_opts "$jq_exp")
|
||||
ret=$?
|
||||
if [[ $ret -ne 0 ]]; then
|
||||
return $ret
|
||||
fi
|
||||
echo $output
|
||||
# return success only in case of non-empty output
|
||||
[ ! -z "$output" ]
|
||||
|
|
Loading…
Reference in New Issue
Block a user