@@ -29,6 +29,8 @@ dummy@ovs-dummy: hit:0 missed:0
p2 2/2: (dummy)
])
+ovs-appctl time/stop
+
# Send IGMPv3 query on p2 with vlan 1725
# 5c:8a:38:55:25:52 > 01:00:5e:00:00:01, ethertype 802.1Q (0x8100), length 64: vlan 1725, p 0, ethertype IPv4,
# 172.17.25.1 > 224.0.0.1: igmp query v3
@@ -102,3 +104,113 @@ AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
OVS_VSWITCHD_STOP
AT_CLEANUP
+
+AT_SETUP([mcast - delete the port mdb when vlan configruation changed])
+OVS_VSWITCHD_START([])
+
+AT_CHECK([
+ ovs-vsctl set bridge br0 \
+ datapath_type=dummy \
+ mcast_snooping_enable=true \
+ other-config:mcast-snooping-disable-flood-unregistered=false
+], [0])
+
+AT_CHECK([ovs-ofctl add-flow br0 action=normal])
+
+AT_CHECK([
+ ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy \
+ other-config:hwaddr=aa:55:aa:55:00:01 ofport_request=1 \
+ -- add-port br0 p2 \
+ -- set Interface p2 type=dummy other-config:hwaddr=aa:55:aa:55:00:02 ofport_request=2 \
+ -- add-port br0 p3 \
+ -- set Interface p3 type=dummy other-config:hwaddr=aa:55:aa:55:00:03 ofport_request=3
+], [0])
+
+ovs-appctl time/stop
+
+# send report packets
+AT_CHECK([
+ ovs-appctl netdev-dummy/receive p1 \
+ '01005E010101000C29A027A18100000108004500001C000100004002CBAEAC10221EE001010112140CE9E0010101'
+ ovs-appctl netdev-dummy/receive p1 \
+ '01005E010101000C29A027A28100000208004500001C000100004002CBAEAC10221EE001010112140CE9E0010101'
+], [0])
+
+# send query packets
+AT_CHECK([
+ ovs-appctl netdev-dummy/receive p3 \
+ '01005E010101000C29A027D18100000108004500001C000100004002CBCBAC102201E00101011114EEEB00000000'
+ ovs-appctl netdev-dummy/receive p3 \
+ '01005E010101000C29A027D28100000208004500001C000100004002CBCAAC102202E00101011114EEEB00000000'
+], [0])
+
+AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
+ port VLAN GROUP Age
+ 1 1 224.1.1.1 0
+ 1 2 224.1.1.1 0
+ 3 1 querier 0
+ 3 2 querier 0
+])
+
+AT_CHECK([ovs-vsctl set port p3 tag=2], [0])
+
+AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
+ port VLAN GROUP Age
+ 1 1 224.1.1.1 0
+ 1 2 224.1.1.1 0
+])
+
+AT_CLEANUP
+
+AT_SETUP([mcast - delete the port mdb when port destroyed])
+OVS_VSWITCHD_START([])
+
+AT_CHECK([
+ ovs-vsctl set bridge br0 \
+ datapath_type=dummy \
+ mcast_snooping_enable=true \
+ other-config:mcast-snooping-disable-flood-unregistered=false
+], [0])
+
+AT_CHECK([ovs-ofctl add-flow br0 action=normal])
+
+AT_CHECK([
+ ovs-vsctl add-port br0 p1 -- set Interface p1 type=dummy \
+ other-config:hwaddr=aa:55:aa:55:00:01 ofport_request=1 \
+ -- add-port br0 p2 \
+ -- set Interface p2 type=dummy other-config:hwaddr=aa:55:aa:55:00:02 ofport_request=2 \
+], [0])
+
+# send report packets
+AT_CHECK([
+ ovs-appctl netdev-dummy/receive p1 \
+ '01005E010101000C29A027A18100000108004500001C000100004002CBAEAC10221EE001010112140CE9E0010101'
+ ovs-appctl netdev-dummy/receive p1 \
+ '01005E010101000C29A027A28100000208004500001C000100004002CBAEAC10221EE001010112140CE9E0010101'
+], [0])
+
+# send query packets
+AT_CHECK([
+ ovs-appctl netdev-dummy/receive p2 \
+ '01005E010101000C29A027D18100000108004500001C000100004002CBCBAC102201E00101011114EEEB00000000'
+ ovs-appctl netdev-dummy/receive p2 \
+ '01005E010101000C29A027D28100000208004500001C000100004002CBCAAC102202E00101011114EEEB00000000'
+], [0])
+
+AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
+ port VLAN GROUP Age
+ 1 1 224.1.1.1 0
+ 1 2 224.1.1.1 0
+ 2 1 querier 0
+ 2 2 querier 0
+])
+
+AT_CHECK([ovs-vsctl del-port br0 p2], [0])
+
+AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
+ port VLAN GROUP Age
+ 1 1 224.1.1.1 0
+ 1 2 224.1.1.1 0
+])
+
+AT_CLEANUP
Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech> --- tests/mcast-snooping.at | 112 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+)