On Tue, Mar 08, 2011 at 03:26:23PM +0100, Claudio Jeker wrote:
>
> I played a bit with it and cleaned up the diff a bit (KNF fixes plus one
> error see below). A few comments inline plus my diff at the end.
>
> > Index: tcpbench.1
> > ===================================================================
> > RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.1,v
> > retrieving revision 1.10
> > diff -d -u -p -w -r1.10 tcpbench.1
> > --- tcpbench.1 26 Oct 2010 20:26:37 -0000 1.10
> > +++ tcpbench.1 6 Mar 2011 19:51:00 -0000
> ...
> > +.It Fl u
> > +Use UDP instead of TCP, this must be specified on both client and
> > +server. Transmitted packets per second (TX PPS) will be accounted on the
> > client
> > +side, while received packets per second (RX PPS) whill be accounted on the
> > +server side. UDP has no Protocol Control Block (PCB) so the
> > +.Fl k
> > +flags don't apply.
>
> This is a lie. UDP has a PCB but that one does not include the tcp
> specific control block (TCB). It would be possible to get the UDP PCB and
> show at least the socket and inpcb specific values. Not sure how usable
> those are (but I would be interested in the socketbuffer stats on the
> reciever).
>
Right, what I wanted to state is that there is no per-proto PCB in UDP (inp_ppcb
member). I didn't find anything useful of showing in in inpcb, but I can change
that if someone wants.
> > Index: tcpbench.c
> > ===================================================================
> > RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.c,v
> > retrieving revision 1.19
> > diff -d -u -p -w -r1.19 tcpbench.c
> > --- tcpbench.c 19 Oct 2010 10:03:23 -0000 1.19
> > +++ tcpbench.c 6 Mar 2011 19:51:00 -0000
>
> > +again:
> > + if ((n = write(sc->fd, sc->buf, sc->buflen)) == -1) {
> > + if (errno == EINTR || errno == EAGAIN || (UDP_MODE && ENOBUFS))
> > + goto again;
>
Wow, how did I miss that :D.
> I fixed this if statement. In UDP_MODE all errors would cause a busy loop.
> E.g. when calling "tcpdump -u -B 32768 127.0.0.1"
>
> > + if (ptb->sflag) {
> > + (void)server_init(aitop, udp_sc);
> > + if (setpgid(0, 0) == -1)
> > + err(1, "setpgid");
>
> I moved the setpgid call into server_init() and made server_init a void
> function. Make more sense that way.
>
Agreed.
--
Christiano Farina HAESBAERT
Do NOT send me html mail.