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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user