version 1.1.1.2, 2021/03/17 00:36:46
|
version 1.1.1.3, 2023/09/27 11:14:54
|
Line 128 make_cookie(const char *cookie)
|
Line 128 make_cookie(const char *cookie)
|
/* is_closed |
/* is_closed |
* |
* |
* Test if the file descriptor fd is closed. |
* Test if the file descriptor fd is closed. |
* | * |
* Iperf uses this function to test whether a TCP stream socket |
* Iperf uses this function to test whether a TCP stream socket |
* is closed, because accepting and denying an invalid connection |
* is closed, because accepting and denying an invalid connection |
* in iperf_tcp_accept is not considered an error. |
* in iperf_tcp_accept is not considered an error. |
Line 176 double
|
Line 176 double
|
timeval_diff(struct timeval * tv0, struct timeval * tv1) |
timeval_diff(struct timeval * tv0, struct timeval * tv1) |
{ |
{ |
double time1, time2; |
double time1, time2; |
| |
time1 = tv0->tv_sec + (tv0->tv_usec / 1000000.0); |
time1 = tv0->tv_sec + (tv0->tv_usec / 1000000.0); |
time2 = tv1->tv_sec + (tv1->tv_usec / 1000000.0); |
time2 = tv1->tv_sec + (tv1->tv_usec / 1000000.0); |
|
|
Line 232 get_system_info(void)
|
Line 232 get_system_info(void)
|
memset(buf, 0, 1024); |
memset(buf, 0, 1024); |
uname(&uts); |
uname(&uts); |
|
|
snprintf(buf, sizeof(buf), "%s %s %s %s %s", uts.sysname, uts.nodename, | snprintf(buf, sizeof(buf), "%s %s %s %s %s", uts.sysname, uts.nodename, |
uts.release, uts.version, uts.machine); |
uts.release, uts.version, uts.machine); |
|
|
return buf; |
return buf; |
Line 249 get_optional_features(void)
|
Line 249 get_optional_features(void)
|
|
|
#if defined(HAVE_CPU_AFFINITY) |
#if defined(HAVE_CPU_AFFINITY) |
if (numfeatures > 0) { |
if (numfeatures > 0) { |
strncat(features, ", ", | strncat(features, ", ", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
} |
} |
strncat(features, "CPU affinity setting", | strncat(features, "CPU affinity setting", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
numfeatures++; |
numfeatures++; |
#endif /* HAVE_CPU_AFFINITY */ |
#endif /* HAVE_CPU_AFFINITY */ |
| |
#if defined(HAVE_FLOWLABEL) |
#if defined(HAVE_FLOWLABEL) |
if (numfeatures > 0) { |
if (numfeatures > 0) { |
strncat(features, ", ", | strncat(features, ", ", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
} |
} |
strncat(features, "IPv6 flow label", | strncat(features, "IPv6 flow label", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
numfeatures++; |
numfeatures++; |
#endif /* HAVE_FLOWLABEL */ |
#endif /* HAVE_FLOWLABEL */ |
| |
#if defined(HAVE_SCTP_H) |
#if defined(HAVE_SCTP_H) |
if (numfeatures > 0) { |
if (numfeatures > 0) { |
strncat(features, ", ", | strncat(features, ", ", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
} |
} |
strncat(features, "SCTP", | strncat(features, "SCTP", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
numfeatures++; |
numfeatures++; |
#endif /* HAVE_SCTP_H */ |
#endif /* HAVE_SCTP_H */ |
| |
#if defined(HAVE_TCP_CONGESTION) |
#if defined(HAVE_TCP_CONGESTION) |
if (numfeatures > 0) { |
if (numfeatures > 0) { |
strncat(features, ", ", | strncat(features, ", ", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
} |
} |
strncat(features, "TCP congestion algorithm setting", | strncat(features, "TCP congestion algorithm setting", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
numfeatures++; |
numfeatures++; |
#endif /* HAVE_TCP_CONGESTION */ |
#endif /* HAVE_TCP_CONGESTION */ |
| |
#if defined(HAVE_SENDFILE) |
#if defined(HAVE_SENDFILE) |
if (numfeatures > 0) { |
if (numfeatures > 0) { |
strncat(features, ", ", |
strncat(features, ", ", |
Line 317 get_optional_features(void)
|
Line 317 get_optional_features(void)
|
numfeatures++; |
numfeatures++; |
#endif /* HAVE_SSL */ |
#endif /* HAVE_SSL */ |
|
|
|
#if defined(HAVE_SO_BINDTODEVICE) |
|
if (numfeatures > 0) { |
|
strncat(features, ", ", |
|
sizeof(features) - strlen(features) - 1); |
|
} |
|
strncat(features, "bind to device", |
|
sizeof(features) - strlen(features) - 1); |
|
numfeatures++; |
|
#endif /* HAVE_SO_BINDTODEVICE */ |
|
|
|
#if defined(HAVE_DONT_FRAGMENT) |
|
if (numfeatures > 0) { |
|
strncat(features, ", ", |
|
sizeof(features) - strlen(features) - 1); |
|
} |
|
strncat(features, "support IPv4 don't fragment", |
|
sizeof(features) - strlen(features) - 1); |
|
numfeatures++; |
|
#endif /* HAVE_DONT_FRAGMENT */ |
|
|
if (numfeatures == 0) { |
if (numfeatures == 0) { |
strncat(features, "None", | strncat(features, "None", |
sizeof(features) - strlen(features) - 1); |
sizeof(features) - strlen(features) - 1); |
} |
} |
|
|
Line 456 int daemon(int nochdir, int noclose)
|
Line 476 int daemon(int nochdir, int noclose)
|
|
|
/* |
/* |
* Fork again to avoid becoming a session leader. |
* Fork again to avoid becoming a session leader. |
* This might only matter on old SVr4-derived OSs. | * This might only matter on old SVr4-derived OSs. |
* Note in particular that glibc and FreeBSD libc | * Note in particular that glibc and FreeBSD libc |
* only fork once. |
* only fork once. |
*/ |
*/ |
pid = fork(); |
pid = fork(); |