head 1.4; access; symbols pkgsrc-2026Q1:1.4.0.56 pkgsrc-2026Q1-base:1.4 pkgsrc-2025Q4:1.4.0.54 pkgsrc-2025Q4-base:1.4 pkgsrc-2025Q3:1.4.0.52 pkgsrc-2025Q3-base:1.4 pkgsrc-2025Q2:1.4.0.50 pkgsrc-2025Q2-base:1.4 pkgsrc-2025Q1:1.4.0.48 pkgsrc-2025Q1-base:1.4 pkgsrc-2024Q4:1.4.0.46 pkgsrc-2024Q4-base:1.4 pkgsrc-2024Q3:1.4.0.44 pkgsrc-2024Q3-base:1.4 pkgsrc-2024Q2:1.4.0.42 pkgsrc-2024Q2-base:1.4 pkgsrc-2024Q1:1.4.0.40 pkgsrc-2024Q1-base:1.4 pkgsrc-2023Q4:1.4.0.38 pkgsrc-2023Q4-base:1.4 pkgsrc-2023Q3:1.4.0.36 pkgsrc-2023Q3-base:1.4 pkgsrc-2023Q2:1.4.0.34 pkgsrc-2023Q2-base:1.4 pkgsrc-2023Q1:1.4.0.32 pkgsrc-2023Q1-base:1.4 pkgsrc-2022Q4:1.4.0.30 pkgsrc-2022Q4-base:1.4 pkgsrc-2022Q3:1.4.0.28 pkgsrc-2022Q3-base:1.4 pkgsrc-2022Q2:1.4.0.26 pkgsrc-2022Q2-base:1.4 pkgsrc-2022Q1:1.4.0.24 pkgsrc-2022Q1-base:1.4 pkgsrc-2021Q4:1.4.0.22 pkgsrc-2021Q4-base:1.4 pkgsrc-2021Q3:1.4.0.20 pkgsrc-2021Q3-base:1.4 pkgsrc-2021Q2:1.4.0.18 pkgsrc-2021Q2-base:1.4 pkgsrc-2021Q1:1.4.0.16 pkgsrc-2021Q1-base:1.4 pkgsrc-2020Q4:1.4.0.14 pkgsrc-2020Q4-base:1.4 pkgsrc-2020Q3:1.4.0.12 pkgsrc-2020Q3-base:1.4 pkgsrc-2020Q2:1.4.0.10 pkgsrc-2020Q2-base:1.4 pkgsrc-2020Q1:1.4.0.6 pkgsrc-2020Q1-base:1.4 pkgsrc-2019Q4:1.4.0.8 pkgsrc-2019Q4-base:1.4 pkgsrc-2019Q3:1.4.0.4 pkgsrc-2019Q3-base:1.4 pkgsrc-2019Q2:1.4.0.2 pkgsrc-2019Q2-base:1.4 pkgsrc-2019Q1:1.3.0.110 pkgsrc-2019Q1-base:1.3 pkgsrc-2018Q4:1.3.0.108 pkgsrc-2018Q4-base:1.3 pkgsrc-2018Q3:1.3.0.106 pkgsrc-2018Q3-base:1.3 pkgsrc-2018Q2:1.3.0.104 pkgsrc-2018Q2-base:1.3 pkgsrc-2018Q1:1.3.0.102 pkgsrc-2018Q1-base:1.3 pkgsrc-2017Q4:1.3.0.100 pkgsrc-2017Q4-base:1.3 pkgsrc-2017Q3:1.3.0.98 pkgsrc-2017Q3-base:1.3 pkgsrc-2017Q2:1.3.0.94 pkgsrc-2017Q2-base:1.3 pkgsrc-2017Q1:1.3.0.92 pkgsrc-2017Q1-base:1.3 pkgsrc-2016Q4:1.3.0.90 pkgsrc-2016Q4-base:1.3 pkgsrc-2016Q3:1.3.0.88 pkgsrc-2016Q3-base:1.3 pkgsrc-2016Q2:1.3.0.86 pkgsrc-2016Q2-base:1.3 pkgsrc-2016Q1:1.3.0.84 pkgsrc-2016Q1-base:1.3 pkgsrc-2015Q4:1.3.0.82 pkgsrc-2015Q4-base:1.3 pkgsrc-2015Q3:1.3.0.80 pkgsrc-2015Q3-base:1.3 pkgsrc-2015Q2:1.3.0.78 pkgsrc-2015Q2-base:1.3 pkgsrc-2015Q1:1.3.0.76 pkgsrc-2015Q1-base:1.3 pkgsrc-2014Q4:1.3.0.74 pkgsrc-2014Q4-base:1.3 pkgsrc-2014Q3:1.3.0.72 pkgsrc-2014Q3-base:1.3 pkgsrc-2014Q2:1.3.0.70 pkgsrc-2014Q2-base:1.3 pkgsrc-2014Q1:1.3.0.68 pkgsrc-2014Q1-base:1.3 pkgsrc-2013Q4:1.3.0.66 pkgsrc-2013Q4-base:1.3 pkgsrc-2013Q3:1.3.0.64 pkgsrc-2013Q3-base:1.3 pkgsrc-2013Q2:1.3.0.62 pkgsrc-2013Q2-base:1.3 pkgsrc-2013Q1:1.3.0.60 pkgsrc-2013Q1-base:1.3 pkgsrc-2012Q4:1.3.0.58 pkgsrc-2012Q4-base:1.3 pkgsrc-2012Q3:1.3.0.56 pkgsrc-2012Q3-base:1.3 pkgsrc-2012Q2:1.3.0.54 pkgsrc-2012Q2-base:1.3 pkgsrc-2012Q1:1.3.0.52 pkgsrc-2012Q1-base:1.3 pkgsrc-2011Q4:1.3.0.50 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q3:1.3.0.48 pkgsrc-2011Q3-base:1.3 pkgsrc-2011Q2:1.3.0.46 pkgsrc-2011Q2-base:1.3 pkgsrc-2011Q1:1.3.0.44 pkgsrc-2011Q1-base:1.3 pkgsrc-2010Q4:1.3.0.42 pkgsrc-2010Q4-base:1.3 pkgsrc-2010Q3:1.3.0.40 pkgsrc-2010Q3-base:1.3 pkgsrc-2010Q2:1.3.0.38 pkgsrc-2010Q2-base:1.3 pkgsrc-2010Q1:1.3.0.36 pkgsrc-2010Q1-base:1.3 pkgsrc-2009Q4:1.3.0.34 pkgsrc-2009Q4-base:1.3 pkgsrc-2009Q3:1.3.0.32 pkgsrc-2009Q3-base:1.3 pkgsrc-2009Q2:1.3.0.30 pkgsrc-2009Q2-base:1.3 pkgsrc-2009Q1:1.3.0.28 pkgsrc-2009Q1-base:1.3 pkgsrc-2008Q4:1.3.0.26 pkgsrc-2008Q4-base:1.3 pkgsrc-2008Q3:1.3.0.24 pkgsrc-2008Q3-base:1.3 cube-native-xorg:1.3.0.22 cube-native-xorg-base:1.3 pkgsrc-2008Q2:1.3.0.20 pkgsrc-2008Q2-base:1.3 cwrapper:1.3.0.18 pkgsrc-2008Q1:1.3.0.16 pkgsrc-2008Q1-base:1.3 pkgsrc-2007Q4:1.3.0.14 pkgsrc-2007Q4-base:1.3 pkgsrc-2007Q3:1.3.0.12 pkgsrc-2007Q3-base:1.3 pkgsrc-2007Q2:1.3.0.10 pkgsrc-2007Q2-base:1.3 pkgsrc-2007Q1:1.3.0.8 pkgsrc-2007Q1-base:1.3 pkgsrc-2006Q4:1.3.0.6 pkgsrc-2006Q4-base:1.3 pkgsrc-2006Q3:1.3.0.4 pkgsrc-2006Q3-base:1.3 pkgsrc-2006Q2:1.3.0.2 pkgsrc-2006Q2-base:1.3 pkgsrc-2006Q1:1.2.0.16 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.14 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.12 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.10 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.8 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.6 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.4 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.2 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.1.0.6 pkgsrc-2004Q1-base:1.1 pkgsrc-2003Q4:1.1.0.4 pkgsrc-2003Q4-base:1.1 netbsd-1-6-1:1.1.0.2 netbsd-1-6-1-base:1.1; locks; strict; comment @# @; 1.4 date 2019.06.15.15.01.03; author christos; state Exp; branches; next 1.3; commitid ZW8JgbrtpukjpirB; 1.3 date 2006.05.12.03.07.14; author simonb; state Exp; branches; next 1.2; 1.2 date 2004.05.05.00.46.45; author danw; state Exp; branches; next 1.1; 1.1 date 2002.08.21.06.36.35; author simonb; state Exp; branches; next ; desc @@ 1.4 log @handle SO_LINGER portably. @ text @$NetBSD: patch-ab,v 1.3 2006/05/12 03:07:14 simonb Exp $ 1. handle SIGCLD portably 2. define a large enough value for SO_LINGER that does not fail 3. add a runtime option -U --- nttcp.c.orig 2000-12-18 05:16:54.000000000 -0500 +++ nttcp.c 2019-06-15 10:56:28.798775017 -0400 @@@@ -136,9 +136,9 @@@@ #endif /* aix */ /*====================================================================*/ -#if defined(FreeBSD) +#ifndef SIGCLD #define SIGCLD SIGCHLD -#endif /*FreeBSD*/ +#endif /*SIGCLD*/ /*====================================================================*/ #if defined(BSD42) @@@@ -268,6 +268,7 @@@@ \t-n# number of source bufs written to network (default 2048)\n\ \t-u use UDP instead of TCP\n\ \t-g#us gap in micro seconds between UDP packets (default 0s)\n\ +\t-U# run until a number of seconds have elapsed\n\ \t-d set SO_DEBUG in sockopt\n\ \t-D don't buffer TCP writes (sets TCP_NODELAY socket option)\n\ \t-w# set the send buffer space to #kilobytes, which is\n\ @@@@ -310,9 +311,15 @@@@ setitimer(ITIMER_REAL, &itval, Nil(struct itimerval)) #define Suspend(msec) SetItVal(msec); pause() +/* + * we use 32767 (9 hours) because this is the largest implementation-specific + * value that we can since on the BSD's the kernel linger value is + * unsigned short, on opensolaris is int, and on linux is unsigned long + * scaled by HZ. + */ struct linger Ling = { 1, /* option on */ - 1000000 /* linger time, for our control connection */ + 32767 /* linger time, for our control connection */ }; /* global variables needed by StartTimer, StopTimer */ @@@@ -346,6 +353,7 @@@@ int FixedDataSize; /* if>0: calc BufCnt/BufLen from this */ int Window, SndWin, RcvWin; /* TCP window sizes */ int Verbose; /* ==1: more diagnostics */ + int RunTime; /* approximate runtime in seconds */ char *MulticastChannel; /* we send multicast traffic */ short MulticastPort; int GapLength; /* Gap length between packets */ @@@@ -496,6 +504,13 @@@@ SysCalls=0; } +int CheckTimer() { + TimeVal now; + + gettimeofday(&now, (struct timezone *)0); + return opt.RunTime < (now.tv_sec - time0.tv_sec); +} + void StopTimer(double *cput, double *realt) { /* delivers in cput: the amount of cpu time in seconds * in realt: the real time in seconds @@@@ -878,6 +893,7 @@@@ opt->Verbose=0; /* ==1: more diagnostics */ opt->GapLength=0; /* no delay, send as fast as possible */ opt->inetd= 0; /* ==1: run in inetd mode */ + opt->RunTime = 0; /* run effectively forever (ie BufCnt is limiting factor) */ opt->Service= GetService(); /* the service-port to listen to */ opt->MulticastChannel= NULL; opt->MulticastPort= 0; @@@@ -1013,6 +1029,10 @@@@ #endif /*MULTICAST*/ break; } + case 'U': + GetSizeValue(&argc, &argv, &opt->RunTime, 1000000000, + "runtime"); + break; default: { strcpy(MsgBuf, "unknown option: "); strncat(MsgBuf, argv[0], sizeof(MsgBuf)-strlen(MsgBuf)-1); @@@@ -1427,6 +1447,10 @@@@ sprintf(OptBuf, "-g%d", opt.GapLength); StrVecAppend(RemOpt, OptBuf); } + if (opt.RunTime > 0) { + sprintf(OptBuf, "-U%d", opt.RunTime); + StrVecAppend(RemOpt, OptBuf); + } if (opt.MulticastChannel) { sprintf(OptBuf, "-m%s:%d", opt.MulticastChannel, opt.MulticastPort); @@@@ -1781,9 +1805,17 @@@@ else Pattern(buf, opt.BufLen); StartTimer(); - while (n-- && Nwrite(fd, buf, opt.BufLen) == opt.BufLen) { + while (Nwrite(fd, buf, opt.BufLen) == opt.BufLen) { nBytes+= opt.BufLen; nBuffer++; + if (opt.RunTime == 0) { + if (--n == 0) + break; + } else { + /* XXX: tune how often to check if timer has expired? */ + if ((nBuffer % 100 == 0) && CheckTimer()) + break; + } } StopTimer(&cput, &realt); opt.GapLength= 0; @@@@ -1797,9 +1829,17 @@@@ nBytes= 0; nBuffer= 0; StartTimer(); - while (n-- && Nwrite(fd, buf, opt.BufLen) == opt.BufLen) { + while (Nwrite(fd, buf, opt.BufLen) == opt.BufLen) { nBytes+= opt.BufLen; nBuffer++; + if (opt.RunTime == 0) { + if (--n == 0) + break; + } else { + /* XXX: tune how often to check if timer has expired? */ + if ((nBuffer % 100 == 0) && CheckTimer()) + break; + } } StopTimer(&cput, &realt); } @ 1.3 log @Add a new -U option, to run for a given time instead of for a given number of buffers. Bump PKGREVISION. Not feed upsteam as author seems to have disappeared :( @ text @d1 1 a1 1 $NetBSD$ d3 7 a9 3 --- nttcp.c.orig 2000-12-18 21:16:54.000000000 +1100 +++ nttcp.c @@@@ -136,9 +136,9 @@@@ void syslog(int priority, const char *me d21 1 a21 1 @@@@ -268,6 +268,7 @@@@ Usage: nttcp [local options] host [remot d29 18 a46 1 @@@@ -346,6 +347,7 @@@@ typedef struct { d54 1 a54 1 @@@@ -496,6 +498,13 @@@@ void StartTimer() { d68 1 a68 1 @@@@ -878,6 +887,7 @@@@ void InitOptions(Options *opt) { d76 1 a76 1 @@@@ -1013,6 +1023,10 @@@@ void ParseOptions(int *ac, char **av[], d87 1 a87 1 @@@@ -1427,6 +1441,10 @@@@ int main(int argc, char *argv[]) { d98 1 a98 1 @@@@ -1781,9 +1799,17 @@@@ int main(int argc, char *argv[]) { d117 1 a117 1 @@@@ -1797,9 +1823,17 @@@@ int main(int argc, char *argv[]) { @ 1.2 log @make this build on Darwin @ text @d1 1 a1 1 $NetBSD: patch-ab,v 1.1 2002/08/21 06:36:35 simonb Exp $ d3 1 a3 1 --- nttcp.c.orig Mon Dec 18 21:16:54 2000 d5 1 a5 1 @@@@ -136,7 +136,7 @@@@ d12 2 a13 1 #endif /*FreeBSD*/ d15 100 @ 1.1 log @Cosmetic nit: don't use -DFreeBSD - this is NetBSD! @ text @d1 1 a1 1 $NetBSD$ d10 1 a10 1 +#if defined(FreeBSD) || defined(__NetBSD__) @