2 # SPDX-License-Identifier: GPL-2.0
4 ALL_TESTS="reportleave_test"
7 TEST_GROUP="239.10.10.10"
8 TEST_GROUP_MAC="01:00:5e:0a:0a:0a"
13 simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
18 simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
23 simple_if_init $h2 192.0.2.2/24 2001:db8:1::2/64
28 simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
33 ip link add dev br0 type bridge mcast_snooping 1 mcast_querier 1
35 ip link set dev $swp1 master br0
36 ip link set dev $swp2 master br0
38 ip link set dev br0 up
39 ip link set dev $swp1 up
40 ip link set dev $swp2 up
45 ip link set dev $swp2 down
46 ip link set dev $swp1 down
73 # Always cleanup the mcast group
74 ip address del dev $h2 $TEST_GROUP/32 2>&1 1>/dev/null
82 # return 0 if the packet wasn't seen on host2_if or 1 if it was
91 # Add an ACL on `host2_if` which will tell us whether the packet
92 # was received by it or not.
93 tc qdisc add dev $host2_if ingress
94 tc filter add dev $host2_if ingress protocol ip pref 1 handle 101 \
95 flower dst_mac $mac action drop
97 $MZ $host1_if -c 1 -p 64 -b $mac -B $ip -t udp "dp=4096,sp=2048" -q
100 tc -j -s filter show dev $host2_if ingress \
101 | jq -e ".[] | select(.options.handle == 101) \
102 | select(.options.actions[0].stats.packets == 1)" &> /dev/null
103 if [[ $? -eq 0 ]]; then
107 tc filter del dev $host2_if ingress protocol ip pref 1 handle 101 flower
108 tc qdisc del dev $host2_if ingress
116 ip address add dev $h2 $TEST_GROUP/32 autojoin
117 check_err $? "Could not join $TEST_GROUP"
120 bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
121 check_err $? "Report didn't create mdb entry for $TEST_GROUP"
123 mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
124 check_fail $? "Traffic to $TEST_GROUP wasn't forwarded"
126 log_test "IGMP report $TEST_GROUP"
129 bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
130 check_err $? "mdb entry for $TEST_GROUP is missing"
132 ip address del dev $h2 $TEST_GROUP/32
133 check_err $? "Could not leave $TEST_GROUP"
136 bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
137 check_fail $? "Leave didn't delete mdb entry for $TEST_GROUP"
139 mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
140 check_err $? "Traffic to $TEST_GROUP was forwarded without mdb entry"
142 log_test "IGMP leave $TEST_GROUP"