aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/netstat/route.c
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/netstat/route.c
parent8f309b9151d7c2f652da4e3124e3d3c0dca04d54 (diff)
downloadsrc-1093cc3199dfc5ab96dc7481517530b936091447.tar.gz
src-1093cc3199dfc5ab96dc7481517530b936091447.zip
Make `rttrash' variable (#routes not in table but not freed) visible
through ``netstat -rs''.
Notes
Notes: svn path=/head/; revision=78958
Diffstat (limited to 'usr.bin/netstat/route.c')
-rw-r--r--usr.bin/netstat/route.c16
1 files changed, 13 insertions, 3 deletions
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 *