131 lines · 2.3 KB · Shell
RawDownload
#!/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"