On Thu, Feb 04, 2021 at 11:45:26AM +0100, Alexander Bluhm wrote:
> Hi,
> 
> I would like to analyse tcpbench(1) TCP connections.  So I copied
> the nc -D socket debug option.
> 
> ok?

Fine with me. OK claudio@
 
> Index: usr.bin/tcpbench/tcpbench.1
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.bin/tcpbench/tcpbench.1,v
> retrieving revision 1.28
> diff -u -p -r1.28 tcpbench.1
> --- usr.bin/tcpbench/tcpbench.1       4 May 2020 12:13:09 -0000       1.28
> +++ usr.bin/tcpbench/tcpbench.1       3 Feb 2021 22:52:07 -0000
> @@ -24,7 +24,7 @@
>  .Nm
>  .Fl l
>  .Nm
> -.Op Fl 46RUuv
> +.Op Fl 46DRUuv
>  .Op Fl B Ar buf
>  .Op Fl b Ar sourceaddr
>  .Op Fl k Ar kvars
> @@ -39,7 +39,7 @@
>  .Nm
>  .Bk -words
>  .Fl s
> -.Op Fl 46Uuv
> +.Op Fl 46DUuv
>  .Op Fl B Ar buf
>  .Op Fl k Ar kvars
>  .Op Fl p Ar port
> @@ -111,6 +111,8 @@ stream.
>  .It Fl b Ar sourceaddr
>  Specify the IP address to send the packets from,
>  which is useful on machines with multiple interfaces.
> +.It Fl D
> +Enable debugging on the socket.
>  .It Fl k Ar kvars
>  Specify one or more kernel variables to monitor; multiple variables must be
>  separated with commas.
> Index: usr.bin/tcpbench/tcpbench.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.bin/tcpbench/tcpbench.c,v
> retrieving revision 1.63
> diff -u -p -r1.63 tcpbench.c
> --- usr.bin/tcpbench/tcpbench.c       4 May 2020 12:13:09 -0000       1.63
> +++ usr.bin/tcpbench/tcpbench.c       4 Feb 2021 10:37:42 -0000
> @@ -65,6 +65,7 @@
>  
>  /* Our tcpbench globals */
>  struct {
> +     int       Dflag;        /* Socket debug */
>       int       Sflag;        /* Socket buffer size */
>       u_int     rflag;        /* Report rate (ms) */
>       int       sflag;        /* True if server */
> @@ -198,10 +199,10 @@ usage(void)
>  {
>       fprintf(stderr,
>           "usage: tcpbench -l\n"
> -         "       tcpbench [-46RUuv] [-B buf] [-b sourceaddr] [-k kvars] [-n 
> connections]\n"
> +         "       tcpbench [-46DRUuv] [-B buf] [-b sourceaddr] [-k kvars] [-n 
> connections]\n"
>           "                [-p port] [-r interval] [-S space] [-T 
> toskeyword]\n"
>           "                [-t secs] [-V rtable] hostname\n"
> -         "       tcpbench -s [-46Uuv] [-B buf] [-k kvars] [-p port] [-r 
> interval]\n"
> +         "       tcpbench -s [-46DUuv] [-B buf] [-k kvars] [-p port] [-r 
> interval]\n"
>           "                [-S space] [-T toskeyword] [-V rtable] 
> [hostname]\n");
>       exit(1);
>  }
> @@ -857,6 +858,11 @@ server_init(struct addrinfo *aitop)
>                               warn("socket");
>                       continue;
>               }
> +             if (ptb->Dflag) {
> +                     if (setsockopt(sock, SOL_SOCKET, SO_DEBUG,
> +                         &ptb->Dflag, sizeof(ptb->Dflag)))
> +                             err(1, "setsockopt SO_DEBUG");
> +             }
>               if (ptb->Tflag != -1 && ai->ai_family == AF_INET) {
>                       if (setsockopt(sock, IPPROTO_IP, IP_TOS,
>                           &ptb->Tflag, sizeof(ptb->Tflag)))
> @@ -970,6 +976,11 @@ client_init(struct addrinfo *aitop, int 
>                                       warn("socket");
>                               continue;
>                       }
> +                     if (ptb->Dflag) {
> +                             if (setsockopt(sock, SOL_SOCKET, SO_DEBUG,
> +                                 &ptb->Dflag, sizeof(ptb->Dflag)))
> +                                     err(1, "setsockopt SO_DEBUG");
> +                     }
>                       if (aib != NULL) {
>                               saddr_ntop(aib->ai_addr, aib->ai_addrlen,
>                                   tmp, sizeof(tmp));
> @@ -1138,6 +1149,7 @@ main(int argc, char **argv)
>       setvbuf(stdout, NULL, _IOLBF, 0);
>       ptb = &tcpbench;
>       ptb->dummybuf_len = 0;
> +     ptb->Dflag = 0;
>       ptb->Sflag = ptb->sflag = ptb->vflag = ptb->Rflag = ptb->Uflag = 0;
>       ptb->kvmh  = NULL;
>       ptb->kvars = NULL;
> @@ -1147,7 +1159,8 @@ main(int argc, char **argv)
>       aib = NULL;
>       secs = 0;
>  
> -     while ((ch = getopt(argc, argv, "46b:B:hlk:n:p:Rr:sS:t:T:uUvV:")) != 
> -1) {
> +     while ((ch = getopt(argc, argv, "46b:B:Dhlk:n:p:Rr:sS:t:T:uUvV:"))
> +         != -1) {
>               switch (ch) {
>               case '4':
>                       family = PF_INET;
> @@ -1157,6 +1170,9 @@ main(int argc, char **argv)
>                       break;
>               case 'b':
>                       srcbind = optarg;
> +                     break;
> +             case 'D':
> +                     ptb->Dflag = 1;
>                       break;
>               case 'l':
>                       list_kvars();
> 

-- 
:wq Claudio

  • tcpbench -D Alexander Bluhm
    • Re: tcpbench -D Claudio Jeker

Reply via email to