Date: Sun, 13 Mar 2005 06:00:18 GMT From: Chris Hodgins <chodgins@cis.strath.ac.uk> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/78763: [PATCH] Added jail support to ps Message-ID: <200503130600.j2D60I0F024611@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/78763; it has been noted by GNATS.
From: Chris Hodgins <chodgins@cis.strath.ac.uk>
To: Christopher Hodgins <christopher.hodgins@gmail.com>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: bin/78763: [PATCH] Added jail support to ps
Date: Sun, 13 Mar 2005 06:01:37 +0000
Christopher Hodgins wrote:
>>Number: 78763
>>Category: bin
>>Synopsis: [PATCH] Added jail support to ps
>>Confidential: no
>>Severity: non-critical
>>Priority: low
>>Responsible: freebsd-bugs
>>State: open
>>Quarter:
>>Keywords:
>>Date-Required:
>>Class: update
>>Submitter-Id: current-users
>>Arrival-Date: Sun Mar 13 04:00:11 GMT 2005
>>Closed-Date:
>>Last-Modified:
>>Originator: Christopher Hodgins
>>Release: 5.4-PRERELEASE
>>Organization:
>>Environment:
>
> FreeBSD paranoia 5.4-PRERELEASE FreeBSD 5.4-PRERELEASE #0: Wed Mar 2 20:05:21 GMT 2005 root@paranoia:/usr/obj/usr/src/sys/paranoia i386
>
>
>>Description:
>
> These patches add jail support to ps through the -J jid option.
>
> This is my first patch so I would appreciate it if you could let me know if I have made any mistakes.
>
> Thanks
> Chris
>
>>How-To-Repeat:
>
>
>>Fix:
>
> --- ps.c.orig Sun Mar 13 02:43:25 2005
> +++ ps.c Sun Mar 13 02:55:06 2005
> @@ -129,6 +129,7 @@
> } l;
> };
>
> +static void attach_to_jail(const char *jailid);
> static int check_procfs(void);
> static int addelem_gid(struct listinfo *, const char *);
> static int addelem_pid(struct listinfo *, const char *);
> @@ -160,7 +161,7 @@
> "%cpu,%mem,command";
> static char Zfmt[] = "label";
>
> -#define PS_ARGS "AaCce" OPT_LAZY_f "G:gHhjLlM:mN:O:o:p:rSTt:U:uvwXxZ"
> +#define PS_ARGS "AaCce" OPT_LAZY_f "G:gHhjJ:LlM:mN:O:o:p:rSTt:U:uvwXxZ"
>
> int
> main(int argc, char *argv[])
> @@ -209,6 +210,18 @@
> init_list(&ttylist, addelem_tty, sizeof(dev_t), "tty");
> init_list(&uidlist, addelem_uid, sizeof(uid_t), "user");
> memf = nlistf = _PATH_DEVNULL;
> +
> + /*
> + * Must catch the Jail ID option first, so that all
> + * of the other options run inside of the jail.
> + */
> + if ((ch = getopt(argc, argv, "J:")) != -1)
> + if (ch != '?')
> + attach_to_jail(optarg);
> +
> + optind = 1;
> + optreset = 1;
> +
> while ((ch = getopt(argc, argv, PS_ARGS)) != -1)
> switch ((char)ch) {
> case 'A':
> @@ -265,6 +278,8 @@
> case 'h':
> prtheader = ws.ws_row > 5 ? ws.ws_row : 22;
> break;
> + case 'J':
> + break;
> case 'j':
> parsefmt(jfmt, 0);
> _fmt = 1;
> @@ -633,6 +648,20 @@
> exit(eval);
> }
>
> +static void attach_to_jail(const char *jailid) {
> +int jid = -1;
> +char *ep;
> +
> + jid = strtol(jailid, &ep, 10);
> + if (!jailid || *ep) {
> + errx(1, "illegal jid: %s", jailid);
> + optfatal = 1;
> + } else if (jail_attach(jid) == -1) {
> + err(1, "jail_attach(): %d", jid);
> + optfatal = 1;
> + }
> +}
> +
> static int
> addelem_gid(struct listinfo *inf, const char *elem)
> {
> @@ -1205,7 +1234,7 @@
>
> (void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
> "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]",
> - " [-M core] [-N system]",
> + " [-J jid] [-M core] [-N system]",
> " [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]", " ps [-L]");
> exit(1);
>
>
> --- ps.1.orig Sun Mar 13 03:11:50 2005
> +++ ps.1 Sun Mar 13 03:11:32 2005
> @@ -140,6 +140,9 @@
> .It Fl h
> Repeat the information header as often as necessary to guarantee one
> header per page of information.
> +.It Fl J
> +Display information in the jail specified by
> +.Cm jid .
> .It Fl j
> Print information associated with the following keywords:
> .Cm user , pid , ppid , pgid , sid , jobc , state , tt , time ,
>
>
>>Release-Note:
>>Audit-Trail:
>>Unformatted:
>
The ps man page diff is missing the -J jid option from the argument list
at the start. Here is the corrected diff:
--- ps.1.orig Sun Mar 13 03:11:50 2005
+++ ps.1 Sun Mar 13 06:00:47 2005
@@ -40,6 +40,7 @@
.Op Fl aCcefHhjlmrSTuvwXxZ
.Op Fl O Ar fmt | Fl o Ar fmt
.Op Fl G Ar gid Ns Op , Ns Ar gid Ns Ar ...
+.Op Fl J Ar jid
.Op Fl M Ar core
.Op Fl N Ar system
.Op Fl p Ar pid Ns Op , Ns Ar pid Ns Ar ...
@@ -140,6 +141,9 @@
.It Fl h
Repeat the information header as often as necessary to guarantee one
header per page of information.
+.It Fl J
+Display information in the jail specified by
+.Cm jid .
.It Fl j
Print information associated with the following keywords:
.Cm user , pid , ppid , pgid , sid , jobc , state , tt , time ,
Thanks
Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503130600.j2D60I0F024611>
