summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1997-02-24 20:40:40 +0000
committerwollman <wollman@FreeBSD.org>1997-02-24 20:40:40 +0000
commitdc73a48dfc8f5e87096998cf06a2a534554f66ee (patch)
tree46ce4121b4d1f8ad875728e152820e1421c96d51 /usr.bin/netstat
parenta174a13af3f3ab7c4603e7530a5089069d6aef33 (diff)
downloadFreeBSD-src-dc73a48dfc8f5e87096998cf06a2a534554f66ee.zip
FreeBSD-src-dc73a48dfc8f5e87096998cf06a2a534554f66ee.tar.gz
Use the new sysctl(3) interface to mbuf statistics rather than
groveling about in kmem.
Diffstat (limited to 'usr.bin/netstat')
-rw-r--r--usr.bin/netstat/mbuf.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/usr.bin/netstat/mbuf.c b/usr.bin/netstat/mbuf.c
index cd751da..cfefa5e 100644
--- a/usr.bin/netstat/mbuf.c
+++ b/usr.bin/netstat/mbuf.c
@@ -36,9 +36,10 @@ static char sccsid[] = "@(#)mbuf.c 8.1 (Berkeley) 6/6/93";
#endif /* not lint */
#include <sys/param.h>
+#include <sys/mbuf.h>
#include <sys/protosw.h>
#include <sys/socket.h>
-#include <sys/mbuf.h>
+#include <sys/sysctl.h>
#include <stdio.h>
#include "netstat.h"
@@ -82,17 +83,28 @@ mbpr(mbaddr)
register int totmem, totfree, totmbufs;
register int i;
register struct mbtypes *mp;
+ int name[3];
+ size_t mbstatlen;
- if (nmbtypes != 256) {
- warnx("unexpected change to mbstat; check source");
+ name[0] = CTL_KERN;
+ name[1] = KERN_IPC;
+ name[2] = KIPC_MBSTAT;
+ mbstatlen = sizeof mbstat;
+
+ if (sysctl(name, 3, &mbstat, &mbstatlen, 0, 0) < 0) {
+ warn("sysctl: retrieving mbstat");
return;
}
- if (mbaddr == 0) {
- warnx("mbstat: symbol not in namelist");
+#undef MSIZE
+#define MSIZE (mbstat.m_msize)
+#undef MCLBYTES
+#define MCLBYTES (mbstat.m_mclbytes)
+
+ if (nmbtypes != 256) {
+ warnx("unexpected change to mbstat; check source");
return;
}
- if (kread(mbaddr, (char *)&mbstat, sizeof (mbstat)))
- return;
+
totmbufs = 0;
for (mp = mbtypes; mp->mt_name; mp++)
totmbufs += mbstat.m_mtypes[mp->mt_type];
OpenPOWER on IntegriCloud