Date: Thu, 30 Jul 2009 18:33:39 GMT From: Gabor Pali <pgj@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 166824 for review Message-ID: <200907301833.n6UIXdKG005608@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=166824 Change 166824 by pgj@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 } };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907301833.n6UIXdKG005608>