#!/bin/bash# SPDX-License-Identifier: GPL-2.0 # See virtio_net_common.sh comments for more details about assumed setup ALL_TESTS=" initial_ping_test f_mac_test" source virtio_net_common.sh lib_dir=$(dirname "$0")source "$lib_dir"/../../../net/forwarding/lib.sh h1=${NETIFS[p1]}h2=${NETIFS[p2]} h1_create(){ simple_if_init $h1 $H1_IPV4/24 $H1_IPV6/64} h1_destroy(){ simple_if_fini $h1 $H1_IPV4/24 $H1_IPV6/64} h2_create(){ simple_if_init $h2 $H2_IPV4/24 $H2_IPV6/64} h2_destroy(){ simple_if_fini $h2 $H2_IPV4/24 $H2_IPV6/64} initial_ping_test(){ setup_cleanup setup_prepare ping_test $h1 $H2_IPV4 " simple"} f_mac_test(){ RET=0 local test_name="mac feature filtered" virtio_feature_present $h1 $VIRTIO_NET_F_MAC if [ $? -ne 0 ]; then log_test_skip "$test_name" "Device $h1 is missing feature $VIRTIO_NET_F_MAC." return 0 fi virtio_feature_present $h1 $VIRTIO_NET_F_MAC if [ $? -ne 0 ]; then log_test_skip "$test_name" "Device $h2 is missing feature $VIRTIO_NET_F_MAC." return 0 fi setup_cleanup setup_prepare grep -q 0 /sys/class/net/$h1/addr_assign_type check_err $? "Permanent address assign type for $h1 is not set" grep -q 0 /sys/class/net/$h2/addr_assign_type check_err $? "Permanent address assign type for $h2 is not set" setup_cleanup virtio_filter_feature_add $h1 $VIRTIO_NET_F_MAC virtio_filter_feature_add $h2 $VIRTIO_NET_F_MAC setup_prepare grep -q 0 /sys/class/net/$h1/addr_assign_type check_fail $? "Permanent address assign type for $h1 is set when F_MAC feature is filtered" grep -q 0 /sys/class/net/$h2/addr_assign_type check_fail $? "Permanent address assign type for $h2 is set when F_MAC feature is filtered" ping_do $h1 $H2_IPV4 check_err $? "Ping failed" log_test "$test_name"} setup_prepare(){ virtio_device_rebind $h1 virtio_device_rebind $h2 wait_for_dev $h1 wait_for_dev $h2 vrf_prepare h1_create h2_create} setup_cleanup(){ h2_destroy h1_destroy vrf_cleanup virtio_filter_features_clear $h1 virtio_filter_features_clear $h2 virtio_device_rebind $h1 virtio_device_rebind $h2 wait_for_dev $h1 wait_for_dev $h2} cleanup(){ pre_cleanup setup_cleanup} check_driver $h1 "virtio_net"check_driver $h2 "virtio_net"check_virtio_debugfs $h1check_virtio_debugfs $h2 trap cleanup EXIT setup_prepare tests_run exit "$EXIT_STATUS"
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# See virtio_net_common.sh comments for more details about assumed setup
ALL_TESTS="
initial_ping_test
f_mac_test
"
source virtio_net_common.sh
lib_dir=$(dirname "$0")
source "$lib_dir"/../../../net/forwarding/lib.sh
h1=${NETIFS[p1]}
h2=${NETIFS[p2]}
h1_create()
{
simple_if_init $h1 $H1_IPV4/24 $H1_IPV6/64
}
h1_destroy()
{
simple_if_fini $h1 $H1_IPV4/24 $H1_IPV6/64
}
h2_create()
{
simple_if_init $h2 $H2_IPV4/24 $H2_IPV6/64
}
h2_destroy()
{
simple_if_fini $h2 $H2_IPV4/24 $H2_IPV6/64
}
initial_ping_test()
{
setup_cleanup
setup_prepare
ping_test $h1 $H2_IPV4 " simple"
}
f_mac_test()
{
RET=0
local test_name="mac feature filtered"
virtio_feature_present $h1 $VIRTIO_NET_F_MAC
if [ $? -ne 0 ]; then
log_test_skip "$test_name" "Device $h1 is missing feature $VIRTIO_NET_F_MAC."
return 0
fi
virtio_feature_present $h1 $VIRTIO_NET_F_MAC
if [ $? -ne 0 ]; then
log_test_skip "$test_name" "Device $h2 is missing feature $VIRTIO_NET_F_MAC."
return 0
fi
setup_cleanup
setup_prepare
grep -q 0 /sys/class/net/$h1/addr_assign_type
check_err $? "Permanent address assign type for $h1 is not set"
grep -q 0 /sys/class/net/$h2/addr_assign_type
check_err $? "Permanent address assign type for $h2 is not set"
setup_cleanup
virtio_filter_feature_add $h1 $VIRTIO_NET_F_MAC
virtio_filter_feature_add $h2 $VIRTIO_NET_F_MAC
setup_prepare
grep -q 0 /sys/class/net/$h1/addr_assign_type
check_fail $? "Permanent address assign type for $h1 is set when F_MAC feature is filtered"
grep -q 0 /sys/class/net/$h2/addr_assign_type
check_fail $? "Permanent address assign type for $h2 is set when F_MAC feature is filtered"
ping_do $h1 $H2_IPV4
check_err $? "Ping failed"
log_test "$test_name"
}
setup_prepare()
{
virtio_device_rebind $h1
virtio_device_rebind $h2
wait_for_dev $h1
wait_for_dev $h2
vrf_prepare
h1_create
h2_create
}
setup_cleanup()
{
h2_destroy
h1_destroy
vrf_cleanup
virtio_filter_features_clear $h1
virtio_filter_features_clear $h2
virtio_device_rebind $h1
virtio_device_rebind $h2
wait_for_dev $h1
wait_for_dev $h2
}
cleanup()
{
pre_cleanup
setup_cleanup
}
check_driver $h1 "virtio_net"
check_driver $h2 "virtio_net"
check_virtio_debugfs $h1
check_virtio_debugfs $h2
trap cleanup EXIT
setup_prepare
tests_run
exit "$EXIT_STATUS"