summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-06-14 15:45:09 +0000
committerru <ru@FreeBSD.org>2001-06-14 15:45:09 +0000
commitbf0e940d3c46e6420e5bc6760b2340164800d440 (patch)
tree355a0dea4d821b23b4b9611c08a8a37d57fb0917 /usr.bin/netstat
parent1122486743c04a141d79ea166612f06d2c54325c (diff)
downloadFreeBSD-src-bf0e940d3c46e6420e5bc6760b2340164800d440.zip
FreeBSD-src-bf0e940d3c46e6420e5bc6760b2340164800d440.tar.gz
Restore -M -N support for -m.
PR: 20808
Diffstat (limited to 'usr.bin/netstat')
-rw-r--r--usr.bin/netstat/main.c22
-rw-r--r--usr.bin/netstat/mbuf.c71
-rw-r--r--usr.bin/netstat/netstat.16
-rw-r--r--usr.bin/netstat/netstat.h2
4 files changed, 69 insertions, 32 deletions
diff --git a/usr.bin/netstat/main.c b/usr.bin/netstat/main.c
index 1981e44..293e899 100644
--- a/usr.bin/netstat/main.c
+++ b/usr.bin/netstat/main.c
@@ -145,6 +145,14 @@ static struct nlist nl[] = {
{ "_mif6table" },
#define N_PFKEYSTAT 37
{ "_pfkeystat" },
+#define N_MBSTAT 38
+ { "_mbstat" },
+#define N_MBTYPES 39
+ { "_mbtypes" },
+#define N_NMBCLUSTERS 40
+ { "_nmbclusters" },
+#define N_NMBUFS 41
+ { "_nmbufs" },
{ "" },
};
@@ -467,7 +475,14 @@ main(argc, argv)
setgid(getgid());
if (mflag) {
- mbpr();
+ if (memf != NULL) {
+ if (kread(0, 0, 0) == 0)
+ mbpr(nl[N_MBSTAT].n_value,
+ nl[N_MBTYPES].n_value,
+ nl[N_NMBCLUSTERS].n_value,
+ nl[N_NMBUFS].n_value);
+ } else
+ mbpr(0, 0, 0, 0);
exit(0);
}
if (pflag) {
@@ -723,10 +738,11 @@ name2protox(name)
static void
usage()
{
- (void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
+ (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n",
"usage: netstat [-AaLlnW] [-f address_family] [-M core] [-N system]",
-" netstat [-abdgilmnrs] [-f address_family] [-M core] [-N system]",
+" netstat [-abdgilnrs] [-f address_family] [-M core] [-N system]",
" netstat [-bdn] [-I interface] [-M core] [-N system] [-w wait]",
+" netstat -m [-M core] [-N system]",
" netstat [-M core] [-N system] [-p protocol]");
exit(1);
}
diff --git a/usr.bin/netstat/mbuf.c b/usr.bin/netstat/mbuf.c
index f07da00..5e8224b 100644
--- a/usr.bin/netstat/mbuf.c
+++ b/usr.bin/netstat/mbuf.c
@@ -53,8 +53,6 @@ static const char rcsid[] =
#define YES 1
typedef int bool;
-struct mbstat mbstat;
-
static struct mbtypenames {
int mt_type;
char *mt_name;
@@ -96,10 +94,12 @@ static struct mbtypenames {
* Print mbuf statistics.
*/
void
-mbpr()
+mbpr(mbaddr, mbtaddr, nmbcaddr, nmbufaddr)
+ u_long mbaddr, mbtaddr, nmbcaddr, nmbufaddr;
{
u_long totmem, totpossible, totmbufs;
register int i;
+ struct mbstat mbstat;
struct mbtypenames *mp;
int name[3], nmbclusters, nmbufs, nmbcnt, nmbtypes;
size_t nmbclen, nmbuflen, nmbcntlen, mbstatlen, mbtypeslen;
@@ -109,15 +109,11 @@ mbpr()
mbtypes = NULL;
seen = NULL;
- 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");
- goto err;
- }
-
+ /*
+ * XXX
+ * We can't kread() mbtypeslen from a core image so we'll
+ * bogusly assume it's the same as in the running kernel.
+ */
if (sysctlbyname("kern.ipc.mbtypes", NULL, &mbtypeslen, NULL, 0) < 0) {
warn("sysctl: retrieving mbtypes length");
goto err;
@@ -126,29 +122,50 @@ mbpr()
warn("malloc: %lu bytes for mbtypes", (u_long)mbtypeslen);
goto err;
}
- if (sysctlbyname("kern.ipc.mbtypes", mbtypes, &mbtypeslen, NULL,
- 0) < 0) {
- warn("sysctl: retrieving mbtypes");
- goto err;
- }
nmbtypes = mbtypeslen / sizeof(*mbtypes);
if ((seen = calloc(nmbtypes, sizeof(*seen))) == NULL) {
warn("calloc");
goto err;
}
+
+ if (mbaddr) {
+ if (kread(mbaddr, (char *)&mbstat, sizeof mbstat))
+ goto err;
+ if (kread(mbtaddr, (char *)mbtypes, mbtypeslen))
+ goto err;
+ if (kread(nmbcaddr, (char *)&nmbclusters, sizeof(int)))
+ goto err;
+ if (kread(nmbufaddr, (char *)&nmbufs, sizeof(int)))
+ goto err;
+ } else {
+ 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");
+ goto err;
+ }
+
+ if (sysctlbyname("kern.ipc.mbtypes", mbtypes, &mbtypeslen, NULL,
+ 0) < 0) {
+ warn("sysctl: retrieving mbtypes");
+ goto err;
+ }
- name[2] = KIPC_NMBCLUSTERS;
- nmbclen = sizeof(int);
- if (sysctl(name, 3, &nmbclusters, &nmbclen, 0, 0) < 0) {
- warn("sysctl: retrieving nmbclusters");
- goto err;
- }
+ name[2] = KIPC_NMBCLUSTERS;
+ nmbclen = sizeof(int);
+ if (sysctl(name, 3, &nmbclusters, &nmbclen, 0, 0) < 0) {
+ warn("sysctl: retrieving nmbclusters");
+ goto err;
+ }
- nmbuflen = sizeof(int);
- if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &nmbuflen, 0, 0) < 0) {
- warn("sysctl: retrieving nmbufs");
- goto err;
+ nmbuflen = sizeof(int);
+ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &nmbuflen, 0, 0) < 0) {
+ warn("sysctl: retrieving nmbufs");
+ goto err;
+ }
}
nmbcntlen = sizeof(int);
diff --git a/usr.bin/netstat/netstat.1 b/usr.bin/netstat/netstat.1
index 3b45526..8f53bd1 100644
--- a/usr.bin/netstat/netstat.1
+++ b/usr.bin/netstat/netstat.1
@@ -45,7 +45,7 @@
.Op Fl M Ar core
.Op Fl N Ar system
.Nm
-.Op Fl bdgilmnrs
+.Op Fl bdgilnrs
.Op Fl f Ar address_family
.Op Fl M Ar core
.Op Fl N Ar system
@@ -68,6 +68,10 @@
.Op Fl f Ar address_family
.Op Fl i
.Op Fl I Ar Interface
+.Nm
+.Fl m
+.Op Fl M Ar core
+.Op Fl N Ar system
.Sh DESCRIPTION
The
.Nm
diff --git a/usr.bin/netstat/netstat.h b/usr.bin/netstat/netstat.h
index 012ca9b..997750c 100644
--- a/usr.bin/netstat/netstat.h
+++ b/usr.bin/netstat/netstat.h
@@ -95,7 +95,7 @@ void pfkey_stats __P((u_long, char *));
void bdg_stats __P((u_long, char *));
-void mbpr __P((void));
+void mbpr __P((u_long, u_long, u_long, u_long));
void hostpr __P((u_long, u_long));
void impstats __P((u_long, u_long));
OpenPOWER on IntegriCloud