Hi tech@,

Per my understanding, the tcpbench.Sflag (Socket buffer size) should
only take effect when working in TCP mode. But according to my testing,
it also works when tcpbench client is in UDP mode:

(1) Set buffer size less than DEFAULT_UDP_PKT (1500 - 28):
# tcpbench -u -S 1471 127.0.0.1
tcpbench: write: Message too long

(2) Set buffer size too long:
# tcpbench -u -S 100000000 127.0.0.1
tcpbench: set TCP send buffer size: No buffer space available
......

So I think maybe it is need to check whether client is in TCP mode
before setting buffer size, and apologize if I am wrong:

Index: tcpbench.c
===================================================================
RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.c,v
retrieving revision 1.52
diff -u -p -r1.52 tcpbench.c
--- tcpbench.c  19 Sep 2016 18:58:39 -0000      1.52
+++ tcpbench.c  10 May 2018 06:55:50 -0000
@@ -892,7 +892,7 @@ client_init(struct addrinfo *aitop, int
                                    &ptb->Tflag, sizeof(ptb->Tflag)))
                                        err(1, "setsockopt IPV6_TCLASS");
                        }
-                       if (ptb->Sflag) {
+                       if (TCP_MODE && ptb->Sflag) {
                                if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF,
                                    &ptb->Sflag, sizeof(ptb->Sflag)) == -1)
                                        warn("set TCP send buffer size");

-- 
Best Regards
Nan Xiao

Reply via email to