Jiri Pirko <jiri@xxxxxxxxxxx> writes: > From: Jiri Pirko <jiri@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > v1->v2: > - removed unnecessary "-p" and "-e" options > - removed unnecessary "! -z" from the check > - moved NETIF_FIND_DRIVER declaration from the config options > --- > tools/testing/selftests/net/forwarding/lib.sh | 39 +++++++++++++++++++ > 1 file changed, 39 insertions(+) > > diff --git a/tools/testing/selftests/net/forwarding/lib.sh b/tools/testing/selftests/net/forwarding/lib.sh > index 2e7695b94b6b..b3fd0f052d71 100644 > --- a/tools/testing/selftests/net/forwarding/lib.sh > +++ b/tools/testing/selftests/net/forwarding/lib.sh > @@ -94,6 +94,45 @@ if [[ ! -v NUM_NETIFS ]]; then > exit $ksft_skip > fi > > +############################################################################## > +# 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 > + echo "" > + else > + basename `realpath $driver_path` > + fi This is just: if [[ -L $driver_path ]]; then basename `realpath $driver_path` fi > +} > + > +find_netif() Maybe name it find_driver_netif? find_netif sounds super generic. Also consider having it take an argument instead of accessing environment NETIF_FIND_DRIVER directly. > +{ > + 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 specified driver. > +: "${NETIF_FIND_DRIVER:=}" This would be better placed up there in the Topology description section. Together with NETIFS and NETIF_NO_CABLE, as it concerns specification of which interfaces to use. > + > +if [[ $NETIF_FIND_DRIVER ]]; then > + unset NETIFS > + declare -A NETIFS > + find_netif > +fi > + > net_forwarding_dir=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")") > > if [[ -f $net_forwarding_dir/forwarding.config ]]; then