From d266f90fbf0905d1e82eb707f596bb778cddcbbe Mon Sep 17 00:00:00 2001 From: Simon Lin Date: Thu, 26 May 2022 23:57:42 +0800 Subject: [PATCH] [tests] `mcast6.py` to receive UDP messages without `JOIN_GROUP` (#7757) `mcast6.py` is used by GitHub Actions CI to send or receive UDP messages in multicast groups. This commit adds a `-u` argument to allow `mcast6.py` to receive UDP messages without joining a multicast group. --- tests/scripts/thread-cert/mcast6.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tests/scripts/thread-cert/mcast6.py b/tests/scripts/thread-cert/mcast6.py index 27548bc21..b090fd95f 100755 --- a/tests/scripts/thread-cert/mcast6.py +++ b/tests/scripts/thread-cert/mcast6.py @@ -68,13 +68,18 @@ def main(): if args[0] == '-s': is_sender = True args.pop(0) + elif args[0] == '-u': + is_multicast_receiver = False + args.pop(0) + else: + is_multicast_receiver = True ifname, group = args if is_sender: sender(ifname, group) else: - receiver(ifname, group) + receiver(ifname, group, is_multicast_receiver=is_multicast_receiver) def sender(ifname, group): @@ -94,7 +99,7 @@ def sender(ifname, group): time.sleep(1) -def receiver(ifname, group): +def receiver(ifname, group, is_multicast_receiver=True): # Look up multicast group address in name server and find out IP version addrinfo = socket.getaddrinfo(group, None)[0] assert addrinfo[0] == socket.AF_INET6 @@ -110,11 +115,12 @@ def receiver(ifname, group): # Bind it to the port s.bind(('', MYPORT)) - group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0]) - # Join group - interface_index = if_nametoindex(ifname) - mreq = group_bin + struct.pack('@I', interface_index) - s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq) + if is_multicast_receiver: + group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0]) + # Join group + interface_index = if_nametoindex(ifname) + mreq = group_bin + struct.pack('@I', interface_index) + s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq) # Loop, printing any data we receive while True: