| #!/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 |