Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin Add a sockstat(1) command that can list open sockets...



details:   https://anonhg.NetBSD.org/src/rev/6998315829eb
branches:  trunk
changeset: 574669:6998315829eb
user:      atatat <atatat%NetBSD.org@localhost>
date:      Wed Mar 09 05:20:05 2005 +0000

description:
Add a sockstat(1) command that can list open sockets and the processes
that own them.  The implementation concept and man page came largely
from FreeBSD, but the program is fresh.

diffstat:

 usr.bin/Makefile            |    4 +-
 usr.bin/sockstat/Makefile   |    5 +
 usr.bin/sockstat/sockstat.1 |  199 +++++++++++++
 usr.bin/sockstat/sockstat.c |  655 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 861 insertions(+), 2 deletions(-)

diffs (truncated from 889 to 300 lines):

diff -r 21de3d8fe2e1 -r 6998315829eb usr.bin/Makefile
--- a/usr.bin/Makefile  Wed Mar 09 05:07:19 2005 +0000
+++ b/usr.bin/Makefile  Wed Mar 09 05:20:05 2005 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.144 2005/01/20 04:26:00 ginsbach Exp $
+#      $NetBSD: Makefile,v 1.145 2005/03/09 05:20:05 atatat Exp $
 #      from: @(#)Makefile      8.3 (Berkeley) 1/7/94
 
 .include <bsd.own.mk>
@@ -20,7 +20,7 @@
        printenv printf progress pwhash qsubst quota radioctl rdist \
        renice rev rlogin rpcgen rpcinfo rs rsh rup ruptime \
        rusers rwall rwho script sed seq shar shlock showmount \
-       shuffle soelim sort split stat su systat tail talk \
+       shuffle sockstat soelim sort split stat su systat tail talk \
        tcopy tee telnet tftp time tip tn3270 top touch tput \
        tr true tset tsort tty ul uname unexpand unifdef \
        uniq units unvis usbhidaction usbhidctl users \
diff -r 21de3d8fe2e1 -r 6998315829eb usr.bin/sockstat/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/sockstat/Makefile Wed Mar 09 05:20:05 2005 +0000
@@ -0,0 +1,5 @@
+#      $NetBSD: Makefile,v 1.1 2005/03/09 05:20:05 atatat Exp $
+
+PROG=          sockstat
+
+.include <bsd.prog.mk>
diff -r 21de3d8fe2e1 -r 6998315829eb usr.bin/sockstat/sockstat.1
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/sockstat/sockstat.1       Wed Mar 09 05:20:05 2005 +0000
@@ -0,0 +1,199 @@
+.\"    $NetBSD: sockstat.1,v 1.1 2005/03/09 05:20:05 atatat Exp $
+.\"-
+.\" Copyright (c) 2005 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Andrew Brown.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of The NetBSD Foundation nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" Copyright (c) 1999 Dag-Erling Coïdan Smørgrav
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer
+.\"    in this position and unchanged.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\"    derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" FreeBSD: src/usr.bin/sockstat/sockstat.1,v 1.19 2004/08/25 16:36:17 roam Exp
+.\"
+.Dd August 25, 2004
+.Dt SOCKSTAT 1
+.Os
+.Sh NAME
+.Nm sockstat
+.Nd list open sockets
+.Sh SYNOPSIS
+.Nm
+.Op Fl 46clu
+.Op Fl f Ar address_family
+.Op Fl p Ar ports
+.Sh DESCRIPTION
+The
+.Nm
+command lists open Internet or
+.Ux
+domain sockets.
+.Pp
+The following options are available:
+.Bl -tag -width Fl
+.It Fl 4
+Show
+.Dv AF_INET
+(IPv4) sockets.
+.It Fl 6
+Show
+.Dv AF_INET6
+(IPv6) sockets.
+.It Fl c
+Show connected sockets.
+.It Fl f Ar address_family
+Limit listed sockets to those of the specified
+.Ar address family .
+The following address families
+are recognized:
+.Ar inet ,
+for
+.Dv AF_INET ;
+.Ar inet6 ,
+for
+.Dv AF_INET6 ;
+and
+.Ar local
+or
+.Ar unix ,
+for
+.Dv AF_LOCAL .
+.It Fl l
+Show listening sockets.
+.It Fl p Ar ports
+Only show Internet sockets if either the local or foreign port number
+is on the specified list.
+The
+.Ar ports
+argument is a comma-separated list of port numbers and ranges
+specified as first and last port separated by a dash.
+.It Fl u
+Show
+.Dv AF_LOCAL
+.Pq Ux
+sockets.
+.El
+.Pp
+If neither
+.Fl 4 , 6
+or
+.Fl u
+is specified,
+.Nm
+will list sockets in all three domains.
+.Pp
+If neither
+.Fl c
+or
+.Fl l
+is specified,
+.Nm
+will list both listening and connected sockets, as well as those
+sockets that are in neither state.
+.Pp
+The information listed for each
+socket is:
+.Bl -tag -width "FOREIGN ADDRESS"
+.It Li USER
+The user who owns the socket.
+.It Li COMMAND
+The command which holds the socket.
+.It Li PID
+The process ID of the command which holds the socket.
+.It Li FD
+The file descriptor number of the socket.
+.It Li PROTO
+The transport protocol associated with the socket for Internet
+sockets, or the type of socket (stream or datagram) for
+.Ux
+sockets.
+.It Li LOCAL ADDRESS
+For Internet sockets, this is the address the local end of the socket
+is bound to (see
+.Xr getsockname 2 ) .
+For bound
+.Ux
+sockets, it is the socket's filename or
+.Dq - .
+.It Li FOREIGN ADDRESS
+The address the foreign end of the socket is bound to (see
+.Xr getpeername 2 )
+or
+.Dq -
+for unconnected
+.Ux
+sockets.
+.El
+.Sh SEE ALSO
+.Xr fstat 1 ,
+.Xr netstat 1 ,
+.Xr inet 4 ,
+.Xr inet6 4 ,
+.Xr unix 4
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Fx 3.1 .
+It was then rewritten for
+.Nx 3.0 .
+.Sh AUTHORS
+This version of the
+.Nm
+command was written by
+.An Andrew Brown
+.Aq atatat%NetBSD.org@localhost .
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des%FreeBSD.org@localhost
+and was adapted to match the
+.Nx
+implementation by
+.An Andrew Brown
+.Aq atatat%NetBSD.org@localhost .
diff -r 21de3d8fe2e1 -r 6998315829eb usr.bin/sockstat/sockstat.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/sockstat/sockstat.c       Wed Mar 09 05:20:05 2005 +0000
@@ -0,0 +1,655 @@
+/*     $NetBSD: sockstat.c,v 1.1 2005/03/09 05:20:05 atatat Exp $ */
+
+/*
+ * Copyright (c) 2005 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Andrew Brown.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__RCSID("$NetBSD: sockstat.c,v 1.1 2005/03/09 05:20:05 atatat Exp $");
+#endif
+
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/socket.h>
+#include <sys/socketvar.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <net/route.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/in_pcb.h>
+#include <netinet/in_pcb_hdr.h>
+#include <netinet/tcp_fsm.h>
+
+#define _KERNEL
+/* want DTYPE_* defines */
+#include <sys/file.h>
+#undef _KERNEL
+
+#include <arpa/inet.h>
+
+#include <bitstring.h>
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <netdb.h>
+#include <pwd.h>
+#include <stdio.h>



Home | Main Index | Thread Index | Old Index