diff options
Diffstat (limited to 'usr.bin/netstat/inet.c')
-rw-r--r-- | usr.bin/netstat/inet.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/usr.bin/netstat/inet.c b/usr.bin/netstat/inet.c index ed80baea14c5..cb7a29eeb1c5 100644 --- a/usr.bin/netstat/inet.c +++ b/usr.bin/netstat/inet.c @@ -34,7 +34,7 @@ #ifndef lint /* From: static char sccsid[] = "@(#)inet.c 5.15 (Berkeley) 6/18/90"; */ static const char inet_c_rcsid[] = - "$Id: inet.c,v 1.2 1993/11/17 20:19:20 wollman Exp $"; + "$Id: inet.c,v 1.3 1994/05/17 21:10:15 jkh Exp $"; #endif /* not lint */ @@ -51,6 +51,7 @@ static const char inet_c_rcsid[] = #include <netinet/in_pcb.h> #include <netinet/ip_icmp.h> #include <netinet/icmp_var.h> +#include <netinet/igmp_var.h> #include <netinet/ip_var.h> #include <netinet/tcp.h> #include <netinet/tcpip.h> @@ -342,6 +343,47 @@ icmp_stats(off, name) printf("\t%u message response%s generated\n", icmpstat.icps_reflect, plural(icmpstat.icps_reflect)); } + +char* +pluraly(n) +{ + return (n == 1? "y" : "ies"); +} + +/* + * Dump IGMP statistics. + */ +void +igmp_stats(off, name) + off_t off; + char *name; +{ + struct igmpstat igmpstat; + register int i, first; + + if (off == 0) + return; + kvm_read(off, (char *)&igmpstat, sizeof (igmpstat)); + printf("%s:\n", name ); + printf("\t%u message%s received\n", + igmpstat.igps_rcv_total, plural(igmpstat.igps_rcv_total)); + printf("\t%u message%s received with too few bytes\n", + igmpstat.igps_rcv_tooshort, plural(igmpstat.igps_rcv_tooshort)); + printf("\t%u message%s received with bad checksum\n", + igmpstat.igps_rcv_badsum, plural(igmpstat.igps_rcv_badsum)); + printf("\t%u membership quer%s received\n", + igmpstat.igps_rcv_queries, pluraly(igmpstat.igps_rcv_queries)); + printf("\t%u membership quer%s received with invalid field(s)\n", + igmpstat.igps_rcv_badqueries, pluraly(igmpstat.igps_rcv_badqueries)); + printf("\t%u membership report%s received\n", + igmpstat.igps_rcv_reports, plural(igmpstat.igps_rcv_reports)); + printf("\t%u membership report%s received with invalid field(s)\n", + igmpstat.igps_rcv_badreports, plural(igmpstat.igps_rcv_badreports)); + printf("\t%u membership report%s received for groups to which we belong\n", + igmpstat.igps_rcv_ourreports, plural(igmpstat.igps_rcv_ourreports)); + printf("\t%u membership report%s sent\n", + igmpstat.igps_snd_reports, plural(igmpstat.igps_snd_reports)); +} /* * Pretty print an Internet address (net address + port). |