130 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# SPDX-License-Identifier: GPL-2.0
 | 
						|
#
 | 
						|
# Test generic devlink-trap functionality over mlxsw. These tests are not
 | 
						|
# specific to a single trap, but do not check the devlink-trap common
 | 
						|
# infrastructure either.
 | 
						|
 | 
						|
lib_dir=$(dirname $0)/../../../net/forwarding
 | 
						|
 | 
						|
ALL_TESTS="
 | 
						|
	dev_del_test
 | 
						|
"
 | 
						|
NUM_NETIFS=4
 | 
						|
source $lib_dir/tc_common.sh
 | 
						|
source $lib_dir/lib.sh
 | 
						|
source $lib_dir/devlink_lib.sh
 | 
						|
 | 
						|
h1_create()
 | 
						|
{
 | 
						|
	simple_if_init $h1
 | 
						|
}
 | 
						|
 | 
						|
h1_destroy()
 | 
						|
{
 | 
						|
	simple_if_fini $h1
 | 
						|
}
 | 
						|
 | 
						|
h2_create()
 | 
						|
{
 | 
						|
	simple_if_init $h2
 | 
						|
}
 | 
						|
 | 
						|
h2_destroy()
 | 
						|
{
 | 
						|
	simple_if_fini $h2
 | 
						|
}
 | 
						|
 | 
						|
switch_create()
 | 
						|
{
 | 
						|
	ip link add dev br0 type bridge vlan_filtering 1 mcast_snooping 0
 | 
						|
 | 
						|
	ip link set dev $swp1 master br0
 | 
						|
	ip link set dev $swp2 master br0
 | 
						|
 | 
						|
	ip link set dev br0 up
 | 
						|
	ip link set dev $swp1 up
 | 
						|
	ip link set dev $swp2 up
 | 
						|
}
 | 
						|
 | 
						|
switch_destroy()
 | 
						|
{
 | 
						|
	ip link set dev $swp2 down
 | 
						|
	ip link set dev $swp1 down
 | 
						|
 | 
						|
	ip link del dev br0
 | 
						|
}
 | 
						|
 | 
						|
setup_prepare()
 | 
						|
{
 | 
						|
	h1=${NETIFS[p1]}
 | 
						|
	swp1=${NETIFS[p2]}
 | 
						|
 | 
						|
	swp2=${NETIFS[p3]}
 | 
						|
	h2=${NETIFS[p4]}
 | 
						|
 | 
						|
	vrf_prepare
 | 
						|
 | 
						|
	h1_create
 | 
						|
	h2_create
 | 
						|
 | 
						|
	switch_create
 | 
						|
}
 | 
						|
 | 
						|
cleanup()
 | 
						|
{
 | 
						|
	pre_cleanup
 | 
						|
 | 
						|
	switch_destroy
 | 
						|
 | 
						|
	h2_destroy
 | 
						|
	h1_destroy
 | 
						|
 | 
						|
	vrf_cleanup
 | 
						|
}
 | 
						|
 | 
						|
dev_del_test()
 | 
						|
{
 | 
						|
	local trap_name="source_mac_is_multicast"
 | 
						|
	local smac=01:02:03:04:05:06
 | 
						|
	local num_iter=5
 | 
						|
	local mz_pid
 | 
						|
	local i
 | 
						|
 | 
						|
	$MZ $h1 -c 0 -p 100 -a $smac -b bcast -t ip -q &
 | 
						|
	mz_pid=$!
 | 
						|
 | 
						|
	# The purpose of this test is to make sure we correctly dismantle a
 | 
						|
	# port while packets are trapped from it. This is done by reloading the
 | 
						|
	# the driver while the 'ingress_smac_mc_drop' trap is triggered.
 | 
						|
	RET=0
 | 
						|
 | 
						|
	for i in $(seq 1 $num_iter); do
 | 
						|
		log_info "Iteration $i / $num_iter"
 | 
						|
 | 
						|
		devlink_trap_action_set $trap_name "trap"
 | 
						|
		sleep 1
 | 
						|
 | 
						|
		devlink_reload
 | 
						|
		# Allow netdevices to be re-created following the reload
 | 
						|
		sleep 20
 | 
						|
 | 
						|
		cleanup
 | 
						|
		setup_prepare
 | 
						|
		setup_wait
 | 
						|
	done
 | 
						|
 | 
						|
	log_test "Device delete"
 | 
						|
 | 
						|
	kill $mz_pid && wait $mz_pid &> /dev/null
 | 
						|
}
 | 
						|
 | 
						|
trap cleanup EXIT
 | 
						|
 | 
						|
setup_prepare
 | 
						|
setup_wait
 | 
						|
 | 
						|
tests_run
 | 
						|
 | 
						|
exit $EXIT_STATUS
 |