aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2001-06-29 09:08:24 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2001-06-29 09:08:24 +0000
commit1093cc3199dfc5ab96dc7481517530b936091447 (patch)
treec621cd19dc91813a460c34331a8882637398609f /usr.bin
parent8f309b9151d7c2f652da4e3124e3d3c0dca04d54 (diff)
Notes
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/netstat/main.c4
-rw-r--r--usr.bin/netstat/netstat.h2
-rw-r--r--usr.bin/netstat/route.c16
3 files changed, 17 insertions, 5 deletions
diff --git a/usr.bin/netstat/main.c b/usr.bin/netstat/main.c
index a6e9966240f9..4f373d1161e2 100644
--- a/usr.bin/netstat/main.c
+++ b/usr.bin/netstat/main.c
@@ -163,6 +163,8 @@ static struct nlist nl[] = {
{ "_pagesize" },
#define N_MBPSTAT 46
{ "_mb_statpcpu" },
+#define N_RTTRASH 47
+ { "_rttrash" },
{ "" },
};
@@ -532,7 +534,7 @@ main(argc, argv)
if (rflag) {
kread(0, 0, 0);
if (sflag)
- rt_stats(nl[N_RTSTAT].n_value);
+ rt_stats(nl[N_RTSTAT].n_value, nl[N_RTTRASH].n_value);
else
routepr(nl[N_RTREE].n_value);
exit(0);
diff --git a/usr.bin/netstat/netstat.h b/usr.bin/netstat/netstat.h
index f4411e6f5dc3..3efa21e7f807 100644
--- a/usr.bin/netstat/netstat.h
+++ b/usr.bin/netstat/netstat.h
@@ -106,7 +106,7 @@ void intpr (int, u_long, void (*)(char *));
void pr_rthdr (int);
void pr_family (int);
-void rt_stats (u_long);
+void rt_stats (u_long, u_long);
char *ipx_pnet (struct sockaddr *);
char *ipx_phost (struct sockaddr *);
char *ns_phost (struct sockaddr *);
diff --git a/usr.bin/netstat/route.c b/usr.bin/netstat/route.c
index 28315390c8bc..4390a2e4f920 100644
--- a/usr.bin/netstat/route.c
+++ b/usr.bin/netstat/route.c
@@ -851,15 +851,21 @@ routename6(struct sockaddr_in6 *sa6)
* Print routing statistics
*/
void
-rt_stats(u_long off)
+rt_stats(u_long rtsaddr, u_long rttaddr)
{
struct rtstat rtstat;
+ int rttrash;
- if (off == 0) {
+ if (rtsaddr == 0) {
printf("rtstat: symbol not in namelist\n");
return;
}
- kread(off, (char *)&rtstat, sizeof (rtstat));
+ if (rttaddr == 0) {
+ printf("rttrash: symbol not in namelist\n");
+ return;
+ }
+ kread(rtsaddr, (char *)&rtstat, sizeof (rtstat));
+ kread(rttaddr, (char *)&rttrash, sizeof (rttrash));
printf("routing:\n");
#define p(f, m) if (rtstat.f || sflag <= 1) \
@@ -871,6 +877,10 @@ rt_stats(u_long off)
p(rts_unreach, "\t%u destination%s found unreachable\n");
p(rts_wildcard, "\t%u use%s of a wildcard route\n");
#undef p
+
+ if (rttrash || sflag <= 1)
+ printf("\t%u route%s not in table but not freed\n",
+ rttrash, plural(rttrash));
}
char *