? tcpbench.d Index: tcpbench.c =================================================================== RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.c,v retrieving revision 1.65 diff -u -p -r1.65 tcpbench.c --- tcpbench.c 12 Jul 2021 15:09:20 -0000 1.65 +++ tcpbench.c 20 May 2022 13:19:01 -0000 @@ -55,6 +55,8 @@ #include #include +#define pledge(_list, _exec) (0) + #define DEFAULT_PORT "12345" #define DEFAULT_STATS_INTERVAL 1000 /* ms */ #define DEFAULT_BUF (256 * 1024) @@ -65,6 +67,7 @@ /* Our tcpbench globals */ struct { + int iflag; /* TCP_INFO */ int Dflag; /* Socket debug */ int Sflag; /* Socket buffer size */ u_int rflag; /* Report rate (ms) */ @@ -605,6 +608,8 @@ tcp_process_slice(int fd, short event, v struct inpcb inpcb; struct tcpcb tcpcb; struct socket sockb; + struct tcp_info tcpi; + socklen_t tcpilen; if (TAILQ_EMPTY(&sc_queue)) return; /* don't pollute stats */ @@ -617,6 +622,23 @@ tcp_process_slice(int fd, short event, v if (ptb->kvars != NULL) /* process kernel stats */ kupdate_stats(sc->tcp_tcbaddr, &inpcb, &tcpcb, &sockb); + if (ptb->iflag) { + tcpilen = sizeof(tcpi); + if (getsockopt(sc->fd, IPPROTO_TCP, TCP_INFO, + &tcpi, &tcpilen) == -1) + err(1, "get tcp_info"); + + printf("tcpi rtt %u rttvar %u\n", + tcpi.tcpi_rtt, tcpi.tcpi_rttvar); + printf("tcpi snd mss %u rcv mss %u\n", + tcpi.tcpi_snd_mss, tcpi.tcpi_rcv_mss); + printf("tcpi snd mss %u rcv space %u\n", + tcpi.tcpi_snd_mss, tcpi.tcpi_rcv_space); + printf("tcpi tcpi_rcv_ooopack %u\n", + tcpi.tcpi_rcv_ooopack); + printf("tcpi tcpi_snd_zerowin %u\n", + tcpi.tcpi_snd_zerowin); + } timersub(&t_cur, &sc->t_start, &t_diff); total_elapsed = t_diff.tv_sec * 1000 + t_diff.tv_usec / 1000; @@ -1159,7 +1181,7 @@ main(int argc, char **argv) aib = NULL; secs = 0; - while ((ch = getopt(argc, argv, "46b:B:Dhlk:n:p:Rr:sS:t:T:uUvV:")) + while ((ch = getopt(argc, argv, "46b:B:Dhilk:n:p:Rr:sS:t:T:uUvV:")) != -1) { switch (ch) { case '4': @@ -1174,6 +1196,9 @@ main(int argc, char **argv) case 'D': ptb->Dflag = 1; break; + case 'i': + ptb->iflag = 1; + break; case 'l': list_kvars(); exit(0); @@ -1411,7 +1436,7 @@ main(int argc, char **argv) } client_init(aitop, nconn, aib); - if (pledge("stdio", NULL) == -1) + if (pledge("stdio inet", NULL) == -1) err(1, "pledge"); }