1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 4 # See virtio_net_common.sh comments for more details about assumed setup 5 6 ALL_TESTS=" 7 initial_ping_test 8 f_mac_test 9 " 10 11 source virtio_net_common.sh 12 13 lib_dir=$(dirname "$0") 14 source "$lib_dir"/../../../net/forwarding/lib.sh 15 16 h1=${NETIFS[p1]} 17 h2=${NETIFS[p2]} 18 19 h1_create() 20 { 21 simple_if_init $h1 $H1_IPV4/24 $H1_IPV6/64 22 } 23 24 h1_destroy() 25 { 26 simple_if_fini $h1 $H1_IPV4/24 $H1_IPV6/64 27 } 28 29 h2_create() 30 { 31 simple_if_init $h2 $H2_IPV4/24 $H2_IPV6/64 32 } 33 34 h2_destroy() 35 { 36 simple_if_fini $h2 $H2_IPV4/24 $H2_IPV6/64 37 } 38 39 initial_ping_test() 40 { 41 setup_cleanup 42 setup_prepare 43 ping_test $h1 $H2_IPV4 " simple" 44 } 45 46 f_mac_test() 47 { 48 RET=0 49 local test_name="mac feature filtered" 50 51 virtio_feature_present $h1 $VIRTIO_NET_F_MAC 52 if [ $? -ne 0 ]; then 53 log_test_skip "$test_name" "Device $h1 is missing feature $VIRTIO_NET_F_MAC." 54 return 0 55 fi 56 virtio_feature_present $h1 $VIRTIO_NET_F_MAC 57 if [ $? -ne 0 ]; then 58 log_test_skip "$test_name" "Device $h2 is missing feature $VIRTIO_NET_F_MAC." 59 return 0 60 fi 61 62 setup_cleanup 63 setup_prepare 64 65 grep -q 0 /sys/class/net/$h1/addr_assign_type 66 check_err $? "Permanent address assign type for $h1 is not set" 67 grep -q 0 /sys/class/net/$h2/addr_assign_type 68 check_err $? "Permanent address assign type for $h2 is not set" 69 70 setup_cleanup 71 virtio_filter_feature_add $h1 $VIRTIO_NET_F_MAC 72 virtio_filter_feature_add $h2 $VIRTIO_NET_F_MAC 73 setup_prepare 74 75 grep -q 0 /sys/class/net/$h1/addr_assign_type 76 check_fail $? "Permanent address assign type for $h1 is set when F_MAC feature is filtered" 77 grep -q 0 /sys/class/net/$h2/addr_assign_type 78 check_fail $? "Permanent address assign type for $h2 is set when F_MAC feature is filtered" 79 80 ping_do $h1 $H2_IPV4 81 check_err $? "Ping failed" 82 83 log_test "$test_name" 84 } 85 86 setup_prepare() 87 { 88 virtio_device_rebind $h1 89 virtio_device_rebind $h2 90 wait_for_dev $h1 91 wait_for_dev $h2 92 93 vrf_prepare 94 95 h1_create 96 h2_create 97 } 98 99 setup_cleanup() 100 { 101 h2_destroy 102 h1_destroy 103 104 vrf_cleanup 105 106 virtio_filter_features_clear $h1 107 virtio_filter_features_clear $h2 108 virtio_device_rebind $h1 109 virtio_device_rebind $h2 110 wait_for_dev $h1 111 wait_for_dev $h2 112 } 113 114 cleanup() 115 { 116 pre_cleanup 117 setup_cleanup 118 } 119 120 check_driver $h1 "virtio_net" 121 check_driver $h2 "virtio_net" 122 check_virtio_debugfs $h1 123 check_virtio_debugfs $h2 124 125 trap cleanup EXIT 126 127 setup_prepare 128 129 tests_run 130 131 exit "$EXIT_STATUS"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.