xref: /linux/tools/net/ynl/tests/ynl_nsim_lib.sh (revision 91a4855d6c03e770e42f17c798a36a3c46e63de2)
1*7a95e525SJakub Kicinski#!/bin/bash
2*7a95e525SJakub Kicinski# SPDX-License-Identifier: GPL-2.0
3*7a95e525SJakub Kicinski# Shared netdevsim setup/cleanup for YNL C test wrappers
4*7a95e525SJakub Kicinski
5*7a95e525SJakub KicinskiNSIM_ID="1337"
6*7a95e525SJakub KicinskiNSIM_DEV=""
7*7a95e525SJakub KicinskiKSFT_SKIP=4
8*7a95e525SJakub Kicinski
9*7a95e525SJakub Kicinskinsim_cleanup() {
10*7a95e525SJakub Kicinski	echo "$NSIM_ID" > /sys/bus/netdevsim/del_device 2>/dev/null || true
11*7a95e525SJakub Kicinski}
12*7a95e525SJakub Kicinski
13*7a95e525SJakub Kicinskinsim_setup() {
14*7a95e525SJakub Kicinski	modprobe netdevsim 2>/dev/null
15*7a95e525SJakub Kicinski	if ! [ -f /sys/bus/netdevsim/new_device ]; then
16*7a95e525SJakub Kicinski		echo "netdevsim module not available, skipping" >&2
17*7a95e525SJakub Kicinski		exit "$KSFT_SKIP"
18*7a95e525SJakub Kicinski	fi
19*7a95e525SJakub Kicinski
20*7a95e525SJakub Kicinski	trap nsim_cleanup EXIT
21*7a95e525SJakub Kicinski
22*7a95e525SJakub Kicinski	echo "$NSIM_ID 1" > /sys/bus/netdevsim/new_device
23*7a95e525SJakub Kicinski	udevadm settle
24*7a95e525SJakub Kicinski
25*7a95e525SJakub Kicinski	NSIM_DEV=$(ls /sys/bus/netdevsim/devices/netdevsim${NSIM_ID}/net 2>/dev/null | head -1)
26*7a95e525SJakub Kicinski	if [ -z "$NSIM_DEV" ]; then
27*7a95e525SJakub Kicinski		echo "failed to find netdevsim device" >&2
28*7a95e525SJakub Kicinski		exit 1
29*7a95e525SJakub Kicinski	fi
30*7a95e525SJakub Kicinski
31*7a95e525SJakub Kicinski	ip link set dev "$NSIM_DEV" name nsim0
32*7a95e525SJakub Kicinski	ip link set dev nsim0 up
33*7a95e525SJakub Kicinski	ip addr add 192.168.1.1/24 dev nsim0
34*7a95e525SJakub Kicinski	ip addr add 2001:db8::1/64 dev nsim0 nodad
35*7a95e525SJakub Kicinski}
36