1fbb8531eSAntonio Cardace#!/bin/bash
2fbb8531eSAntonio Cardace# SPDX-License-Identifier: GPL-2.0-only
3fbb8531eSAntonio Cardace
4fbb8531eSAntonio CardaceNSIM_ID=$((RANDOM % 1024))
5fbb8531eSAntonio CardaceNSIM_DEV_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_ID
6fbb8531eSAntonio CardaceNSIM_DEV_DFS=/sys/kernel/debug/netdevsim/netdevsim$NSIM_ID/ports/0
7fbb8531eSAntonio CardaceNSIM_NETDEV=
8fbb8531eSAntonio Cardacenum_passes=0
9fbb8531eSAntonio Cardacenum_errors=0
10fbb8531eSAntonio Cardace
11fbb8531eSAntonio Cardacefunction cleanup_nsim {
12fbb8531eSAntonio Cardace    if [ -e $NSIM_DEV_SYS ]; then
13fbb8531eSAntonio Cardace	echo $NSIM_ID > /sys/bus/netdevsim/del_device
14fbb8531eSAntonio Cardace    fi
15fbb8531eSAntonio Cardace}
16fbb8531eSAntonio Cardace
17fbb8531eSAntonio Cardacefunction cleanup {
18fbb8531eSAntonio Cardace    cleanup_nsim
19fbb8531eSAntonio Cardace}
20fbb8531eSAntonio Cardace
21fbb8531eSAntonio Cardacetrap cleanup EXIT
22fbb8531eSAntonio Cardace
23fbb8531eSAntonio Cardacefunction check {
24fbb8531eSAntonio Cardace    local code=$1
25fbb8531eSAntonio Cardace    local str=$2
26fbb8531eSAntonio Cardace    local exp_str=$3
271da07e5dSJakub Kicinski    local exp_fail=$4
28fbb8531eSAntonio Cardace
291da07e5dSJakub Kicinski    [ -z "$exp_fail" ] && cop="-ne" || cop="-eq"
301da07e5dSJakub Kicinski
311da07e5dSJakub Kicinski    if [ $code $cop 0 ]; then
32fbb8531eSAntonio Cardace	((num_errors++))
33fbb8531eSAntonio Cardace	return
34fbb8531eSAntonio Cardace    fi
35fbb8531eSAntonio Cardace
36fbb8531eSAntonio Cardace    if [ "$str" != "$exp_str"  ]; then
37fbb8531eSAntonio Cardace	echo -e "Expected: '$exp_str', got '$str'"
38fbb8531eSAntonio Cardace	((num_errors++))
39fbb8531eSAntonio Cardace	return
40fbb8531eSAntonio Cardace    fi
41fbb8531eSAntonio Cardace
42fbb8531eSAntonio Cardace    ((num_passes++))
43fbb8531eSAntonio Cardace}
44fbb8531eSAntonio Cardace
45fbb8531eSAntonio Cardacefunction make_netdev {
46fbb8531eSAntonio Cardace    # Make a netdevsim
47fbb8531eSAntonio Cardace    old_netdevs=$(ls /sys/class/net)
48fbb8531eSAntonio Cardace
49fbb8531eSAntonio Cardace    if ! $(lsmod | grep -q netdevsim); then
50fbb8531eSAntonio Cardace	modprobe netdevsim
51fbb8531eSAntonio Cardace    fi
52fbb8531eSAntonio Cardace
53*2d6a5899SJakub Kicinski    echo $NSIM_ID $@ > /sys/bus/netdevsim/new_device
549e48ee80SAntonio Cardace    # get new device name
559e48ee80SAntonio Cardace    ls /sys/bus/netdevsim/devices/netdevsim${NSIM_ID}/net/
56fbb8531eSAntonio Cardace}
57