| 1 | |
| 2 | |
| 3 |
|
| 4 | |
| 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"
|