nc captures 1024 bytes
John-Mark Gurney
gurney_j at resnet.uoregon.edu
Mon Aug 27 16:46:06 PDT 2007
Weiguang Shi wrote this message on Mon, Aug 27, 2007 at 16:37 -0700:
> To get the larger packets, I have to fix another hard-coded "1024"
This is also a performance problem on slower machines... nc should be
fixed to use larger buffers, maybe to the tune of 64KB if not larger...
W/ TSO, doing 64KB writes makes sense as it could send the entire
segment off to the card...
> 630 readwrite(int nfd)
> 631 {
> 632 struct pollfd pfd[2];
> 633 unsigned char buf[8192];
> 634 int n, wfd = fileno(stdin);
> 635 int lfd = fileno(stdout);
> 636 int plen;
> 637
> 638 plen = jflag ? 8192 : 1024;
> 639
>
> ----- Original Message ----
> From: Weiguang Shi <wgshizz at yahoo.com>
> To: freebsd-net at freebsd.org
> Sent: Monday, August 27, 2007 4:05:26 PM
> Subject: nc captures 1024 bytes
>
> Hi,
>
> My system is FreeBSD 6.2. I sent a UDP datagram of 1464 bytes to port
> 1234 where nc was waiting
> % nc -n -u -l 1234 >tt
>
> Afterwards, the size of tt, however, was only 1024 bytes.
>
> I noticed this piece of code in nc
>
> 341 if (uflag) {
> 342 int rv, plen;
> 343 char buf[8192];
> 344 struct sockaddr_storage z;
> 345
> 346 len = sizeof(z);
> 347 plen = jflag ? 8192 : 1024;
> 348 rv = recvfrom(s, buf, plen, MSG_PEEK,
> 349 (struct sockaddr *)&z, &len);
> 350 if (rv < 0)
> 351 err(1, "recvfrom");
>
> Why 1024 instead of something like 1500-20-8=1472?
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
More information about the freebsd-net
mailing list