From nobody Wed Jul 8 07:52:11 2026 X-Original-To: dev-commits-src-all@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 4gw9Km38fBz6kvfp for ; Wed, 08 Jul 2026 07:52:12 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gw9Kl71n0z4J0f for ; Wed, 08 Jul 2026 07:52:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783497132; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uT26PmD34n15c+wNHfbh4Oj9cqq7sZ9lnBI9tOmkLqs=; b=M1+iMQUh7CoRnhz/VM5Ns+vzPjuGXt4A5iH/karTg2Vm4yZ8eCQtERufeHNcL+6vYZX4pf btajYslc1+dXdfyAdWlOqAmtNTre7exL9A92bR9be1rHeTWWuu0rudCwxgkZPNFTN4okEF PD4b7v4qpOKhU4c1OfUKYiw7gqlpYxR8qpKz1QWooOEQo3pPqMZxuwRQxlVz+9yDWiTsW7 V1vvd8nGZOAtwJ3LkwIbTW3tq+9ECFV+ZdNe35A/ihcpH3b7i9/i9jI4DPfsp3Z77pRY1K k/FAxtCG8/EE3H3HUDDD0dYgOdVV0U7ZTt1A8GdU86oKjydOT8UBnA2yK+V9xw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783497132; a=rsa-sha256; cv=none; b=pRusUaNRwPde5zBxpd2MUidgtmFAF5hBCLkL7B85tLjzYMiLSaE0C1vDs6mcuIm2AJJ3lN S8CsbldgmC4/asKfDKTLtOdOHryHU1RGs2PdOXyYxrLrVCGK/TzY/AaYs4KFZPLshtdAnw VEqOrXIHriSkzDQH6o5tVbiluTKSW0U4ToOgZfc+SCtzW3tfEJNURf0JUFVBwGKmkcw8BX PGYZcdAKqJfsw62923xxxBfjARxwNcNa1rVW8Qf0PvR9DZjP507SUMsjRz3DHrSzK4Fyzc C+HYBkqaOt912wHBSt6a8Tty2O4F5dDthtBqKlFz3Xgz/MdMZ6vAoMgvePljLA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783497132; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uT26PmD34n15c+wNHfbh4Oj9cqq7sZ9lnBI9tOmkLqs=; b=wEa1K7hg1zC9AglxpLJAbEKaLCBjfXE202QAtCnRs65RYNg3GahxylZ6uxU/lxvBgKQGUM jOj0Y3n1+ihBbAayDIJh69+I2i+2ViIrT4xsOO1luJCkYvT3Tv7sG5crwayDxHrpoXh+B5 vZASDVYKQj8LXEHj3Y4cBmUO8RkO+TDKp/SuRG9sCPQEDOUykHE6UWTSsEu4XvJr0C+MGD Hx3prdICgAX0epXcL+bNZiSPz7X3cNUnwRVRAZ+4GGrUsE3M+VOXszTPLBtdNzhGNnVH2+ OnE1GI91VtGyfotg9hWwUApEJcDravh/8JreEdwWxrSivYMHldYaPxwS0v0q1g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gw9Kl5lzYz1B82 for ; Wed, 08 Jul 2026 07:52:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46a69 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 08 Jul 2026 07:52:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: KUROSAWA Takahiro From: Kristof Provost Subject: git: 2039fe8ea421 - main - tests/sendfile_helper: support remote connection List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: 2039fe8ea421a93c466657485ba83b4b055f81dd Auto-Submitted: auto-generated Date: Wed, 08 Jul 2026 07:52:11 +0000 Message-Id: <6a4e01ab.46a69.2ed65acd@gitrepo.freebsd.org> The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=2039fe8ea421a93c466657485ba83b4b055f81dd commit 2039fe8ea421a93c466657485ba83b4b055f81dd Author: KUROSAWA Takahiro AuthorDate: 2026-07-07 19:11:19 +0000 Commit: Kristof Provost CommitDate: 2026-07-08 07:23:16 +0000 tests/sendfile_helper: support remote connection In order to use the sendfile_helper program in a pf test script that requires non-loopback interfaces, add functionality to sendfile with a TCP socket that is connected to a remote host. The behavior for unix sockets and TCP loopback sockets is unchanged. Reviewed by: glebius Differential Revision: https://reviews.freebsd.org/D58041 --- tests/sys/common/sendfile_helper.c | 70 ++++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/tests/sys/common/sendfile_helper.c b/tests/sys/common/sendfile_helper.c index c92a194bff2d..a6181d96892e 100644 --- a/tests/sys/common/sendfile_helper.c +++ b/tests/sys/common/sendfile_helper.c @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -101,6 +102,44 @@ tcp_socketpair(int *sv) return (0); } +static int +tcp_client_socket(const char *host, const char *port) +{ + struct addrinfo hints, *res, *res0; + int error; + int s; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + if ((error = getaddrinfo(host, port, &hints, &res0)) != 0) + errx(1, "host %s port %s: %s.", + host, port, gai_strerror(error)); + s = -1; + for (res = res0; res != NULL; res = res->ai_next) { + s = socket(res->ai_family, res->ai_socktype, + res->ai_protocol); + if (s < 0) { + warn("socket(pf:%d, type:%d, proto:%d)", + res->ai_family, res->ai_socktype, + res->ai_protocol); + continue; + } + if (connect(s, res->ai_addr, res->ai_addrlen) < 0) { + warn("connect(%s, %s)", host, port); + close(s); + s = -1; + continue; + } else + break; + } + if (s < 0) + exit(1); + freeaddrinfo(res0); + + return s; +} + static void * receiver(void *arg) { @@ -124,7 +163,8 @@ receiver(void *arg) static void usage(void) { - errx(1, "usage: %s [-u] ", getprogname()); + errx(1, "usage: %s [-u] [-c host] [-p port] " + " ", getprogname()); } int @@ -134,9 +174,19 @@ main(int argc, char **argv) off_t start; int ch, fd, ss[2], flags, error; bool pf_unix = false; + bool tcp_client = false; + const char *host, *port; - while ((ch = getopt(argc, argv, "u")) != -1) + while ((ch = getopt(argc, argv, "c:p:u")) != -1) switch (ch) { + case 'c': + host = optarg; + tcp_client = true; + break; + case 'p': + port = optarg; + tcp_client = true; + break; case 'u': pf_unix = true; break; @@ -148,6 +198,8 @@ main(int argc, char **argv) if (argc != 4) usage(); + if (tcp_client && (host == NULL || port == NULL)) + errx(1, "Need to specify host and port."); start = strtoull(argv[1], NULL, 0); readlen = strtoull(argv[2], NULL, 0); @@ -160,12 +212,18 @@ main(int argc, char **argv) if (pf_unix) { if (socketpair(PF_LOCAL, SOCK_STREAM, 0, ss) != 0) err(1, "socketpair"); - } else + } else if (tcp_client) + ss[0] = tcp_client_socket(host, port); + else tcp_socketpair(ss); - error = pthread_create(&pt, NULL, receiver, &ss[1]); - if (error) - errc(1, error, "pthread_create"); + if (tcp_client) + read_done = true; /* The receiver is another process. */ + else { + error = pthread_create(&pt, NULL, receiver, &ss[1]); + if (error) + errc(1, error, "pthread_create"); + } if (sendfile(fd, ss[0], start, readlen, NULL, NULL, flags) < 0) err(3, "sendfile");