From nobody Mon Sep 22 12:08:18 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 4cVhhf6L5Hz67nmS; Mon, 22 Sep 2025 12:08:18 +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 4cVhhf4tkxz3G7l; Mon, 22 Sep 2025 12:08:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758542898; 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=QNTrAMVQP2GuknQfY0x34dJWeJZYRX638DtXD/fSPgw=; b=ggfefrpx1O0LwpHvxjPnX/Pmz+yOs3f2n0QZgFy9Zym5M12z5SYUCdOOxZwnuTcKc+YoH9 Pp3fe/q0SARBrwv4TSB44J9za3M7Y0bpQoxZiAnbz9hZVvqkcNYdBHJYZ+uIKQF5hVtwKr jBWZ5F06tgQvQ3/hi7bxk306+FSXMmqUIm90kSuAhhTcv0jUehvbJNiJlge43MSbwzrRBw V190Pn66i5Y4eXlRJ7RlsTWnciRdkT/r/BaYN9uEfj6sKb/mQgPgPEIW0ZIZHTYqSnpWqF faxhmXhze7CTVbEuz42l7btRklqStpP+V4dPXURXUEl9nogk+ujZZWkkR7H0wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758542898; 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=QNTrAMVQP2GuknQfY0x34dJWeJZYRX638DtXD/fSPgw=; b=Hq/cQbTggODzjT73RvFEFcBChgIwM51hODwdnl1UGfHx+BOWUXDTHK5qcd6NV5jrzN6pAz JZDHnwW4gDDVeRqNjg4BJlDnZjQeIdt3TVeqALgD6XL/DoJbQGPIFvMspnxxP9K4Q+ajvH g9iJSb1AEQx1tCjUE+FKxgj5yKP/hX2JoadUE/Ci7YDKTHwVd6Qw2Kbdfx4BUcOfrvOw9r mQElrR8p9fpookByv2Il4E4MM5hNSB6lenYjHfHZwlZIOB89elKviz5Tku0aaK7n+U3FVY gP2CLG4bZbdE98qHuxCoFJuI621YFKviyc0pmOfMSDDSpIvAwNoCaksDkcgv7Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1758542898; a=rsa-sha256; cv=none; b=ajv20UjkdM6K547RJIBFecf8dNBVwJq2fsF+GiWJSE7Ut4/iq4ZeJ1DXQwK9YRCg0RNksU EWYLtsLFDOXnVr9a+NZnoD0Puma4oeujHzgJjksQLxnBNcuTrr1QVmQBeH5s5bGZ4ff/6i sJ37VCPz7KLPoLdOPFM6/qM77Ex4xpQ7tN8HfDM4bfvLaQq97cOe6LCUs0F4RdQwgZhIIM mC42/QcnbFXOx9/Aa4Z2h+8LHnyFEDNbH/drBcIcAipeIzY45t8AcPPMAMb1cD+81epMGk +pJczaSW42Id6ZPX9CiQAmSIk8KRrfXvtclU6AkcJDMSPsB2ZuaisUw+jsU3UA== 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 4cVhhf3wWFz10GK; Mon, 22 Sep 2025 12:08:18 +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 58MC8IX9002482; Mon, 22 Sep 2025 12:08:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58MC8INk002479; Mon, 22 Sep 2025 12:08:18 GMT (envelope-from git) Date: Mon, 22 Sep 2025 12:08:18 GMT Message-Id: <202509221208.58MC8INk002479@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 6d3de817987a - stable/15 - ifconfig: Enter jail as soon as possible 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: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 6d3de817987ac7c3b0dc661feec954ecb0a53861 Auto-Submitted: auto-generated The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=6d3de817987ac7c3b0dc661feec954ecb0a53861 commit 6d3de817987ac7c3b0dc661feec954ecb0a53861 Author: Dag-Erling Smørgrav AuthorDate: 2025-09-15 17:56:33 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-09-22 10:26:59 +0000 ifconfig: Enter jail as soon as possible Some options (in particular, -g) are processed immediately upon being parsed. This will produce the wrong result in combination with -j since we only attach to the jail after we're done parsing arguments. Solve this by attaching to the jail immediately when -j is encountered. The downside is that e.g. `ifconfig -j foo -j bar` would previously attach to jail “bar”, whereas now it will attempt to attach to jail “foo”, and if successful, attempt to attach to jail “bar” within jail “foo”. This may be considered a feature. PR: 289134 MFC after: 1 week Reviewed by: zlei Differential Revision: https://reviews.freebsd.org/D52501 (cherry picked from commit 18fd1443d205aed6be22966125a4820f77571948) --- sbin/ifconfig/ifconfig.8 | 42 +++++++++++++++++++++--------------------- sbin/ifconfig/ifconfig.c | 22 ++++++++-------------- sbin/ifconfig/ifconfig.h | 1 - 3 files changed, 29 insertions(+), 36 deletions(-) diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index b580191383b3..c4184ba61ee4 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 10, 2025 +.Dd September 12, 2025 .Dt IFCONFIG 8 .Os .Sh NAME @@ -36,7 +36,7 @@ .Nd configure network interface parameters .Sh SYNOPSIS .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Op Fl DkLmn .Op Fl f Ar type Ns Cm \&: Ns Ar format .Ar interface @@ -50,11 +50,11 @@ .Oc .Op Ar parameters .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Ar interface .Cm destroy .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Fl a .Op Fl dDkLmuv .Op Fl f Ar type Ns Cm \&: Ns Ar format @@ -64,16 +64,16 @@ .Nm .Fl C .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Fl g Ar groupname .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Fl l .Op Fl du .Op Fl g Ar groupname .Op Ar address_family .Nm -.Op Fl j Ar jail +.Op Fl j Ar jid .Op Fl dkLmuv .Op Fl f Ar type Ns Cm \&: Ns Ar format .Sh DESCRIPTION @@ -257,22 +257,22 @@ Setting to .Cm all selects all interfaces. -.It Fl j Ar jail -Perform the actions inside the -.Ar jail . +.It Fl j Ar jid +Perform the actions inside the jail specified by +.Ar jid , +which may be either a jail name or a numeric jail ID. .Pp The -.Cm ifconfig -will first attach to the -.Ar jail -(by jail id or jail name) before performing the effects. -.Pp -This allow network interfaces of -.Ar jail -to be configured even if the -.Cm ifconfig -binary is not available in -.Ar jail . +.Nm +utility will attach to the specified jail immediately upon +encountering the option on the command line. +The option may be specified multiple times to attach to a nested jail +(jail within a jail). +.Pp +This makes it possible to configure network interfaces within a vnet +jail even if the +.Nm +binary is not available inside the jail. .It Fl k Print keying information for the .Ar interface , diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c index 3f998b7f2b52..c323a26ec1a8 100644 --- a/sbin/ifconfig/ifconfig.c +++ b/sbin/ifconfig/ifconfig.c @@ -463,6 +463,9 @@ args_parse(struct ifconfig_args *args, int argc, char *argv[]) { char options[1024]; struct option *p; +#ifdef JAIL + int jid; +#endif int c; /* Parse leading line options */ @@ -494,7 +497,11 @@ args_parse(struct ifconfig_args *args, int argc, char *argv[]) #ifdef JAIL if (optarg == NULL) usage(); - args->jail_name = optarg; + jid = jail_getid(optarg); + if (jid == -1) + Perror("jail not found"); + if (jail_attach(jid) != 0) + Perror("cannot attach to jail"); #else Perror("not built with jail support"); #endif @@ -611,9 +618,6 @@ main(int ac, char *av[]) { char *envformat; int flags; -#ifdef JAIL - int jid; -#endif struct ifconfig_args _args = {}; struct ifconfig_args *args = &_args; @@ -638,16 +642,6 @@ main(int ac, char *av[]) args_parse(args, ac, av); -#ifdef JAIL - if (args->jail_name) { - jid = jail_getid(args->jail_name); - if (jid == -1) - Perror("jail not found"); - if (jail_attach(jid) != 0) - Perror("cannot attach to jail"); - } -#endif - if (!args->all && !args->namesonly) { /* not listing, need an argument */ args->ifname = args_pop(args); diff --git a/sbin/ifconfig/ifconfig.h b/sbin/ifconfig/ifconfig.h index 468c9b4e80da..672020443b8c 100644 --- a/sbin/ifconfig/ifconfig.h +++ b/sbin/ifconfig/ifconfig.h @@ -249,7 +249,6 @@ struct ifconfig_args { const char *matchgroup; /* Group name to match */ const char *nogroup; /* Group name to exclude */ const struct afswtch *afp; /* AF we're operating on */ - const char *jail_name; /* Jail name or jail id specified */ }; struct option {