mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +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 \
 | 
					TEST_PROGS = bridge_igmp.sh \
 | 
				
			||||||
	bridge_locked_port.sh \
 | 
						bridge_locked_port.sh \
 | 
				
			||||||
 | 
						bridge_mdb.sh \
 | 
				
			||||||
	bridge_port_isolation.sh \
 | 
						bridge_port_isolation.sh \
 | 
				
			||||||
	bridge_sticky_fdb.sh \
 | 
						bridge_sticky_fdb.sh \
 | 
				
			||||||
	bridge_vlan_aware.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