static void stack_stats_cb(struct ev_loop *loop, ev_timer *w, int revents) { struct stack_config *scfg = w->data; struct uinet_tcpstat stat; int num_open_sockets = 0; size_t len; ev_tstamp timestamp; if (scfg->first_stats) { scfg->first_stats_time = ev_now(loop); scfg->first_stats = 0; } uinet_gettcpstat(scfg->uinst, &stat); len = sizeof(num_open_sockets); uinet_sysctlbyname(scfg->uinst, "kern.ipc.numopensockets", (char *)&num_open_sockets, &len, NULL, 0, NULL, 0); timestamp = ev_now(loop) - scfg->first_stats_time; #define PRINT_TCPSTAT(s) printf("%.6f %s = %llu\n", timestamp, #s, (unsigned long long)stat.s) printf("%.6f num_sockets = %u\n", timestamp, num_open_sockets); PRINT_TCPSTAT(tcps_connects); PRINT_TCPSTAT(tcps_closed); #undef PRINT_TCPSTAT }
static void dump_tcpstat() { struct uinet_tcpstat stat; int perline = 3; int index = 1; #define PRINT_TCPSTAT(s) printf("%-26s= %-10lu%s", #s, stat.s, (index % perline == 0) ? "\n" : " "); index++ uinet_gettcpstat(&stat); printf("========================================================================\n"); PRINT_TCPSTAT(tcps_connattempt); PRINT_TCPSTAT(tcps_accepts); PRINT_TCPSTAT(tcps_connects); PRINT_TCPSTAT(tcps_drops); PRINT_TCPSTAT(tcps_conndrops); PRINT_TCPSTAT(tcps_minmssdrops); PRINT_TCPSTAT(tcps_closed); PRINT_TCPSTAT(tcps_segstimed); PRINT_TCPSTAT(tcps_rttupdated); PRINT_TCPSTAT(tcps_delack); PRINT_TCPSTAT(tcps_timeoutdrop); PRINT_TCPSTAT(tcps_rexmttimeo); PRINT_TCPSTAT(tcps_persisttimeo); PRINT_TCPSTAT(tcps_keeptimeo); PRINT_TCPSTAT(tcps_keepprobe); PRINT_TCPSTAT(tcps_keepdrops); PRINT_TCPSTAT(tcps_sndtotal); PRINT_TCPSTAT(tcps_sndpack); PRINT_TCPSTAT(tcps_sndbyte); PRINT_TCPSTAT(tcps_sndrexmitpack); PRINT_TCPSTAT(tcps_sndrexmitbyte); PRINT_TCPSTAT(tcps_sndrexmitbad); PRINT_TCPSTAT(tcps_sndacks); PRINT_TCPSTAT(tcps_sndprobe); PRINT_TCPSTAT(tcps_sndurg); PRINT_TCPSTAT(tcps_sndwinup); PRINT_TCPSTAT(tcps_sndctrl); PRINT_TCPSTAT(tcps_rcvtotal); PRINT_TCPSTAT(tcps_rcvpack); PRINT_TCPSTAT(tcps_rcvbyte); PRINT_TCPSTAT(tcps_rcvbadsum); PRINT_TCPSTAT(tcps_rcvbadoff); PRINT_TCPSTAT(tcps_rcvmemdrop); PRINT_TCPSTAT(tcps_rcvshort); PRINT_TCPSTAT(tcps_rcvduppack); PRINT_TCPSTAT(tcps_rcvdupbyte); PRINT_TCPSTAT(tcps_rcvpartduppack); PRINT_TCPSTAT(tcps_rcvpartdupbyte); PRINT_TCPSTAT(tcps_rcvoopack); PRINT_TCPSTAT(tcps_rcvoobyte); PRINT_TCPSTAT(tcps_rcvpackafterwin); PRINT_TCPSTAT(tcps_rcvbyteafterwin); PRINT_TCPSTAT(tcps_rcvafterclose); PRINT_TCPSTAT(tcps_rcvwinprobe); PRINT_TCPSTAT(tcps_rcvdupack); PRINT_TCPSTAT(tcps_rcvacktoomuch); PRINT_TCPSTAT(tcps_rcvackpack); PRINT_TCPSTAT(tcps_rcvackbyte); PRINT_TCPSTAT(tcps_rcvwinupd); PRINT_TCPSTAT(tcps_pawsdrop); PRINT_TCPSTAT(tcps_predack); PRINT_TCPSTAT(tcps_preddat); PRINT_TCPSTAT(tcps_pcbcachemiss); PRINT_TCPSTAT(tcps_cachedrtt); PRINT_TCPSTAT(tcps_cachedrttvar); PRINT_TCPSTAT(tcps_cachedssthresh); PRINT_TCPSTAT(tcps_usedrtt); PRINT_TCPSTAT(tcps_usedrttvar); PRINT_TCPSTAT(tcps_usedssthresh); PRINT_TCPSTAT(tcps_persistdrop); PRINT_TCPSTAT(tcps_badsyn); PRINT_TCPSTAT(tcps_mturesent); PRINT_TCPSTAT(tcps_listendrop); PRINT_TCPSTAT(tcps_badrst); PRINT_TCPSTAT(tcps_sc_added); PRINT_TCPSTAT(tcps_sc_retransmitted); PRINT_TCPSTAT(tcps_sc_dupsyn); PRINT_TCPSTAT(tcps_sc_dropped); PRINT_TCPSTAT(tcps_sc_completed); PRINT_TCPSTAT(tcps_sc_bucketoverflow); PRINT_TCPSTAT(tcps_sc_cacheoverflow); PRINT_TCPSTAT(tcps_sc_reset); PRINT_TCPSTAT(tcps_sc_stale); PRINT_TCPSTAT(tcps_sc_aborted); PRINT_TCPSTAT(tcps_sc_badack); PRINT_TCPSTAT(tcps_sc_unreach); PRINT_TCPSTAT(tcps_sc_zonefail); PRINT_TCPSTAT(tcps_sc_sendcookie); PRINT_TCPSTAT(tcps_sc_recvcookie); PRINT_TCPSTAT(tcps_hc_added); PRINT_TCPSTAT(tcps_hc_bucketoverflow); PRINT_TCPSTAT(tcps_finwait2_drops); PRINT_TCPSTAT(tcps_sack_recovery_episode); PRINT_TCPSTAT(tcps_sack_rexmits); PRINT_TCPSTAT(tcps_sack_rexmit_bytes); PRINT_TCPSTAT(tcps_sack_rcv_blocks); PRINT_TCPSTAT(tcps_sack_send_blocks); PRINT_TCPSTAT(tcps_sack_sboverflow); PRINT_TCPSTAT(tcps_ecn_ce); PRINT_TCPSTAT(tcps_ecn_ect0); PRINT_TCPSTAT(tcps_ecn_ect1); PRINT_TCPSTAT(tcps_ecn_shs); PRINT_TCPSTAT(tcps_ecn_rcwnd); PRINT_TCPSTAT(tcps_sig_rcvgoodsig); PRINT_TCPSTAT(tcps_sig_rcvbadsig); PRINT_TCPSTAT(tcps_sig_err_buildsig); PRINT_TCPSTAT(tcps_sig_err_sigopt); PRINT_TCPSTAT(tcps_sig_err_nosigopt); #undef PRINT_TCPSTAT printf("\n"); printf("========================================================================\n"); }