Scapy 2.8.0 moved the IGMPv3 layers to scapy.layers.igmp and kept
scapy.contrib.igmpv3 only as a deprecated alias.  IGMPv3mr is now
IGMPv3_MR, a complete Membership Report that carries its own type
and checksum.  The "IGMPv3(type=0x22) / IGMPv3mr(...)" packet used by
the "Traffic from external port not looped back to localnet" test is
therefore built with two report headers, and the first one has zero
group records.  pinctrl learns no group from it and the test fails
waiting for the 239.1.2.3 IGMP_Group row.

No scapy construction produces the same packet with both 2.7 and 2.8,
so build the report with the send_igmp_v3_report() helper that the
other IGMP tests already use.

Assisted-by: Claude Opus 5.5, Claude Code
Signed-off-by: Michal Arbet <[email protected]>
---
 tests/ovn.at | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/tests/ovn.at b/tests/ovn.at
index 136b825f9..e0796a76c 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -47594,13 +47594,11 @@ mld_packet=$(fmt_pkt \
 check as hv1 ovs-appctl netdev-dummy/receive br-phys_n1 $mld_packet
 
 # IGMPv3 report.  Same scenario but with IPv4 multicast.
-igmp_packet=$(fmt_pkt \
-    "Ether(dst='01:00:5e:00:00:16', src='50:54:00:00:00:01') / \
-     IP(src='10.0.0.1', dst='224.0.0.22', ttl=1, \
-        options=IPOption_Router_Alert()) / \
-     IGMPv3(type=0x22) / \
-     IGMPv3mr(records=IGMPv3gr(rtype=4, maddr='239.1.2.3'))")
-check as hv1 ovs-appctl netdev-dummy/receive br-phys_n1 $igmp_packet
+send_igmp_v3_report br-phys_n1 hv1 \
+    505400000001 $(ip_to_hex 10 0 0 1) f9f8 \
+    $(ip_to_hex 239 1 2 3) 04 e8f9 \
+    igmp_packet.txt
+igmp_packet=$(cat igmp_packet.txt)
 
 # Wait for pinctrl to fully process the IGMP/MLD reports and sync them
 # to the SB database.  This guarantees that pinctrl has also re-injected
-- 
2.53.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to