Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 lib_dir=$(dirname $0)/../../../net/forwarding
0005 
0006 ALL_TESTS="check_devlink_test check_ports_test"
0007 NUM_NETIFS=0
0008 source $lib_dir/lib.sh
0009 
0010 BUS_ADDR=10
0011 PORT_COUNT=4
0012 DEV_NAME=netdevsim$BUS_ADDR
0013 SYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV_NAME/net/
0014 DL_HANDLE=netdevsim/$DEV_NAME
0015 NETNS_NAME=testns1
0016 
0017 port_netdev_get()
0018 {
0019         local port_index=$1
0020 
0021         cmd_jq "devlink -N $NETNS_NAME port show -j" \
0022                ".[][\"$DL_HANDLE/$port_index\"].netdev" "-e"
0023 }
0024 
0025 check_ports_test()
0026 {
0027         RET=0
0028 
0029         for i in $(seq 0 $(expr $PORT_COUNT - 1)); do
0030                 netdev_name=$(port_netdev_get $i)
0031                 check_err $? "Failed to get netdev name for port $DL_HANDLE/$i"
0032                 ip -n $NETNS_NAME link show $netdev_name &> /dev/null
0033                 check_err $? "Failed to find netdev $netdev_name"
0034         done
0035 
0036         log_test "check ports test"
0037 }
0038 
0039 check_devlink_test()
0040 {
0041         RET=0
0042 
0043         devlink -N $NETNS_NAME dev show $DL_HANDLE &> /dev/null
0044         check_err $? "Failed to show devlink instance"
0045 
0046         log_test "check devlink test"
0047 }
0048 
0049 setup_prepare()
0050 {
0051         modprobe netdevsim
0052         ip netns add $NETNS_NAME
0053         ip netns exec $NETNS_NAME \
0054                 echo "$BUS_ADDR $PORT_COUNT" > /sys/bus/netdevsim/new_device
0055         while [ ! -d $SYSFS_NET_DIR ] ; do :; done
0056 }
0057 
0058 cleanup()
0059 {
0060         pre_cleanup
0061         echo "$BUS_ADDR" > /sys/bus/netdevsim/del_device
0062         ip netns del $NETNS_NAME
0063         modprobe -r netdevsim
0064 }
0065 
0066 trap cleanup EXIT
0067 
0068 setup_prepare
0069 
0070 tests_run
0071 
0072 exit $EXIT_STATUS