summaryrefslogtreecommitdiff
path: root/usr.bin/netstat/inet.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/netstat/inet.c')
-rw-r--r--usr.bin/netstat/inet.c44
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).