1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 4 # This assumes running on a host with two virtio interfaces connected 5 # back to back. Example script to do such wire-up of tap devices would 6 # look like this: 7 # 8 # ======================================================================================================= 9 # #!/bin/bash 10 # 11 # DEV1="$1" 12 # DEV2="$2" 13 # 14 # sudo tc qdisc add dev $DEV1 clsact 15 # sudo tc qdisc add dev $DEV2 clsact 16 # sudo tc filter add dev $DEV1 ingress protocol all pref 1 matchall action mirred egress redirect dev $DEV2 17 # sudo tc filter add dev $DEV2 ingress protocol all pref 1 matchall action mirred egress redirect dev $DEV1 18 # sudo ip link set $DEV1 up 19 # sudo ip link set $DEV2 up 20 # ======================================================================================================= 21 22 REQUIRE_MZ="no" 23 NETIF_CREATE="no" 24 NETIF_FIND_DRIVER="virtio_net" 25 NUM_NETIFS=2 26 27 H1_IPV4="192.0.2.1" 28 H2_IPV4="192.0.2.2" 29 H1_IPV6="2001:db8:1::1" 30 H2_IPV6="2001:db8:1::2" 31 32 VIRTIO_NET_F_MAC=5 33 34 virtio_device_get() 35 { 36 local dev=$1; shift 37 local device_path="/sys/class/net/$dev/device/" 38 39 basename `realpath $device_path` 40 } 41 42 virtio_device_rebind() 43 { 44 local dev=$1; shift 45 local device=`virtio_device_get $dev` 46 47 echo "$device" > /sys/bus/virtio/drivers/virtio_net/unbind 48 echo "$device" > /sys/bus/virtio/drivers/virtio_net/bind 49 } 50 51 virtio_debugfs_get() 52 { 53 local dev=$1; shift 54 local device=`virtio_device_get $dev` 55 56 echo /sys/kernel/debug/virtio/$device/ 57 } 58 59 check_virtio_debugfs() 60 { 61 local dev=$1; shift 62 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" ]; then 69 echo "SKIP: not possible to access debugfs for $dev" 70 exit $ksft_skip 71 fi 72 } 73 74 virtio_feature_present() 75 { 76 local dev=$1; shift 77 local feature=$1; shift 78 local debugfs=`virtio_debugfs_get $dev` 79 80 cat $debugfs/device_features |grep "^$feature$" &> /dev/null 81 return $? 82 } 83 84 virtio_filter_features_clear() 85 { 86 local dev=$1; shift 87 local debugfs=`virtio_debugfs_get $dev` 88 89 echo "1" > $debugfs/filter_features_clear 90 } 91 92 virtio_filter_feature_add() 93 { 94 local dev=$1; shift 95 local feature=$1; shift 96 local debugfs=`virtio_debugfs_get $dev` 97 98 echo "$feature" > $debugfs/filter_feature_add 99 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.