0001
0002
0003
0004
0005
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
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