예제 #1
0
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
}
예제 #2
0
파일: passive.c 프로젝트: decland/libuinet
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");
}