From nobody Wed Oct 1 21:24:24 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 4ccSc862Bjz69RPb; Wed, 01 Oct 2025 21:24:24 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ccSc84sKJz3DWT; Wed, 01 Oct 2025 21:24:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759353864; 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=8yrovgAZh/DBAQxKQDcGSQsSCbmHypdr0U+HxCgCD1o=; b=rVRJuLJWckhX9DNuwvECH+hcli+Z5ytFDebSgSUtrX4PPXreHiNCZVkyyrWvzzx1fP3Oju AxqG5Ddez8PlwbT+z6ptgrbaNEdxVRLe5a1DKAPbbB1mJrVvR8oZF99++4op7NLxAdbL5k gVuNHSjAesERvt0/aqA6dsedzm+0SDsIY0i4RZl3UjTIMxyXSfXJrh4UF/Td235cjWsvnb OFh716ksw9kSRJOzgifgjlQ1l0ot8Ve/qA1izI3+TL6+c1ytSrF0ntlDUZ7ajuDiYZLPoV va8XtIOrcru6WrR0t5Qe8dKRNKqkO+ZkhOdvHDGqXvv8S8bLQfGqmNRPNg2Jcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759353864; 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=8yrovgAZh/DBAQxKQDcGSQsSCbmHypdr0U+HxCgCD1o=; b=WmUDPgrbxgDwPbSj27//I/tOig+bjzLieksMjq9aYyIiEE3mm9sqIvwdr3wuDQvtRSQF3D I5p1a0RiZ8Fbh/rPvohUTCWmNWxZ7W+mBl07S24JTl7h2i3GwCCw9MfXmS+eNwuI1+VxqH 3V1rxLvmaj6ectkbEzP2wlJ0f0nqgOz7Jm5yhIozAM/oNUWPpYZSjivOmRVn+XuFKYcdup drEsgOkKd0UxUAgu6FORe171Vz6eI6EWauu40YDxAO/3D2oF7p1hEp529ySX33Jkyya7os TQLqmAJHFIZ6PW94FrcdU+jl/xt7tpxQB8GB61D75mT8ChwJgNITv7N1tY2+Jw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1759353864; a=rsa-sha256; cv=none; b=QDFbwYm3fy/i3BNTxL+dUocMG3gC9/yrt6VSVwrXqcNy4bXWIw3I/0SedBCF2CGmbMEbfP 9nmos4mCaLMXzBtFFm9K4pSS9uqJBZrWoGb9vXQN4ufQ7JQUoUwO/srnZd5STsGImNm3Vm 7lWNqTlHrWQblEkxRSx1PFR3GNrXEHyBjo/3J1tYO8uOq3AgIxW8u9bwHa64hwKLyRst8u LEH7IVXfWgZuIWwIszxXpJZyOCYjXKAb7cNv2gNOqbuA5NXa10mXqCVhcaD2Hfl+N7D8mS OX1UIdMU/aUTHV6JTKzFes+DiiEIYLgZC5v9/L4qEJXntu247RxIYSPHAeeKIA== 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 4ccSc84JQWzfYl; Wed, 01 Oct 2025 21:24:24 +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 591LOOOE063997; Wed, 1 Oct 2025 21:24:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 591LOOqX063994; Wed, 1 Oct 2025 21:24:24 GMT (envelope-from git) Date: Wed, 1 Oct 2025 21:24:24 GMT Message-Id: <202510012124.591LOOqX063994@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 36f2eda25171 - main - tests/netinet: rename and extend sendto-IP_MULTICAST_IF.c 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 36f2eda251713d4d38f41cf269876b069e3897ff Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=36f2eda251713d4d38f41cf269876b069e3897ff commit 36f2eda251713d4d38f41cf269876b069e3897ff Author: Gleb Smirnoff AuthorDate: 2025-09-30 02:34:13 +0000 Commit: Gleb Smirnoff CommitDate: 2025-10-01 19:41:52 +0000 tests/netinet: rename and extend sendto-IP_MULTICAST_IF.c Rename this test helper app to multicast-send.c. Extend it to send from/to arbitrary addresses and arbitrary payload so that it can be used in more test scenarios. --- ObsoleteFiles.inc | 3 ++ tests/sys/netinet/Makefile | 2 +- .../{sendto-IP_MULTICAST_IF.c => multicast-send.c} | 62 +++++++++++++++++----- tests/sys/netinet/multicast.sh | 3 +- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 55202d1c100c..539ab7d54460 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20251001: test helper sendto-IP_MULTICAST_IF renamed +OLD_FILES+=usr/tests/sys/netinet/sendto-IP_MULTICAST_IF + # 20250930: Rename wlanstats to wlanstat OLD_FILES+=usr/sbin/wlanstats OLD_FILES+=usr/share/man/man8/wlanstats.8.gz diff --git a/tests/sys/netinet/Makefile b/tests/sys/netinet/Makefile index cc525bf24480..1880709112c8 100644 --- a/tests/sys/netinet/Makefile +++ b/tests/sys/netinet/Makefile @@ -48,7 +48,7 @@ TEST_METADATA.forward+= required_programs="python" \ TEST_METADATA.output+= required_programs="python" TEST_METADATA.redirect+= required_programs="python" -PROGS= udp_dontroute tcp_user_cookie sendto-IP_MULTICAST_IF +PROGS= udp_dontroute tcp_user_cookie multicast-send ${PACKAGE}FILES+= redirect.py diff --git a/tests/sys/netinet/sendto-IP_MULTICAST_IF.c b/tests/sys/netinet/multicast-send.c similarity index 56% rename from tests/sys/netinet/sendto-IP_MULTICAST_IF.c rename to tests/sys/netinet/multicast-send.c index d478e4da0b3b..f10b2b6338dd 100644 --- a/tests/sys/netinet/sendto-IP_MULTICAST_IF.c +++ b/tests/sys/netinet/multicast-send.c @@ -28,35 +28,69 @@ #include #include #include +#include #include +#include +#include +#include +#include +#include #include +static in_port_t +atop(const char *c) +{ + unsigned long ul; + + errno = 0; + if ((ul = strtol(c, NULL, 10)) < 1 || ul > IPPORT_MAX || errno != 0) + err(1, "can't parse %s", c); + + return ((in_port_t)ul); +} + int main(int argc, char *argv[]) { - struct sockaddr_in sin = { + struct sockaddr_in src = { + .sin_family = AF_INET, + .sin_len = sizeof(struct sockaddr_in), + }, dst = { .sin_family = AF_INET, .sin_len = sizeof(struct sockaddr_in), }; + struct ip_mreqn mreqn; struct in_addr in; - int s, rv; + int s; + bool index; - if (argc < 2) - errx(1, "Usage: %s IPv4-address", argv[0]); + if (argc < 7) + errx(1, "Usage: %s src-IPv4 src-port dst-IPv4 dst-port " + "interface payload", argv[0]); - if (inet_pton(AF_INET, argv[1], &in) != 1) + if (inet_pton(AF_INET, argv[1], &src.sin_addr) != 1) err(1, "inet_pton(%s) failed", argv[1]); + src.sin_port = htons(atop(argv[2])); + if (inet_pton(AF_INET, argv[3], &dst.sin_addr) != 1) + err(1, "inet_pton(%s) failed", argv[3]); + dst.sin_port = htons(atop(argv[4])); + if (inet_pton(AF_INET, argv[5], &in) == 1) + index = false; + else if ((mreqn.imr_ifindex = if_nametoindex(argv[5])) > 0) + index = true; + else + err(1, "if_nametoindex(%s) failed", argv[5]); assert((s = socket(PF_INET, SOCK_DGRAM, 0)) > 0); - assert(bind(s, (struct sockaddr *)&sin, sizeof(sin)) == 0); - assert(setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &in, sizeof(in)) - == 0); - /* RFC 6676 */ - assert(inet_pton(AF_INET, "233.252.0.1", &sin.sin_addr) == 1); - sin.sin_port = htons(6676); - rv = sendto(s, &sin, sizeof(sin), 0, - (struct sockaddr *)&sin, sizeof(sin)); - if (rv != sizeof(sin)) + assert(bind(s, (struct sockaddr *)&src, sizeof(src)) == 0); + if (index) + assert(setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &mreqn, + sizeof(mreqn)) == 0); + else + assert(setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &in, + sizeof(in)) == 0); + if (sendto(s, argv[6], strlen(argv[6]) + 1, 0, (struct sockaddr *)&dst, + sizeof(dst)) != (ssize_t)strlen(argv[6]) + 1) err(1, "sendto failed"); return (0); diff --git a/tests/sys/netinet/multicast.sh b/tests/sys/netinet/multicast.sh index eb2b962dac70..1826e1e7c4ee 100644 --- a/tests/sys/netinet/multicast.sh +++ b/tests/sys/netinet/multicast.sh @@ -47,7 +47,8 @@ IP_MULTICAST_IF_body() jexec mjail ifconfig ${epair}a up jexec mjail ifconfig ${epair}a 192.0.2.1/24 atf_check -s exit:0 -o empty \ - jexec mjail $(atf_get_srcdir)/sendto-IP_MULTICAST_IF 192.0.2.1 + jexec mjail $(atf_get_srcdir)/multicast-send \ + 0.0.0.0 0 233.252.0.1 6676 192.0.2.1 hello } IP_MULTICAST_IF_cleanup()