0001
0002
0003
0004
0005
0006
0007 ALL_TESTS="add_del_to_port_down"
0008 NUM_NETIFS=4
0009
0010 TEST_GROUP="239.10.10.10"
0011 TEST_GROUP_MAC="01:00:5e:0a:0a:0a"
0012
0013 source lib.sh
0014
0015
0016 add_del_to_port_down() {
0017 RET=0
0018
0019 ip link set dev $swp2 down
0020 bridge mdb add dev br0 port "$swp2" grp $TEST_GROUP permanent 2>/dev/null
0021 check_err $? "Failed adding mdb entry"
0022
0023 ip link set dev $swp2 up
0024 setup_wait_dev $swp2
0025 mcast_packet_test $TEST_GROUP_MAC 192.0.2.1 $TEST_GROUP $h1 $h2
0026 check_fail $? "Traffic to $TEST_GROUP wasn't forwarded"
0027
0028 ip link set dev $swp2 down
0029 bridge mdb show dev br0 | grep -q "$TEST_GROUP permanent" 2>/dev/null
0030 check_err $? "MDB entry did not persist after link up/down"
0031
0032 bridge mdb del dev br0 port "$swp2" grp $TEST_GROUP 2>/dev/null
0033 check_err $? "Failed deleting mdb entry"
0034
0035 ip link set dev $swp2 up
0036 setup_wait_dev $swp2
0037 mcast_packet_test $TEST_GROUP_MAC 192.0.2.1 $TEST_GROUP $h1 $h2
0038 check_err $? "Traffic to $TEST_GROUP was forwarded after entry removed"
0039
0040 log_test "MDB add/del entry to port with state down "
0041 }
0042
0043 h1_create()
0044 {
0045 simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
0046 }
0047
0048 h1_destroy()
0049 {
0050 simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
0051 }
0052
0053 h2_create()
0054 {
0055 simple_if_init $h2 192.0.2.2/24 2001:db8:1::2/64
0056 }
0057
0058 h2_destroy()
0059 {
0060 simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
0061 }
0062
0063 switch_create()
0064 {
0065
0066 ip link add dev br0 type bridge mcast_snooping 1 mcast_querier 1
0067
0068 ip link set dev $swp1 master br0
0069 ip link set dev $swp2 master br0
0070
0071 ip link set dev br0 up
0072 ip link set dev $swp1 up
0073
0074 bridge link set dev $swp2 mcast_flood off
0075
0076
0077
0078 sleep 10
0079 }
0080
0081 switch_destroy()
0082 {
0083 ip link set dev $swp1 down
0084 ip link set dev $swp2 down
0085 ip link del dev br0
0086 }
0087
0088 setup_prepare()
0089 {
0090 h1=${NETIFS[p1]}
0091 swp1=${NETIFS[p2]}
0092
0093 swp2=${NETIFS[p3]}
0094 h2=${NETIFS[p4]}
0095
0096 vrf_prepare
0097
0098 h1_create
0099 h2_create
0100 switch_create
0101 }
0102
0103 cleanup()
0104 {
0105 pre_cleanup
0106
0107 switch_destroy
0108 h1_destroy
0109 h2_destroy
0110
0111 vrf_cleanup
0112 }
0113
0114 trap cleanup EXIT
0115
0116 setup_prepare
0117 tests_run
0118 exit $EXIT_STATUS