Date: Mon, 27 Aug 2007 16:46:04 -0700 From: John-Mark Gurney <gurney_j@resnet.uoregon.edu> To: Weiguang Shi <wgshizz@yahoo.com> Cc: freebsd-net@freebsd.org Subject: Re: nc captures 1024 bytes Message-ID: <20070827234604.GU99491@funkthat.com> In-Reply-To: <43862.94241.qm@web43132.mail.sp1.yahoo.com> References: <43862.94241.qm@web43132.mail.sp1.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@yahoo.com>
> To: freebsd-net@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."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070827234604.GU99491>
