162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciNSIM_ID=$((RANDOM % 1024))
562306a36Sopenharmony_ciNSIM_DEV_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_ID
662306a36Sopenharmony_ciNSIM_DEV_DFS=/sys/kernel/debug/netdevsim/netdevsim$NSIM_ID/ports/0
762306a36Sopenharmony_ciNSIM_NETDEV=
862306a36Sopenharmony_cinum_passes=0
962306a36Sopenharmony_cinum_errors=0
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cifunction cleanup_nsim {
1262306a36Sopenharmony_ci    if [ -e $NSIM_DEV_SYS ]; then
1362306a36Sopenharmony_ci	echo $NSIM_ID > /sys/bus/netdevsim/del_device
1462306a36Sopenharmony_ci    fi
1562306a36Sopenharmony_ci}
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_cifunction cleanup {
1862306a36Sopenharmony_ci    cleanup_nsim
1962306a36Sopenharmony_ci}
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_citrap cleanup EXIT
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cifunction check {
2462306a36Sopenharmony_ci    local code=$1
2562306a36Sopenharmony_ci    local str=$2
2662306a36Sopenharmony_ci    local exp_str=$3
2762306a36Sopenharmony_ci    local exp_fail=$4
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci    [ -z "$exp_fail" ] && cop="-ne" || cop="-eq"
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci    if [ $code $cop 0 ]; then
3262306a36Sopenharmony_ci	((num_errors++))
3362306a36Sopenharmony_ci	return
3462306a36Sopenharmony_ci    fi
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci    if [ "$str" != "$exp_str"  ]; then
3762306a36Sopenharmony_ci	echo -e "Expected: '$exp_str', got '$str'"
3862306a36Sopenharmony_ci	((num_errors++))
3962306a36Sopenharmony_ci	return
4062306a36Sopenharmony_ci    fi
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci    ((num_passes++))
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cifunction make_netdev {
4662306a36Sopenharmony_ci    # Make a netdevsim
4762306a36Sopenharmony_ci    old_netdevs=$(ls /sys/class/net)
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci    if ! $(lsmod | grep -q netdevsim); then
5062306a36Sopenharmony_ci	modprobe netdevsim
5162306a36Sopenharmony_ci    fi
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci    echo $NSIM_ID $@ > /sys/bus/netdevsim/new_device
5462306a36Sopenharmony_ci    # get new device name
5562306a36Sopenharmony_ci    ls /sys/bus/netdevsim/devices/netdevsim${NSIM_ID}/net/
5662306a36Sopenharmony_ci}
57