Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Oct 2009 21:42:54 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r197875 - projects/capabilities8/usr.bin/netstat
Message-ID:  <200910082142.n98LgsaG034162@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rwatson
Date: Thu Oct  8 21:42:53 2009
New Revision: 197875
URL: http://svn.freebsd.org/changeset/base/197875

Log:
  Manually merge r197777 from head to capabilities8:
  
    netstat(1) support for UNIX SOCK_SEQPACKET sockets -- changes were required
    only for the kvm case, as we supported SOCK_SEQPACKET via sysctl already.
  
    Sponsored by:   Google

Modified:
  projects/capabilities8/usr.bin/netstat/main.c
  projects/capabilities8/usr.bin/netstat/netstat.h
  projects/capabilities8/usr.bin/netstat/unix.c

Modified: projects/capabilities8/usr.bin/netstat/main.c
==============================================================================
--- projects/capabilities8/usr.bin/netstat/main.c	Thu Oct  8 21:37:40 2009	(r197874)
+++ projects/capabilities8/usr.bin/netstat/main.c	Thu Oct  8 21:42:53 2009	(r197875)
@@ -184,6 +184,8 @@ static struct nlist nl[] = {
 	{ .n_name = "_sctpstat" },
 #define	N_MFCTABLESIZE	54
 	{ .n_name = "_mfctablesize" },
+#define	N_UNP_SPHEAD    55
+	{ .n_name = "unp_sphead" },
 	{ .n_name = NULL },
 };
 
@@ -597,7 +599,8 @@ main(int argc, char *argv[])
 #endif /* NETGRAPH */
 	if ((af == AF_UNIX || af == AF_UNSPEC) && !sflag)
 		unixpr(nl[N_UNP_COUNT].n_value, nl[N_UNP_GENCNT].n_value,
-		    nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value);
+		    nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value,
+		    nl[N_UNP_SPHEAD].n_value);
 	exit(0);
 }
 

Modified: projects/capabilities8/usr.bin/netstat/netstat.h
==============================================================================
--- projects/capabilities8/usr.bin/netstat/netstat.h	Thu Oct  8 21:37:40 2009	(r197874)
+++ projects/capabilities8/usr.bin/netstat/netstat.h	Thu Oct  8 21:42:53 2009	(r197875)
@@ -149,7 +149,7 @@ void	ddp_stats(u_long, const char *, int
 void	netgraphprotopr(u_long, const char *, int, int);
 #endif
 
-void	unixpr(u_long, u_long, u_long, u_long);
+void	unixpr(u_long, u_long, u_long, u_long, u_long);
 
 void	esis_stats(u_long, const char *, int, int);
 void	clnp_stats(u_long, const char *, int, int);

Modified: projects/capabilities8/usr.bin/netstat/unix.c
==============================================================================
--- projects/capabilities8/usr.bin/netstat/unix.c	Thu Oct  8 21:37:40 2009	(r197874)
+++ projects/capabilities8/usr.bin/netstat/unix.c	Thu Oct  8 21:42:53 2009	(r197875)
@@ -193,21 +193,37 @@ fail:
 }
 
 void
-unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off)
+unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off,
+    u_long sphead_off)
 {
 	char 	*buf;
 	int	ret, type;
 	struct	xsocket *so;
 	struct	xunpgen *xug, *oxug;
 	struct	xunpcb *xunp;
+	u_long	head_off;
 
 	for (type = SOCK_STREAM; type <= SOCK_SEQPACKET; type++) {
 		if (live)
 			ret = pcblist_sysctl(type, &buf);
-		else
-			ret = pcblist_kvm(count_off, gencnt_off,
-			    type == SOCK_STREAM ? shead_off :
-			    (type == SOCK_DGRAM ? dhead_off : 0), &buf);
+		else {
+			head_off = 0;
+			switch (type) {
+			case SOCK_STREAM:
+				head_off = shead_off;
+				break;
+
+			case SOCK_DGRAM:
+				head_off = dhead_off;
+				break;
+
+			case SOCK_SEQPACKET:
+				head_off = sphead_off;
+				break;
+			}
+			ret = pcblist_kvm(count_off, gencnt_off, head_off,
+			    &buf);
+		}
 		if (ret == -1)
 			continue;
 		if (ret < 0)



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