mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	selftests: forwarding: new test, verify host mdb entries
Boiler plate for testing static mdb entries. This first test verifies adding and removing host mdb entries for all supported types: IPv4, IPv6, and MAC multicast. Signed-off-by: Joachim Wiberg <troglobit@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
		
							parent
							
								
									e65693b017
								
							
						
					
					
						commit
						50fe062c80
					
				
					 2 changed files with 104 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
 | 
			
		||||
TEST_PROGS = bridge_igmp.sh \
 | 
			
		||||
	bridge_locked_port.sh \
 | 
			
		||||
	bridge_mdb.sh \
 | 
			
		||||
	bridge_port_isolation.sh \
 | 
			
		||||
	bridge_sticky_fdb.sh \
 | 
			
		||||
	bridge_vlan_aware.sh \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										103
									
								
								tools/testing/selftests/net/forwarding/bridge_mdb.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										103
									
								
								tools/testing/selftests/net/forwarding/bridge_mdb.sh
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,103 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
#
 | 
			
		||||
# Verify that adding host mdb entries work as intended for all types of
 | 
			
		||||
# multicast filters: ipv4, ipv6, and mac
 | 
			
		||||
 | 
			
		||||
ALL_TESTS="mdb_add_del_test"
 | 
			
		||||
NUM_NETIFS=2
 | 
			
		||||
 | 
			
		||||
TEST_GROUP_IP4="225.1.2.3"
 | 
			
		||||
TEST_GROUP_IP6="ff02::42"
 | 
			
		||||
TEST_GROUP_MAC="01:00:01:c0:ff:ee"
 | 
			
		||||
 | 
			
		||||
source lib.sh
 | 
			
		||||
 | 
			
		||||
h1_create()
 | 
			
		||||
{
 | 
			
		||||
	simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h1_destroy()
 | 
			
		||||
{
 | 
			
		||||
	simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
switch_create()
 | 
			
		||||
{
 | 
			
		||||
	# Enable multicast filtering
 | 
			
		||||
	ip link add dev br0 type bridge mcast_snooping 1
 | 
			
		||||
 | 
			
		||||
	ip link set dev $swp1 master br0
 | 
			
		||||
 | 
			
		||||
	ip link set dev br0 up
 | 
			
		||||
	ip link set dev $swp1 up
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
switch_destroy()
 | 
			
		||||
{
 | 
			
		||||
	ip link set dev $swp1 down
 | 
			
		||||
	ip link del dev br0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
setup_prepare()
 | 
			
		||||
{
 | 
			
		||||
	h1=${NETIFS[p1]}
 | 
			
		||||
	swp1=${NETIFS[p2]}
 | 
			
		||||
 | 
			
		||||
	vrf_prepare
 | 
			
		||||
 | 
			
		||||
	h1_create
 | 
			
		||||
	switch_create
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cleanup()
 | 
			
		||||
{
 | 
			
		||||
	pre_cleanup
 | 
			
		||||
 | 
			
		||||
	switch_destroy
 | 
			
		||||
	h1_destroy
 | 
			
		||||
 | 
			
		||||
	vrf_cleanup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
do_mdb_add_del()
 | 
			
		||||
{
 | 
			
		||||
	local group=$1
 | 
			
		||||
	local flag=$2
 | 
			
		||||
 | 
			
		||||
	RET=0
 | 
			
		||||
	bridge mdb add dev br0 port br0 grp $group $flag 2>/dev/null
 | 
			
		||||
	check_err $? "Failed adding $group to br0, port br0"
 | 
			
		||||
 | 
			
		||||
	if [ -z "$flag" ]; then
 | 
			
		||||
	    flag="temp"
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	bridge mdb show dev br0 | grep $group | grep -q $flag 2>/dev/null
 | 
			
		||||
	check_err $? "$group not added with $flag flag"
 | 
			
		||||
 | 
			
		||||
	bridge mdb del dev br0 port br0 grp $group 2>/dev/null
 | 
			
		||||
	check_err $? "Failed deleting $group from br0, port br0"
 | 
			
		||||
 | 
			
		||||
	bridge mdb show dev br0 | grep -q $group >/dev/null
 | 
			
		||||
	check_err_fail 1 $? "$group still in mdb after delete"
 | 
			
		||||
 | 
			
		||||
	log_test "MDB add/del group $group to bridge port br0"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mdb_add_del_test()
 | 
			
		||||
{
 | 
			
		||||
	do_mdb_add_del $TEST_GROUP_MAC permanent
 | 
			
		||||
	do_mdb_add_del $TEST_GROUP_IP4
 | 
			
		||||
	do_mdb_add_del $TEST_GROUP_IP6
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
trap cleanup EXIT
 | 
			
		||||
 | 
			
		||||
setup_prepare
 | 
			
		||||
setup_wait
 | 
			
		||||
 | 
			
		||||
tests_run
 | 
			
		||||
 | 
			
		||||
exit $EXIT_STATUS
 | 
			
		||||
		Loading…
	
		Reference in a new issue