PERFORCE change 166824 for review
Gabor Pali
pgj at FreeBSD.org
Thu Jul 30 18:33:40 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166824
Change 166824 by pgj at petymeg-current on 2009/07/30 18:33:01
Libnetstatify SPX statistics in netstat(1).
Affected files ...
.. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#24 edit
.. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/ipx.c#4 edit
.. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#32 edit
Differences ...
==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#24 (text+ko) ====
@@ -138,7 +138,7 @@
void routepr(u_long);
void ipxprotopr(u_long, const char *, int, int);
-void spx_stats(u_long, const char *, int, int);
+void spx_stats(const struct stat_type *);
void ipx_stats(const struct stat_type *);
void ipxerr_stats(u_long, const char *, int, int);
==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/ipx.c#4 (text+ko) ====
@@ -154,76 +154,72 @@
* Dump SPX statistics structure.
*/
void
-spx_stats(u_long off, const char *name, int af1 __unused, int proto __unused)
+spx_stats(const struct stat_type *sttp)
{
- struct spx_istat spx_istat;
-#define spxstat spx_istat.newstats
+ const struct spx_stat *s;
- if (off == 0)
- return;
- kread(off, (char *)&spx_istat, sizeof (spx_istat));
- printf("%s:\n", name);
- ANY(spx_istat.nonucn, "connection", " dropped due to no new sockets ");
- ANY(spx_istat.gonawy, "connection", " terminated due to our end dying");
- ANY(spx_istat.nonucn, "connection",
- " dropped due to inability to connect");
- ANY(spx_istat.noconn, "connection",
- " dropped due to inability to connect");
- ANY(spx_istat.notme, "connection",
- " incompleted due to mismatched id's");
- ANY(spx_istat.wrncon, "connection", " dropped due to mismatched id's");
- ANY(spx_istat.bdreas, "packet", " dropped out of sequence");
- ANY(spx_istat.lstdup, "packet", " duplicating the highest packet");
- ANY(spx_istat.notyet, "packet", " refused as exceeding allocation");
- ANYl(spxstat.spxs_connattempt, "connection", " initiated");
- ANYl(spxstat.spxs_accepts, "connection", " accepted");
- ANYl(spxstat.spxs_connects, "connection", " established");
- ANYl(spxstat.spxs_drops, "connection", " dropped");
- ANYl(spxstat.spxs_conndrops, "embryonic connection", " dropped");
- ANYl(spxstat.spxs_closed, "connection", " closed (includes drops)");
- ANYl(spxstat.spxs_segstimed, "packet", " where we tried to get rtt");
- ANYl(spxstat.spxs_rttupdated, "time", " we got rtt");
- ANYl(spxstat.spxs_delack, "delayed ack", " sent");
- ANYl(spxstat.spxs_timeoutdrop, "connection",
- " dropped in rxmt timeout");
- ANYl(spxstat.spxs_rexmttimeo, "retransmit timeout", "");
- ANYl(spxstat.spxs_persisttimeo, "persist timeout", "");
- ANYl(spxstat.spxs_keeptimeo, "keepalive timeout", "");
- ANYl(spxstat.spxs_keepprobe, "keepalive probe", " sent");
- ANYl(spxstat.spxs_keepdrops, "connection", " dropped in keepalive");
- ANYl(spxstat.spxs_sndtotal, "total packet", " sent");
- ANYl(spxstat.spxs_sndpack, "data packet", " sent");
- ANYl(spxstat.spxs_sndbyte, "data byte", " sent");
- ANYl(spxstat.spxs_sndrexmitpack, "data packet", " retransmitted");
- ANYl(spxstat.spxs_sndrexmitbyte, "data byte", " retransmitted");
- ANYl(spxstat.spxs_sndacks, "ack-only packet", " sent");
- ANYl(spxstat.spxs_sndprobe, "window probe", " sent");
- ANYl(spxstat.spxs_sndurg, "packet", " sent with URG only");
- ANYl(spxstat.spxs_sndwinup, "window update-only packet", " sent");
- ANYl(spxstat.spxs_sndctrl, "control (SYN|FIN|RST) packet", " sent");
- ANYl(spxstat.spxs_sndvoid, "request", " to send a non-existant packet");
- ANYl(spxstat.spxs_rcvtotal, "total packet", " received");
- ANYl(spxstat.spxs_rcvpack, "packet", " received in sequence");
- ANYl(spxstat.spxs_rcvbyte, "byte", " received in sequence");
- ANYl(spxstat.spxs_rcvbadsum, "packet", " received with ccksum errs");
- ANYl(spxstat.spxs_rcvbadoff, "packet", " received with bad offset");
- ANYl(spxstat.spxs_rcvshort, "packet", " received too short");
- ANYl(spxstat.spxs_rcvduppack, "duplicate-only packet", " received");
- ANYl(spxstat.spxs_rcvdupbyte, "duplicate-only byte", " received");
- ANYl(spxstat.spxs_rcvpartduppack, "packet",
- " with some duplicate data");
- ANYl(spxstat.spxs_rcvpartdupbyte, "dup. byte", " in part-dup. packet");
- ANYl(spxstat.spxs_rcvoopack, "out-of-order packet", " received");
- ANYl(spxstat.spxs_rcvoobyte, "out-of-order byte", " received");
- ANYl(spxstat.spxs_rcvpackafterwin, "packet", " with data after window");
- ANYl(spxstat.spxs_rcvbyteafterwin, "byte", " rcvd after window");
- ANYl(spxstat.spxs_rcvafterclose, "packet", " rcvd after 'close'");
- ANYl(spxstat.spxs_rcvwinprobe, "rcvd window probe packet", "");
- ANYl(spxstat.spxs_rcvdupack, "rcvd duplicate ack", "");
- ANYl(spxstat.spxs_rcvacktoomuch, "rcvd ack", " for unsent data");
- ANYl(spxstat.spxs_rcvackpack, "rcvd ack packet", "");
- ANYl(spxstat.spxs_rcvackbyte, "byte", " acked by rcvd acks");
- ANYl(spxstat.spxs_rcvwinupd, "rcvd window update packet", "");
+ s = netstat_get_spxstats(sttp);
+#define p(x,y,z) \
+ if (netstat_spxs_get_##x(s) || sflag <= 1) \
+ printf("\t%ju %s%s%s\n", netstat_spxs_get_##x(s), y, \
+ plural(netstat_spxs_get_##x(s)), z)
+ p(nonucn, "connection", " dropped due to no new sockets ");
+ p(gonawy, "connection", " terminated due to our end dying");
+ p(nonucn, "connection", " dropped due to inability to connect");
+ p(noconn, "connection", " dropped due to inability to connect");
+ p(notme, "connection", " incompleted due to mismatched id's");
+ p(wrncon, "connection", " dropped due to mismatched id's");
+ p(bdreas, "packet", " dropped out of sequence");
+ p(lstdup, "packet", " duplicating the highest packet");
+ p(notyet, "packet", " refused as exceeding allocation");
+ p(connattempt, "connection", " initiated");
+ p(accepts, "connection", " accepted");
+ p(connects, "connection", " established");
+ p(drops, "connection", " dropped");
+ p(conndrops, "embryonic connection", " dropped");
+ p(closed, "connection", " closed (includes drops)");
+ p(segstimed, "packet", " where we tried to get rtt");
+ p(rttupdated, "time", " we got rtt");
+ p(delack, "delayed ack", " sent");
+ p(timeoutdrop, "connection", " dropped in rxmt timeout");
+ p(rexmttimeo, "retransmit timeout", "");
+ p(persisttimeo, "persist timeout", "");
+ p(keeptimeo, "keepalive timeout", "");
+ p(keepprobe, "keepalive probe", " sent");
+ p(keepdrops, "connection", " dropped in keepalive");
+ p(sndtotal, "total packet", " sent");
+ p(sndpack, "data packet", " sent");
+ p(sndbyte, "data byte", " sent");
+ p(sndrexmitpack, "data packet", " retransmitted");
+ p(sndrexmitbyte, "data byte", " retransmitted");
+ p(sndacks, "ack-only packet", " sent");
+ p(sndprobe, "window probe", " sent");
+ p(sndurg, "packet", " sent with URG only");
+ p(sndwinup, "window update-only packet", " sent");
+ p(sndctrl, "control (SYN|FIN|RST) packet", " sent");
+ p(sndvoid, "request", " to send a non-existant packet");
+ p(rcvtotal, "total packet", " received");
+ p(rcvpack, "packet", " received in sequence");
+ p(rcvbyte, "byte", " received in sequence");
+ p(rcvbadsum, "packet", " received with ccksum errs");
+ p(rcvbadoff, "packet", " received with bad offset");
+ p(rcvshort, "packet", " received too short");
+ p(rcvduppack, "duplicate-only packet", " received");
+ p(rcvdupbyte, "duplicate-only byte", " received");
+ p(rcvpartduppack, "packet", " with some duplicate data");
+ p(rcvpartdupbyte, "dup. byte", " in part-dup. packet");
+ p(rcvoopack, "out-of-order packet", " received");
+ p(rcvoobyte, "out-of-order byte", " received");
+ p(rcvpackafterwin, "packet", " with data after window");
+ p(rcvbyteafterwin, "byte", " rcvd after window");
+ p(rcvafterclose, "packet", " rcvd after 'close'");
+ p(rcvwinprobe, "rcvd window probe packet", "");
+ p(rcvdupack, "rcvd duplicate ack", "");
+ p(rcvacktoomuch, "rcvd ack", " for unsent data");
+ p(rcvackpack, "rcvd ack packet", "");
+ p(rcvackbyte, "byte", " acked by rcvd acks");
+ p(rcvwinupd, "rcvd window update packet", "");
+#undef p
}
/*
==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#32 (text+ko) ====
@@ -89,37 +89,35 @@
{ .n_name = "_viftable" },
#define N_IPX 5
{ .n_name = "_ipxpcb_list"},
-#define N_SPXSTAT 6
- { .n_name = "_spx_istat"},
-#define N_DDPCB 7
+#define N_DDPCB 6
{ .n_name = "_ddpcb"},
-#define N_NGSOCKS 8
+#define N_NGSOCKS 7
{ .n_name = "_ngsocklist"},
-#define N_IP6STAT 9
+#define N_IP6STAT 8
{ .n_name = "_ip6stat" },
-#define N_IPSECSTAT 10
+#define N_IPSECSTAT 9
{ .n_name = "_ipsec4stat" },
-#define N_IPSEC6STAT 11
+#define N_IPSEC6STAT 10
{ .n_name = "_ipsec6stat" },
-#define N_MRT6STAT 12
+#define N_MRT6STAT 11
{ .n_name = "_mrt6stat" },
-#define N_MF6CTABLE 13
+#define N_MF6CTABLE 12
{ .n_name = "_mf6ctable" },
-#define N_MIF6TABLE 14
+#define N_MIF6TABLE 13
{ .n_name = "_mif6table" },
-#define N_PFKEYSTAT 15
+#define N_PFKEYSTAT 14
{ .n_name = "_pfkeystat" },
-#define N_RTTRASH 16
+#define N_RTTRASH 15
{ .n_name = "_rttrash" },
-#define N_PFSYNCSTAT 17
+#define N_PFSYNCSTAT 16
{ .n_name = "_pfsyncstats" },
-#define N_AHSTAT 18
+#define N_AHSTAT 17
{ .n_name = "_ahstat" },
-#define N_ESPSTAT 19
+#define N_ESPSTAT 18
{ .n_name = "_espstat" },
-#define N_IPCOMPSTAT 20
+#define N_IPCOMPSTAT 19
{ .n_name = "_ipcompstat" },
-#define N_MFCTABLESIZE 21
+#define N_MFCTABLESIZE 20
{ .n_name = "_mfctablesize" },
{ .n_name = NULL },
};
@@ -229,8 +227,8 @@
struct protox ipxprotox[] = {
{ N_IPX, 0, 1, ipxprotopr, ipx_stats, stat_IPX,
NULL, NULL, "ipx", 0, 0 },
- { N_IPX, N_SPXSTAT, 1, ipxprotopr, NULL, stat_MAX,
- spx_stats, NULL, "spx", 0, 0 },
+ { N_IPX, 0, 1, ipxprotopr, spx_stats, stat_SPX,
+ NULL, NULL, "spx", 0, 0 },
{ -1, -1, 0, NULL, NULL, stat_MAX,
NULL, NULL, 0, 0, 0 }
};
More information about the p4-projects
mailing list