Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 #
0004 # Verify that adding host mdb entries work as intended for all types of
0005 # multicast filters: ipv4, ipv6, and mac
0006 
0007 ALL_TESTS="mdb_add_del_test"
0008 NUM_NETIFS=2
0009 
0010 TEST_GROUP_IP4="225.1.2.3"
0011 TEST_GROUP_IP6="ff02::42"
0012 TEST_GROUP_MAC="01:00:01:c0:ff:ee"
0013 
0014 source lib.sh
0015 
0016 h1_create()
0017 {
0018         simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
0019 }
0020 
0021 h1_destroy()
0022 {
0023         simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
0024 }
0025 
0026 switch_create()
0027 {
0028         # Enable multicast filtering
0029         ip link add dev br0 type bridge mcast_snooping 1
0030 
0031         ip link set dev $swp1 master br0
0032 
0033         ip link set dev br0 up
0034         ip link set dev $swp1 up
0035 }
0036 
0037 switch_destroy()
0038 {
0039         ip link set dev $swp1 down
0040         ip link del dev br0
0041 }
0042 
0043 setup_prepare()
0044 {
0045         h1=${NETIFS[p1]}
0046         swp1=${NETIFS[p2]}
0047 
0048         vrf_prepare
0049 
0050         h1_create
0051         switch_create
0052 }
0053 
0054 cleanup()
0055 {
0056         pre_cleanup
0057 
0058         switch_destroy
0059         h1_destroy
0060 
0061         vrf_cleanup
0062 }
0063 
0064 do_mdb_add_del()
0065 {
0066         local group=$1
0067         local flag=$2
0068 
0069         RET=0
0070         bridge mdb add dev br0 port br0 grp $group $flag 2>/dev/null
0071         check_err $? "Failed adding $group to br0, port br0"
0072 
0073         if [ -z "$flag" ]; then
0074             flag="temp"
0075         fi
0076 
0077         bridge mdb show dev br0 | grep $group | grep -q $flag 2>/dev/null
0078         check_err $? "$group not added with $flag flag"
0079 
0080         bridge mdb del dev br0 port br0 grp $group 2>/dev/null
0081         check_err $? "Failed deleting $group from br0, port br0"
0082 
0083         bridge mdb show dev br0 | grep -q $group >/dev/null
0084         check_err_fail 1 $? "$group still in mdb after delete"
0085 
0086         log_test "MDB add/del group $group to bridge port br0"
0087 }
0088 
0089 mdb_add_del_test()
0090 {
0091         do_mdb_add_del $TEST_GROUP_MAC permanent
0092         do_mdb_add_del $TEST_GROUP_IP4
0093         do_mdb_add_del $TEST_GROUP_IP6
0094 }
0095 
0096 trap cleanup EXIT
0097 
0098 setup_prepare
0099 setup_wait
0100 
0101 tests_run
0102 
0103 exit $EXIT_STATUS