Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jun 2012 19:16:50 -0400
From:      Jason Hellenthal <jhellenthal@dataix.net>
To:        Andrew Thompson <thompsa@freebsd.org>
Cc:        svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   Re: svn commit: r237672 - stable/8/usr.bin/sockstat
Message-ID:  <20120627231650.GA7853@DataIX.net>
In-Reply-To: <201206272213.q5RMDfxt035907@svn.freebsd.org>
References:  <201206272213.q5RMDfxt035907@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

The usage information never got updated from this change...

$ sockstat --help
sockstat: illegal option -- -
Usage: sockstat [-46cLlu] [-p ports] [-P protocols]


On Wed, Jun 27, 2012 at 10:13:41PM +0000, Andrew Thompson wrote:
> Author: thompsa
> Date: Wed Jun 27 22:13:40 2012
> New Revision: 237672
> URL: http://svn.freebsd.org/changeset/base/237672
> 
> Log:
>   MFC r235870
>   
>    Allow the socket list to be limited to a specific jail id.
> 
> Modified:
>   stable/8/usr.bin/sockstat/sockstat.1
>   stable/8/usr.bin/sockstat/sockstat.c
> Directory Properties:
>   stable/8/usr.bin/sockstat/   (props changed)
> 
> Modified: stable/8/usr.bin/sockstat/sockstat.1
> ==============================================================================
> --- stable/8/usr.bin/sockstat/sockstat.1	Wed Jun 27 22:11:31 2012	(r237671)
> +++ stable/8/usr.bin/sockstat/sockstat.1	Wed Jun 27 22:13:40 2012	(r237672)
> @@ -27,7 +27,7 @@
>  .\"
>  .\" $FreeBSD$
>  .\"
> -.Dd January 24, 2012
> +.Dd May 16, 2012
>  .Dt SOCKSTAT 1
>  .Os
>  .Sh NAME
> @@ -36,6 +36,7 @@
>  .Sh SYNOPSIS
>  .Nm
>  .Op Fl 46cLlu
> +.Op Fl j Ar jid
>  .Op Fl p Ar ports
>  .Op Fl P Ar protocols
>  .Sh DESCRIPTION
> @@ -57,6 +58,8 @@ Show
>  (IPv6) sockets.
>  .It Fl c
>  Show connected sockets.
> +.It Fl j Ar jid
> +Show only sockets belonging to the specified jail ID.
>  .It Fl L
>  Only show Internet sockets if the local or foreign addresses are not
>  in the loopback network prefix
> 
> Modified: stable/8/usr.bin/sockstat/sockstat.c
> ==============================================================================
> --- stable/8/usr.bin/sockstat/sockstat.c	Wed Jun 27 22:11:31 2012	(r237671)
> +++ stable/8/usr.bin/sockstat/sockstat.c	Wed Jun 27 22:13:40 2012	(r237672)
> @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
>  static int	 opt_4;		/* Show IPv4 sockets */
>  static int	 opt_6;		/* Show IPv6 sockets */
>  static int	 opt_c;		/* Show connected sockets */
> +static int	 opt_j;		/* Show specified jail */
>  static int	 opt_L;		/* Don't show IPv4 or IPv6 loopback sockets */
>  static int	 opt_l;		/* Show listening sockets */
>  static int	 opt_u;		/* Show Unix domain sockets */
> @@ -549,6 +550,27 @@ getprocname(pid_t pid)
>  }
>  
>  static int
> +getprocjid(pid_t pid)
> +{
> +	static struct kinfo_proc proc;
> +	size_t len;
> +	int mib[4];
> +
> +	mib[0] = CTL_KERN;
> +	mib[1] = KERN_PROC;
> +	mib[2] = KERN_PROC_PID;
> +	mib[3] = (int)pid;
> +	len = sizeof proc;
> +	if (sysctl(mib, 4, &proc, &len, NULL, 0) == -1) {
> +		/* Do not warn if the process exits before we get its jid. */
> +		if (errno != ESRCH)
> +			warn("sysctl()");
> +		return (-1);
> +	}
> +	return (proc.ki_jid);
> +}
> +
> +static int
>  check_ports(struct sock *s)
>  {
>  	int port;
> @@ -643,6 +665,8 @@ display(void)
>  	for (xf = xfiles, n = 0; n < nxfiles; ++n, ++xf) {
>  		if (xf->xf_data == NULL)
>  			continue;
> +		if (opt_j >= 0 && opt_j != getprocjid(xf->xf_pid))
> +			continue;
>  		hash = (int)((uintptr_t)xf->xf_data % HASHSIZE);
>  		for (s = sockhash[hash]; s != NULL; s = s->next)
>  			if ((void *)s->socket == xf->xf_data)
> @@ -668,6 +692,8 @@ display(void)
>  		pos += xprintf("%d ", xf->xf_fd);
>  		displaysock(s, pos);
>  	}
> +	if (opt_j >= 0)
> +		return;
>  	for (hash = 0; hash < HASHSIZE; hash++) {
>  		for (s = sockhash[hash]; s != NULL; s = s->next) {
>  			if (s->shown)
> @@ -716,7 +742,8 @@ main(int argc, char *argv[])
>  	int protos_defined = -1;
>  	int o, i;
>  
> -	while ((o = getopt(argc, argv, "46cLlp:P:uv")) != -1)
> +	opt_j = -1;
> +	while ((o = getopt(argc, argv, "46cj:Llp:P:uv")) != -1)
>  		switch (o) {
>  		case '4':
>  			opt_4 = 1;
> @@ -727,6 +754,9 @@ main(int argc, char *argv[])
>  		case 'c':
>  			opt_c = 1;
>  			break;
> +		case 'j':
> +			opt_j = atoi(optarg);
> +			break;
>  		case 'L':
>  			opt_L = 1;
>  			break;
> _______________________________________________
> svn-src-stable-8@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-stable-8
> To unsubscribe, send any mail to "svn-src-stable-8-unsubscribe@freebsd.org"

-- 

 - (2^(N-1))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120627231650.GA7853>