brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 57bd805 Raw
100 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# This assumes running on a host with two virtio interfaces connected5# back to back. Example script to do such wire-up of tap devices would6# look like this:7#8# =======================================================================================================9# #!/bin/bash10#11# DEV1="$1"12# DEV2="$2"13#14# sudo tc qdisc add dev $DEV1 clsact15# sudo tc qdisc add dev $DEV2 clsact16# sudo tc filter add dev $DEV1 ingress protocol all pref 1 matchall action mirred egress redirect dev $DEV217# sudo tc filter add dev $DEV2 ingress protocol all pref 1 matchall action mirred egress redirect dev $DEV118# sudo ip link set $DEV1 up19# sudo ip link set $DEV2 up20# =======================================================================================================21 22REQUIRE_MZ="no"23NETIF_CREATE="no"24NETIF_FIND_DRIVER="virtio_net"25NUM_NETIFS=226 27H1_IPV4="192.0.2.1"28H2_IPV4="192.0.2.2"29H1_IPV6="2001:db8:1::1"30H2_IPV6="2001:db8:1::2"31 32VIRTIO_NET_F_MAC=533 34virtio_device_get()35{36	local dev=$1; shift37	local device_path="/sys/class/net/$dev/device/"38 39	basename `realpath $device_path`40}41 42virtio_device_rebind()43{44	local dev=$1; shift45	local device=`virtio_device_get $dev`46 47	echo "$device" > /sys/bus/virtio/drivers/virtio_net/unbind48	echo "$device" > /sys/bus/virtio/drivers/virtio_net/bind49}50 51virtio_debugfs_get()52{53	local dev=$1; shift54	local device=`virtio_device_get $dev`55 56	echo /sys/kernel/debug/virtio/$device/57}58 59check_virtio_debugfs()60{61	local dev=$1; shift62	local debugfs=`virtio_debugfs_get $dev`63 64	if [ ! -f "$debugfs/device_features" ] ||65	   [ ! -f "$debugfs/filter_feature_add"  ] ||66	   [ ! -f "$debugfs/filter_feature_del"  ] ||67	   [ ! -f "$debugfs/filter_features"  ] ||68	   [ ! -f "$debugfs/filter_features_clear"  ]; then69		echo "SKIP: not possible to access debugfs for $dev"70		exit $ksft_skip71	fi72}73 74virtio_feature_present()75{76	local dev=$1; shift77	local feature=$1; shift78	local debugfs=`virtio_debugfs_get $dev`79 80	cat $debugfs/device_features |grep "^$feature$" &> /dev/null81	return $?82}83 84virtio_filter_features_clear()85{86	local dev=$1; shift87	local debugfs=`virtio_debugfs_get $dev`88 89	echo "1" > $debugfs/filter_features_clear90}91 92virtio_filter_feature_add()93{94	local dev=$1; shift95	local feature=$1; shift96	local debugfs=`virtio_debugfs_get $dev`97 98	echo "$feature" > $debugfs/filter_feature_add99}100