From nobody Thu May 01 08:24:07 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Zp6XR5S2dz5tq5V; Thu, 01 May 2025 08:24:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zp6XR28clz3bH6; Thu, 01 May 2025 08:24:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746087847; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5P4VJT9e1l513a7oG2hmQh+eiBFhtVYOcY06T4ZM3Zc=; b=UTMyWlmbMQ3Pyx7OBsjlcTfyj0atk3Zcbn7fqIB+FOvSvPukZ3W1pnNbDTogohXis878H6 cqVLBdM2CGwOn/8EqtMuMqtJ++qamrbtW9xDsnVBdIp1W4nGKivESy4P9x+SPkQmZm1DVg EUYIBFg10Y1HIEajBvOoLYC1v5uYBe8xLyX+R+6q6NFkZ0LhOqTP+mN2ex1gFUnHzzu3Sg xHTFw02JJtZXKrhrrqk9SD7b5bp8aObCTWabZUHssq2TXSA4AS2LhT8Ta7Mq7xVxyrH4U1 LG47noRfwTGnBSPgsH2QvRoXtyACTPMOlSAptZ4dYDLJF9xWcFuhdiv9v0SFSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746087847; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5P4VJT9e1l513a7oG2hmQh+eiBFhtVYOcY06T4ZM3Zc=; b=lUcxTm1x/uOeevZPKQFrAZCMQ9wKl2PqqFA7OvVJvLOfcLMQpg4f6DWltvzwprHxIlGQG6 0cBUbFXbN21pLu1k1gXeNYpnrpf7inrQABpeBbFSfzKJ503ZTtnbF4DVmXCKz5+q+9f47l nWfmqA+Aw4DJK+UXY94DcDKnvhoEtYtCDPzV8yU8/8JzAQU13sWyb8IDphka/WSoR8E/ar X0NeIFsxvGdaMw9Usx+GSxsWqZiMLV4ZXcf13rvHZJWM7Cg3KhplnG4poJWNmhIJfubFaz G0EsQ94rkX2AKmFwVgFXjG8XrqSxnZDksQUmrY+7/pNNfx1iYSFK5bmvYmIZFQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1746087847; a=rsa-sha256; cv=none; b=JQPEN6ubblsBLkg30dCQmYoy98pPvUTumRNyTPCLm4CGWuQB/G1b30GF/cKpk9tv9nm0Ab m5kdUMatXPsIdGSF5uETPpWDIfvjoLNQyIcTC2fzX5LEZy30UUi/OE6tttyn6zWIgHSP0K Y8p1wKYsApILQQ/ioTn4oSCK2Kbf3Dr9Np/qnsgHE7GNacakGzpDEvw2tqVvnUunLxICzu g+1r0CO9T3aL1+ANeozFCf53qWjC4+5ILkzU75ykd2h354M9j2DVpf/hBCZemPJ1CVGvae +sCu8F8EZ0mPMohkh6W84wIoglzCX/vg3GykQ7w8w8OX39wuZ1Q6XPlVYl0eqQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Zp6XR1K3Wz50J; Thu, 01 May 2025 08:24:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5418O7k5079799; Thu, 1 May 2025 08:24:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5418O7vM079796; Thu, 1 May 2025 08:24:07 GMT (envelope-from git) Date: Thu, 1 May 2025 08:24:07 GMT Message-Id: <202505010824.5418O7vM079796@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 720fabb36f15 - main - netinet tests: ensure we send IGMPv2 messages if net.inet.igmp.default_version=2 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 720fabb36f159d1b916aa40ff92359445e429261 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=720fabb36f159d1b916aa40ff92359445e429261 commit 720fabb36f159d1b916aa40ff92359445e429261 Author: Kristof Provost AuthorDate: 2025-04-29 13:56:14 +0000 Commit: Kristof Provost CommitDate: 2025-05-01 07:31:21 +0000 netinet tests: ensure we send IGMPv2 messages if net.inet.igmp.default_version=2 Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D50072 --- tests/sys/netinet/igmp.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tests/sys/netinet/igmp.py b/tests/sys/netinet/igmp.py index 5d3b38cac38f..feb9b8b571d5 100644 --- a/tests/sys/netinet/igmp.py +++ b/tests/sys/netinet/igmp.py @@ -62,6 +62,25 @@ def check_igmpv3(args, pkt): return True +def check_igmpv2(args, pkt): + pkt.show() + + igmp = pkt.getlayer(sc.igmp.IGMP) + if igmp is None: + return False + + if igmp.gaddr != args["group"]: + return False + + if args["type"] == "join": + if igmp.type != 0x16: + return False + if args["type"] == "leave": + if igmp.type != 0x17: + return False + + return True + class TestIGMP(VnetTestTemplate): REQUIRED_MODULES = [] TOPOLOGY = { @@ -82,7 +101,7 @@ class TestIGMP(VnetTestTemplate): @pytest.mark.require_progs(["scapy"]) def test_igmp3_join_leave(self): - "Test that we send the expected join/leave IGMPv2 messages" + "Test that we send the expected join/leave IGMPv3 messages" if1 = self.vnet.iface_alias_map["if1"] @@ -107,3 +126,32 @@ class TestIGMP(VnetTestTemplate): s.close() sniffer.join() assert(sniffer.correctPackets > 0) + + @pytest.mark.require_progs(["scapy"]) + def test_igmp2_join_leave(self): + "Test that we send the expected join/leave IGMPv2 messages" + ToolsHelper.print_output("/sbin/sysctl net.inet.igmp.default_version=2") + + if1 = self.vnet.iface_alias_map["if1"] + + # Start a background sniff + from sniffer import Sniffer + expected_pkt = { "type": "join", "group": "230.0.0.1" } + sniffer = Sniffer(expected_pkt, check_igmpv2, if1.name, timeout=10) + + # Now join a multicast group, and see if we're getting the igmp packet we expect + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + mreq = struct.pack("4sl", socket.inet_aton('230.0.0.1'), socket.INADDR_ANY) + s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) + + # Wait for the sniffer to see the join packet + sniffer.join() + assert(sniffer.correctPackets > 0) + + # Now leave, check for the packet + expected_pkt = { "type": "leave", "group": "230.0.0.1" } + sniffer = Sniffer(expected_pkt, check_igmpv2, if1.name) + + s.close() + sniffer.join() + assert(sniffer.correctPackets > 0)