selftests: forwarding: add ability to assemble NETIFS array by driver name

Allow driver tests to work without specifying the netdevice names.
Introduce a possibility to search for available netdevices according to
set driver name. Allow test to specify the name by setting
NETIF_FIND_DRIVER variable.

Note that user overrides this either by passing netdevice names on the
command line or by declaring NETIFS array in custom forwarding.config
configuration file.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Benjamin Poirier <bpoirier@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Jiri Pirko
2024-04-24 12:40:46 +02:00
committed by Paolo Abeni
parent 96a8326d69
commit 41ad836e39
@@ -84,6 +84,43 @@ declare -A NETIFS=(
# e.g. a low-power board.
: "${KSFT_MACHINE_SLOW:=no}"
##############################################################################
# Find netifs by test-specified driver name
driver_name_get()
{
local dev=$1; shift
local driver_path="/sys/class/net/$dev/device/driver"
if [[ -L $driver_path ]]; then
basename `realpath $driver_path`
fi
}
netif_find_driver()
{
local ifnames=`ip -j link show | jq -r ".[].ifname"`
local count=0
for ifname in $ifnames
do
local driver_name=`driver_name_get $ifname`
if [[ ! -z $driver_name && $driver_name == $NETIF_FIND_DRIVER ]]; then
count=$((count + 1))
NETIFS[p$count]="$ifname"
fi
done
}
# Whether to find netdevice according to the driver speficied by the importer
: "${NETIF_FIND_DRIVER:=}"
if [[ $NETIF_FIND_DRIVER ]]; then
unset NETIFS
declare -A NETIFS
netif_find_driver
fi
net_forwarding_dir=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")")
if [[ -f $net_forwarding_dir/forwarding.config ]]; then