From nobody Fri Jan 24 16:48:28 2025 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 4YfkK93P8Qz5ldxh; Fri, 24 Jan 2025 16:48:29 +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 4YfkK90gp9z4JfR; Fri, 24 Jan 2025 16:48:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737737309; 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=VYDkAsEjY/vl7w0TtEiNYitIXYotcvXoCv1Zfr7+7+A=; b=GSmPA6+Y1Z/cE9aN2X8VlC6JmmOE4N/Qst59sQ5MxgnzgSCa/bQ0+h+PKy22JHl1SPjQIg +Fre2rmBYvhcMn3auGI6UxGbwhLzWmpy964d3z8OMvm6ob/WRS6NUZG3m+JeVnDUjTWT6h btre7To2Q3mBx5I+s7UGNi/xMsG04W4VREZF7gABzrMKY/6oTf1w9gdgU3RD/rXqFL8vIL d9LPdZex4iAshGsDwiWKKpgw8a1uUctUoG8OWSji4XKVBkg4OMlt/WzjomeOK49wnudE0y E1TEQB1AYyCCczqIvCX7y+3juM0CSXpQ7ZXt6AYqUtuaxuRthQtjD7P2r20IbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737737309; 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=VYDkAsEjY/vl7w0TtEiNYitIXYotcvXoCv1Zfr7+7+A=; b=iBoZGIT4RWBzo/QO15QTtKJChHAEAQIArxRIWjBck6O0tK//8JgDcaobdSQkbMTlIHS1lO auv03/66u0GkOTiGMtfYvTj8A4FHxE1DptD7hxLymHHVJjb693f2AX/ODWtH86eorC88ZF fWKDx3lhxg4n+nQt03P6KZAZtq80H4DoBVWlgl2LRyoX3RoY1bJqtAmX/XpJab7775DcHH bb/02SigqXer/kvmQAjjlP4xcCqOhgXJDBbTSMsMWQzOnL6Y8xxfjOKA36cVIDWLo19YN9 snXaSGFbVCmRVDjmpOf/+/ox47G2r8n3Pvk6vqnkCwhpFz7toj5sE5D0tJDZ5w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737737309; a=rsa-sha256; cv=none; b=PB4oiNBtVX1xcndrP2B13TWxIoYNwT85TRy2T0KTlQk7h6Siv2+Gr9AIta+ff+FJO0QEVl 9K4KRXFMs+XgsAMKi5KekmA+h3qvWoxkujPx8hhfZzUl4LuFnQYyDw8IbSEM1mSjHoxrXd FMYJb1dCIhV196KiG9SDWUZoINj7dElhKhv9LiK1UksS871jN4HOSz56lBkKfMrGYLvC/5 dk2bKruHbKbKfxmVV1dM0BugmSa8yeyWhcqUcN9JdYQUOyMNh6iES0swvJcD1Qkh+DAWV8 NWaIPiMvC+gkMWKlWSGd4+bQI3DDquCc9MId+7lG9brrU795IpETgktEXd2OoQ== 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 4YfkK90FPqzZs1; Fri, 24 Jan 2025 16:48:29 +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 50OGmScD051439; Fri, 24 Jan 2025 16:48:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50OGmSre051436; Fri, 24 Jan 2025 16:48:28 GMT (envelope-from git) Date: Fri, 24 Jan 2025 16:48:28 GMT Message-Id: <202501241648.50OGmSre051436@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 04a3ca71ead6 - main - netcat: Add a flag to enable the use of SO_REUSEPORT_LB 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04a3ca71ead61b4ced23a791d3a5e2633ca1ef72 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=04a3ca71ead61b4ced23a791d3a5e2633ca1ef72 commit 04a3ca71ead61b4ced23a791d3a5e2633ca1ef72 Author: Mark Johnston AuthorDate: 2025-01-24 16:37:43 +0000 Commit: Mark Johnston CommitDate: 2025-01-24 16:37:43 +0000 netcat: Add a flag to enable the use of SO_REUSEPORT_LB This is handy for testing purposes. Hide it behind a long option so that it doesn't conflict with upstream, like we do with several other flags. Reviewed by: imp, glebius, delphij MFC after: 2 weeks Sponsored by: Klara, Inc. Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D48543 --- contrib/netcat/nc.1 | 9 ++++++++- contrib/netcat/netcat.c | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/contrib/netcat/nc.1 b/contrib/netcat/nc.1 index 2e34cdc586c3..5801c6fa00e3 100644 --- a/contrib/netcat/nc.1 +++ b/contrib/netcat/nc.1 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 17, 2023 +.Dd January 20, 2025 .Dt NC 1 .Os .Sh NAME @@ -40,6 +40,7 @@ .Op Fl e Ar IPsec_policy .Op Fl I Ar length .Op Fl i Ar interval +.Op Fl -lb .Op Fl -no-tcpopt .Op Fl -sctp .Op Fl -crlf @@ -175,6 +176,12 @@ options. Additionally, any timeouts specified with the .Fl w option are ignored. +.It Fl -lb +When using +.Fl l , +put the socket in load-balancing mode. +In this mode, multiple sockets can bind to the same address and port, +and incoming connections are distributed among them. .It Fl M Collect per-connection TCP statistics using the .Xr stats 3 diff --git a/contrib/netcat/netcat.c b/contrib/netcat/netcat.c index 279489a45e92..7035fdf68961 100644 --- a/contrib/netcat/netcat.c +++ b/contrib/netcat/netcat.c @@ -89,6 +89,7 @@ int Fflag; /* fdpass sock to stdout */ unsigned int iflag; /* Interval Flag */ int kflag; /* More than one connect */ int lflag; /* Bind to local port */ +int FreeBSD_lb; /* Use SO_REUSEPORT_LB */ int FreeBSD_Mflag; /* Measure using stats(3) */ int Nflag; /* shutdown() network socket */ int nflag; /* Don't do name look up */ @@ -168,6 +169,7 @@ main(int argc, char *argv[]) char unix_dg_tmp_socket_buf[UNIX_DG_TMP_SOCKET_SIZE]; struct option longopts[] = { { "crlf", no_argument, &FreeBSD_crlf, 1 }, + { "lb", no_argument, &FreeBSD_lb, 1 }, { "no-tcpopt", no_argument, &FreeBSD_Oflag, 1 }, { "sctp", no_argument, &FreeBSD_sctp, 1 }, { "tun", required_argument, NULL, FREEBSD_TUN }, @@ -371,6 +373,8 @@ main(int argc, char *argv[]) errx(1, "cannot use -z and -l"); if (!lflag && kflag) errx(1, "must use -l with -k"); + if (!lflag && FreeBSD_lb) + errx(1, "must use -l with --lb"); if (FreeBSD_sctp) { if (uflag) errx(1, "cannot use -u and --sctp"); @@ -800,6 +804,8 @@ local_listen(char *host, char *port, struct addrinfo hints) res0 = res; do { + int opt; + if ((s = socket(res0->ai_family, res0->ai_socktype, res0->ai_protocol)) < 0) continue; @@ -808,7 +814,8 @@ local_listen(char *host, char *port, struct addrinfo hints) &rtableid, sizeof(rtableid)) == -1)) err(1, "setsockopt SO_SETFIB"); - ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); + opt = FreeBSD_lb != 0 ? SO_REUSEPORT_LB : SO_REUSEPORT; + ret = setsockopt(s, SOL_SOCKET, opt, &x, sizeof(x)); if (ret == -1) err(1, NULL);