Hi,
The following small diff does the following:
- allows the default to only show all non-listneing scokets, which matches
the manpage and what netstat(1) does, sans the aflag (-a).
- allows one to use 'a' to toggle the above (include listening or not).
- implement [r]eset to reset all toggles to default (all/tcp/udp).
- document a/n/r/t/u toggles.
comments/feedback/ok?
Cheers,
Okan
Index: netstat.c
===================================================================
RCS file: /home/okan/openbsd/cvs/src/usr.bin/systat/netstat.c,v
retrieving revision 1.34
diff -u -p -r1.34 netstat.c
--- netstat.c 2 Mar 2011 06:48:17 -0000 1.34
+++ netstat.c 27 Jan 2012 19:45:53 -0000
@@ -276,15 +276,17 @@ again:
if (!aflag) {
if (!(inpcb.inp_flags & INP_IPV6) &&
- inet_lnaof(inpcb.inp_laddr) == INADDR_ANY)
+ inet_lnaof(inpcb.inp_faddr) == INADDR_ANY)
continue;
if ((inpcb.inp_flags & INP_IPV6) &&
- IN6_IS_ADDR_UNSPECIFIED(&inpcb.inp_laddr6))
+ IN6_IS_ADDR_UNSPECIFIED(&inpcb.inp_faddr6))
continue;
}
KREAD(inpcb.inp_socket, &sockb, sizeof (sockb));
if (istcp) {
KREAD(inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb));
+ if (!aflag && tcpcb.t_state <= TCPS_LISTEN)
+ continue;
enter(&inpcb, &sockb, tcpcb.t_state, "tcp");
} else
enter(&inpcb, &sockb, 0, "udp");
@@ -438,8 +440,18 @@ int
ns_keyboard_callback(int ch)
{
switch (ch) {
+ case 'a':
+ aflag = !aflag;
+ gotsig_alarm = 1;
+ break;
case 'n':
nflag = !nflag;
+ gotsig_alarm = 1;
+ break;
+ case 'r':
+ aflag = 0;
+ nflag = 1;
+ protos = TCP|UDP;
gotsig_alarm = 1;
break;
case 't':
Index: systat.1
===================================================================
RCS file: /home/okan/openbsd/cvs/src/usr.bin/systat/systat.1,v
retrieving revision 1.92
diff -u -p -r1.92 systat.1
--- systat.1 29 Apr 2011 05:48:04 -0000 1.92
+++ systat.1 27 Jan 2012 15:13:55 -0000
@@ -295,49 +295,26 @@ Display mbuf usage information from kern
and mbuf cluster pool statistics of each network interface.
.It Ic netstat
Display network connections.
-By default, network servers awaiting requests are not displayed.
Each address
-is displayed in the format
-.Dq host:port ,
-with each shown symbolically, when possible.
-.\"It is possible to have addresses displayed numerically,
-.\"limit the display to a set of ports, hosts, and/or protocols
-.\"(the minimum unambiguous prefix may be supplied):
-.\".Bl -tag -width Ar
-.\".It Cm all
-.\"Toggle the displaying of server processes awaiting requests (this
-.\"is the equivalent of the
-.\".Fl a
-.\"flag to
-.\".Xr netstat 1 ) .
-.\".It Cm display Op Ar items
-.\"Display information about the connections associated with the
-.\"specified hosts or ports.
-.\"As for
-.\".Ar ignore ,
-.\".Ar items
-.\"may be names or numbers.
-.\".It Cm ignore Op Ar items
-.\"Do not display information about connections associated with
-.\"the specified hosts or ports.
-.\"Hosts and ports may be specified
-.\"by name
-.\".Pf ( Dq vangogh ,
-.\".Dq ftp ) ,
-.\"or numerically.
-.\"Host addresses
-.\"use the Internet dot notation
-.\".Pq Dq 128.32.0.9 .
-.\"Multiple items
-.\"may be specified with a single command by separating them with
-.\"spaces.
-.\".It Cm names
-.\"Display network addresses symbolically.
-.\".It Cm numbers
-.\"Display network addresses numerically.
-.\".It Cm reset
-.\"Reset the port, host, and protocol matching mechanisms to the default
-.\"(any protocol, port, or host).
+is displayed numerically in the format
+.Dq host:port .
+By default, network servers awaiting requests are not displayed.
+It is also possible to have addresses displayed symbolically,
+when possible, and limit the display to a set of protocols
+(the minimum unambiguous prefix may be supplied):
+.Bl -tag -width Ar
+.It Cm all
+Toggle the displaying of server processes awaiting requests (this
+is the equivalent of the
+.Fl a
+flag to
+.Xr netstat 1 ) .
+.It Cm names
+Display network addresses symbolically.
+.It Cm numbers
+Display network addresses numerically.
+.It Cm reset
+Reset matching mechanisms to the default.
.\".It Cm show Oo
.\".Ar protocols \*(Ba ports \*(Ba hosts
.\".Oc
@@ -348,9 +325,9 @@ with each shown symbolically, when possi
.\"If an argument is supplied to
.\".Cm show ,
.\"then only the requested information will be displayed.
-.\".It Cm tcp \*(Ba udp \*(Ba all
-.\"Display only network connections using the indicated protocol.
-.\".El
+.It Cm tcp \*(Ba udp
+Display only network connections using the indicated protocol.
+.El
.It Ic nfsclient
Display statistics about NFS client activity.
Output resembles