Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package iperf for openSUSE:Factory checked in at 2023-03-13 12:40:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/iperf (Old) and /work/SRC/openSUSE:Factory/.iperf.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iperf" Mon Mar 13 12:40:17 2023 rev:33 rq:1071021 version:3.13 Changes: -------- --- /work/SRC/openSUSE:Factory/iperf/iperf.changes 2022-12-06 16:42:59.400765190 +0100 +++ /work/SRC/openSUSE:Factory/.iperf.new.31432/iperf.changes 2023-03-13 12:41:09.335810380 +0100 @@ -1,0 +2,9 @@ +Tue Mar 7 07:26:47 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 3.13: + * Added missing bind_dev getter and setter. + * a fix for A resource leak bug in function iperf_create_pidfile (#1443) + * doc: Fix copy-and-paste error leading to wrong error message + * Fix crash on rcv-timeout with JSON logfile + +------------------------------------------------------------------- Old: ---- iperf-3.12.tar.gz iperf-3.12.tar.gz.sha256 New: ---- iperf-3.13.tar.gz iperf-3.13.tar.gz.sha256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iperf.spec ++++++ --- /var/tmp/diff_new_pack.SIh1VT/_old 2023-03-13 12:41:09.771812652 +0100 +++ /var/tmp/diff_new_pack.SIh1VT/_new 2023-03-13 12:41:09.775812673 +0100 @@ -1,7 +1,7 @@ # # spec file for package iperf # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define soname 0 Name: iperf -Version: 3.12 +Version: 3.13 Release: 0 Summary: A tool to measure network performance License: BSD-3-Clause ++++++ iperf-3.12.tar.gz -> iperf-3.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/.gitignore new/iperf-3.13/.gitignore --- old/iperf-3.12/.gitignore 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/.gitignore 2023-02-16 23:23:12.000000000 +0100 @@ -30,3 +30,4 @@ examples/Makefile examples/mic examples/mis +.vscode/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/LICENSE new/iperf-3.13/LICENSE --- old/iperf-3.12/LICENSE 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/LICENSE 2023-02-16 23:23:12.000000000 +0100 @@ -1,4 +1,4 @@ -"iperf, Copyright (c) 2014-2022, The Regents of the University of California, +"iperf, Copyright (c) 2014-2023, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/README.md new/iperf-3.13/README.md --- old/iperf-3.12/README.md 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/README.md 2023-02-16 23:23:12.000000000 +0100 @@ -150,7 +150,7 @@ Copyright --------- -iperf, Copyright (c) 2014-2022, The Regents of the University of +iperf, Copyright (c) 2014-2023, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/RELNOTES.md new/iperf-3.13/RELNOTES.md --- old/iperf-3.12/RELNOTES.md 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/RELNOTES.md 2023-02-16 23:23:12.000000000 +0100 @@ -1,6 +1,45 @@ iperf3 Release Notes ==================== +iperf-3.13 2023-02-16 +--------------------- + +* Notable user-visible changes + + * fq-rate (PR #1461, Issue #1366), and bidirectional flag (Issue #1428, + PR #1429) were added to the JSON output. + + * Added support for OpenBSD including cleaning up endian handling (PR #1396) + and support for TCP_INFO on systems where it was implemented (PR #1397). + + * Fixed bug in how TOS is set in mapped v4 (PR #1427). + + * Corrected documentation, such as updating binary download links and text + (Issue #1459), updating version on iperf3 websites, and fixing an + incorrect error message (Issue #1441). + + * Fixed crash on rcv-timeout with JSON logfile (#1463, #1460, issue #1360, + PR #1369). + + * Fixed a bug that prevented TOS/DSCP from getting set correctly for reverse + tests (PR #1427, Issue #638). + +* Developer-visible changes + + * Getter and setter are now available for bind_dev (PR #1419). + + * Added missing getter for bidirectional tests (PR #1453). + + * Added minor changes to clean up .gitignore and error messages (#1408). + + * Made sure configure scripts are runnable with /bin/sh (PR #1398). + + * Cleaned up RPM spec, such as adding missing RPM build dependencies, dropping + EL5 and removing outdated %changelog (PR #1401) to make. + + * Added a fix for a resource leak bug in function iperf_create_pidfile(#1443). + + iperf-3.12 2022-09-30 --------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/config/iperf_config_static_bin.m4 new/iperf-3.13/config/iperf_config_static_bin.m4 --- old/iperf-3.12/config/iperf_config_static_bin.m4 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/config/iperf_config_static_bin.m4 2023-02-16 23:23:12.000000000 +0100 @@ -7,6 +7,6 @@ [:]) AM_CONDITIONAL([ENABLE_STATIC_BIN], [test x$enable_static_bin = xno]) -AS_IF([test "x$enable_static_bin" == xyes], +AS_IF([test "x$enable_static_bin" = xyes], [LDFLAGS="$LDFLAGS --static"] []) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/configure new/iperf-3.13/configure --- old/iperf-3.12/configure 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/configure 2023-02-16 23:23:12.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for iperf 3.12. +# Generated by GNU Autoconf 2.71 for iperf 3.13. # # Report bugs to <https://github.com/esnet/iperf>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='iperf' PACKAGE_TARNAME='iperf' -PACKAGE_VERSION='3.12' -PACKAGE_STRING='iperf 3.12' +PACKAGE_VERSION='3.13' +PACKAGE_STRING='iperf 3.13' PACKAGE_BUGREPORT='https://github.com/esnet/iperf' PACKAGE_URL='https://software.es.net/iperf/' @@ -1366,7 +1366,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures iperf 3.12 to adapt to many kinds of systems. +\`configure' configures iperf 3.13 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1437,7 +1437,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of iperf 3.12:";; + short | recursive ) echo "Configuration of iperf 3.13:";; esac cat <<\_ACEOF @@ -1555,7 +1555,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -iperf configure 3.12 +iperf configure 3.13 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1833,7 +1833,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by iperf $as_me 3.12, which was +It was created by iperf $as_me 3.13, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2667,7 +2667,7 @@ fi -if test "x$enable_static_bin" == xyes +if test "x$enable_static_bin" = xyes then : LDFLAGS="$LDFLAGS --static" @@ -3200,7 +3200,7 @@ # Define the identity of the package. PACKAGE='iperf' - VERSION='3.12' + VERSION='3.13' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -14950,6 +14950,7 @@ ac_fn_c_check_member "$LINENO" "struct tcp_info" "tcpi_snd_wnd" "ac_cv_member_struct_tcp_info_tcpi_snd_wnd" "#ifdef HAVE_LINUX_TCP_H #include <linux/tcp.h> #else +#include <sys/types.h> #include <netinet/tcp.h> #endif @@ -15578,7 +15579,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by iperf $as_me 3.12, which was +This file was extended by iperf $as_me 3.13, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15647,7 +15648,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -iperf config.status 3.12 +iperf config.status 3.13 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/configure.ac new/iperf-3.13/configure.ac --- old/iperf-3.12/configure.ac 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/configure.ac 2023-02-16 23:23:12.000000000 +0100 @@ -25,7 +25,7 @@ # Initialize the autoconf system for the specified tool, version and mailing list AC_PREREQ([2.71]) -AC_INIT([iperf],[3.12],[https://github.com/esnet/iperf],[iperf],[https://software.es.net/iperf/]) +AC_INIT([iperf],[3.13],[https://github.com/esnet/iperf],[iperf],[https://software.es.net/iperf/]) m4_include([config/ax_check_openssl.m4]) m4_include([config/iperf_config_static_bin.m4]) AC_LANG(C) @@ -305,6 +305,7 @@ [#ifdef HAVE_LINUX_TCP_H #include <linux/tcp.h> #else +#include <sys/types.h> #include <netinet/tcp.h> #endif ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/docs/conf.py new/iperf-3.13/docs/conf.py --- old/iperf-3.12/docs/conf.py 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/docs/conf.py 2023-02-16 23:23:12.000000000 +0100 @@ -52,10 +52,10 @@ # built documents. # # The short X.Y version. -version = '3.10.1' +version = '3.12' # The full version, including alpha/beta/rc tags. -release = '3.10.1' +release = '3.12' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/docs/invoking.rst new/iperf-3.13/docs/invoking.rst --- old/iperf-3.12/docs/invoking.rst 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/docs/invoking.rst 2023-02-16 23:23:12.000000000 +0100 @@ -163,10 +163,12 @@ bind to the specific interface associated with address host. If an optional interface is specified, it is treated as a shortcut for --bind-dev dev. Note that a percent sign and interface - device name are required for IPv6 link-local address literals. - --bind-dev dev bind to the specified network interface. This - option uses SO_BINDTODEVICE, and may require root permissions. - (Available on Linux and possibly other systems.) + device name are required for IPv6 link-local address literals. + + --bind-dev dev + bind to the specified network interface. This option uses + SO_BINDTODEVICE, and may require root permissions. (Available + on Linux and possibly other systems.) -V, --verbose give more detailed output @@ -178,24 +180,33 @@ send output to a log file. --forceflush - force flushing output at every interval. Used to avoid buffer- + force flushing output at every interval. Used to avoid buffer- ing when sending output to pipe. --timestamps[=format] - prepend a timestamp at the start of each output line. By - default, timestamps have the format emitted by ctime(1). - Optionally, = followed by a format specification can be passed - to customize the timestamps, see strftime(3). If this optional - format is given, the = must immediately follow the --timestamps + prepend a timestamp at the start of each output line. By + default, timestamps have the format emitted by ctime(1). + Optionally, = followed by a format specification can be passed + to customize the timestamps, see strftime(3). If this optional + format is given, the = must immediately follow the --timestamps option with no whitespace intervening. --rcv-timeout # - set idle timeout for receiving data during active tests. The + set idle timeout for receiving data during active tests. The receiver will halt a test if no data is received from the sender for this number of ms (default to 12000 ms, or 2 minutes). + --snd-timeout # + set timeout for unacknowledged TCP data (on both test and con- + trol connections) This option can be used to force a faster test + timeout in case of a network partition during a test. The + required parameter is specified in ms, and defaults to the sys- + tem settings. This functionality depends on the TCP_USER_TIME- + OUT socket option, and will not work on systems that do not sup- + port it. + -d, --debug - emit debugging output. Primarily (perhaps exclusively) of use + emit debugging output. Primarily (perhaps exclusively) of use to developers. -v, --version @@ -213,48 +224,48 @@ run the server in background as a daemon -1, --one-off - handle one client connection, then exit. If an idle time is + handle one client connection, then exit. If an idle time is set, the server will exit after that amount of time with no con- nection. --idle-timeout n - restart the server after n seconds in case it gets stuck. In + restart the server after n seconds in case it gets stuck. In one-off mode, this is the number of seconds the server will wait before exiting. --server-bitrate-limit n[KMGT] set a limit on the server side, which will cause a test to abort - if the client specifies a test of more than n bits per second, + if the client specifies a test of more than n bits per second, or if the average data sent or received by the client (including - all data streams) is greater than n bits per second. The - default limit is zero, which implies no limit. The interval + all data streams) is greater than n bits per second. The + default limit is zero, which implies no limit. The interval over which to average the data rate is 5 seconds by default, but - can be specified by adding a '/' and a number to the bitrate + can be specified by adding a '/' and a number to the bitrate specifier. --rsa-private-key-path file - path to the RSA private key (not password-protected) used to - decrypt authentication credentials from the client (if built + path to the RSA private key (not password-protected) used to + decrypt authentication credentials from the client (if built with OpenSSL support). --authorized-users-path file - path to the configuration file containing authorized users cre- - dentials to run iperf tests (if built with OpenSSL support). - The file is a comma separated list of usernames and password - hashes; more information on the structure of the file can be + path to the configuration file containing authorized users cre- + dentials to run iperf tests (if built with OpenSSL support). + The file is a comma separated list of usernames and password + hashes; more information on the structure of the file can be found in the EXAMPLES section. --time-skew-thresholdsecond seconds - time skew threshold (in seconds) between the server and client + time skew threshold (in seconds) between the server and client during the authentication process. CLIENT SPECIFIC OPTIONS -c, --client host[%dev] - run in client mode, connecting to the specified server. By - default, a test consists of sending data from the client to the - server, unless the -R flag is specified. If an optional inter- - face is specified, it is treated as a shortcut for --bind-dev - dev. Note that a percent sign and interface device name are + run in client mode, connecting to the specified server. By + default, a test consists of sending data from the client to the + server, unless the -R flag is specified. If an optional inter- + face is specified, it is treated as a shortcut for --bind-dev + dev. Note that a percent sign and interface device name are required for IPv6 link-local address literals. --sctp use SCTP rather than TCP (FreeBSD and Linux) @@ -263,42 +274,42 @@ use UDP rather than TCP --connect-timeout n - set timeout for establishing the initial control connection to - the server, in milliseconds. The default behavior is the oper- - ating system's timeout for TCP connection establishment. Pro- - viding a shorter value may speed up detection of a down iperf3 + set timeout for establishing the initial control connection to + the server, in milliseconds. The default behavior is the oper- + ating system's timeout for TCP connection establishment. Pro- + viding a shorter value may speed up detection of a down iperf3 server. -b, --bitrate n[KMGT] - set target bitrate to n bits/sec (default 1 Mbit/sec for UDP, - unlimited for TCP/SCTP). If there are multiple streams (-P - flag), the throughput limit is applied separately to each - stream. You can also add a '/' and a number to the bitrate + set target bitrate to n bits/sec (default 1 Mbit/sec for UDP, + unlimited for TCP/SCTP). If there are multiple streams (-P + flag), the throughput limit is applied separately to each + stream. You can also add a '/' and a number to the bitrate specifier. This is called "burst mode". It will send the given - number of packets without pausing, even if that temporarily - exceeds the specified throughput limit. Setting the target - bitrate to 0 will disable bitrate limits (particularly useful + number of packets without pausing, even if that temporarily + exceeds the specified throughput limit. Setting the target + bitrate to 0 will disable bitrate limits (particularly useful for UDP tests). This throughput limit is implemented internally - inside iperf3, and is available on all platforms. Compare with - the --fq-rate flag. This option replaces the --bandwidth flag, + inside iperf3, and is available on all platforms. Compare with + the --fq-rate flag. This option replaces the --bandwidth flag, which is now deprecated but (at least for now) still accepted. --pacing-timer n[KMGT] - set pacing timer interval in microseconds (default 1000 - microseconds, or 1 ms). This controls iperf3's internal pacing - timer for the -b/--bitrate option. The timer fires at the - interval set by this parameter. Smaller values of the pacing - timer parameter smooth out the traffic emitted by iperf3, but - potentially at the cost of performance due to more frequent + set pacing timer interval in microseconds (default 1000 + microseconds, or 1 ms). This controls iperf3's internal pacing + timer for the -b/--bitrate option. The timer fires at the + interval set by this parameter. Smaller values of the pacing + timer parameter smooth out the traffic emitted by iperf3, but + potentially at the cost of performance due to more frequent timer processing. --fq-rate n[KMGT] Set a rate to be used with fair-queueing based socket-level pac- - ing, in bits per second. This pacing (if specified) will be in - addition to any pacing due to iperf3's internal throughput pac- - ing (-b/--bitrate flag), and both can be specified for the same - test. Only available on platforms supporting the SO_MAX_PAC- - ING_RATE socket option (currently only Linux). The default is + ing, in bits per second. This pacing (if specified) will be in + addition to any pacing due to iperf3's internal throughput pac- + ing (-b/--bitrate flag), and both can be specified for the same + test. Only available on platforms supporting the SO_MAX_PAC- + ING_RATE socket option (currently only Linux). The default is no fair-queueing based pacing. --no-fq-socket-pacing @@ -315,37 +326,37 @@ number of blocks (packets) to transmit (instead of -t or -n) -l, --length n[KMGT] - length of buffer to read or write. For TCP tests, the default + length of buffer to read or write. For TCP tests, the default value is 128KB. In the case of UDP, iperf3 tries to dynamically - determine a reasonable sending size based on the path MTU; if - that cannot be determined it uses 1460 bytes as a sending size. + determine a reasonable sending size based on the path MTU; if + that cannot be determined it uses 1460 bytes as a sending size. For SCTP tests, the default size is 64KB. --cport port - bind data streams to a specific client port (for TCP and UDP + bind data streams to a specific client port (for TCP and UDP only, default is to use an ephemeral port) -P, --parallel n - number of parallel client streams to run. Note that iperf3 is - single threaded, so if you are CPU bound, this will not yield + number of parallel client streams to run. Note that iperf3 is + single threaded, so if you are CPU bound, this will not yield higher throughput. -R, --reverse - reverse the direction of a test, so that the server sends data + reverse the direction of a test, so that the server sends data to the client --bidir - test in both directions (normal and reverse), with both the + test in both directions (normal and reverse), with both the client and server sending and receiving data simultaneously -w, --window n[KMGT] - set socket buffer size / window size. This value gets sent to - the server and used on that side too; on both sides this option - sets both the sending and receiving socket buffer sizes. This - option can be used to set (indirectly) the maximum TCP window - size. Note that on Linux systems, the effective maximum window - size is approximately double what is specified by this option - (this behavior is not a bug in iperf3 but a "feature" of the + set socket buffer size / window size. This value gets sent to + the server and used on that side too; on both sides this option + sets both the sending and receiving socket buffer sizes. This + option can be used to set (indirectly) the maximum TCP window + size. Note that on Linux systems, the effective maximum window + size is approximately double what is specified by this option + (this behavior is not a bug in iperf3 but a "feature" of the Linux kernel, as documented by tcp(7) and socket(7)). -M, --set-mss n @@ -365,100 +376,100 @@ can be used, i.e. 52, 064 and 0x34 all specify the same value. --dscp dscp - set the IP DSCP bits. Both numeric and symbolic values are - accepted. Numeric values can be specified in decimal, octal and - hex (see --tos above). To set both the DSCP bits and the ECN + set the IP DSCP bits. Both numeric and symbolic values are + accepted. Numeric values can be specified in decimal, octal and + hex (see --tos above). To set both the DSCP bits and the ECN bits, use --tos. -L, --flowlabel n set the IPv6 flow label (currently only supported on Linux) -X, --xbind name - Bind SCTP associations to a specific subset of links using - sctp_bindx(3). The --B flag will be ignored if this flag is + Bind SCTP associations to a specific subset of links using + sctp_bindx(3). The --B flag will be ignored if this flag is specified. Normally SCTP will include the protocol addresses of - all active links on the local host when setting up an associa- - tion. Specifying at least one --X name will disable this behav- - iour. This flag must be specified for each link to be included - in the association, and is supported for both iperf servers and + all active links on the local host when setting up an associa- + tion. Specifying at least one --X name will disable this behav- + iour. This flag must be specified for each link to be included + in the association, and is supported for both iperf servers and clients (the latter are supported by passing the first --X argu- - ment to bind(2)). Hostnames are accepted as arguments and are - resolved using getaddrinfo(3). If the --4 or --6 flags are - specified, names which do not resolve to addresses within the + ment to bind(2)). Hostnames are accepted as arguments and are + resolved using getaddrinfo(3). If the --4 or --6 flags are + specified, names which do not resolve to addresses within the specified protocol family will be ignored. --nstreams n Set number of SCTP streams. -Z, --zerocopy - Use a "zero copy" method of sending data, such as sendfile(2), + Use a "zero copy" method of sending data, such as sendfile(2), instead of the usual write(2). -O, --omit n - Omit the first n seconds of the test, to skip past the TCP slow- - start period. + Perform pre-test for N seconds and omit the pre-test statistics, + to skip past the TCP slow-start period. -T, --title str Prefix every output line with this string. --extra-data str - Specify an extra data string field to be included in JSON out- + Specify an extra data string field to be included in JSON out- put. -C, --congestion algo - Set the congestion control algorithm (Linux and FreeBSD only). - An older --linux-congestion synonym for this flag is accepted + Set the congestion control algorithm (Linux and FreeBSD only). + An older --linux-congestion synonym for this flag is accepted but is deprecated. --get-server-output Get the output from the server. The output format is determined by the server (in particular, if the server was invoked with the - --json flag, the output will be in JSON format, otherwise it - will be in human-readable format). If the client is run with - --json, the server output is included in a JSON object; other- - wise it is appended at the bottom of the human-readable output. + --json flag, the output will be in JSON format, otherwise it + will be in human-readable format). If the client is run with + --json, the server output is included in a JSON object; other- + wise it is appended at the bottom of the human-readable output. --udp-counters-64bit Use 64-bit counters in UDP test packets. The use of this option - can help prevent counter overflows during long or high-bitrate - UDP tests. Both client and server need to be running at least - version 3.1 for this option to work. It may become the default + can help prevent counter overflows during long or high-bitrate + UDP tests. Both client and server need to be running at least + version 3.1 for this option to work. It may become the default behavior at some point in the future. --repeating-payload - Use repeating pattern in payload, instead of random bytes. The - same payload is used in iperf2 (ASCII '0..9' repeating). It - might help to test and reveal problems in networking gear with - hardware compression (including some WiFi access points), where - iperf2 and iperf3 perform differently, just based on payload + Use repeating pattern in payload, instead of random bytes. The + same payload is used in iperf2 (ASCII '0..9' repeating). It + might help to test and reveal problems in networking gear with + hardware compression (including some WiFi access points), where + iperf2 and iperf3 perform differently, just based on payload entropy. --dont-fragment - Set the IPv4 Don't Fragment (DF) bit on outgoing packets. Only + Set the IPv4 Don't Fragment (DF) bit on outgoing packets. Only applicable to tests doing UDP over IPv4. --username username username to use for authentication to the iperf server (if built with OpenSSL support). The password will be prompted for inter- - actively when the test is run. Note, the password to use can - also be specified via the IPERF3_PASSWORD environment variable. - If this variable is present, the password prompt will be + actively when the test is run. Note, the password to use can + also be specified via the IPERF3_PASSWORD environment variable. + If this variable is present, the password prompt will be skipped. --rsa-public-key-path file - path to the RSA public key used to encrypt authentication cre- + path to the RSA public key used to encrypt authentication cre- dentials (if built with OpenSSL support) EXAMPLES Authentication - RSA Keypair - The authentication feature of iperf3 requires an RSA public keypair. - The public key is used to encrypt the authentication token containing - the user credentials, while the private key is used to decrypt the - authentication token. The private key must be in PEM format and addi- - tionally must not have a password set. The public key must be in PEM - format and use SubjectPrefixKeyInfo encoding. An example of a set of - UNIX/Linux commands using OpenSSL to generate a correctly-formed key- + The authentication feature of iperf3 requires an RSA public keypair. + The public key is used to encrypt the authentication token containing + the user credentials, while the private key is used to decrypt the + authentication token. The private key must be in PEM format and addi- + tionally must not have a password set. The public key must be in PEM + format and use SubjectPrefixKeyInfo encoding. An example of a set of + UNIX/Linux commands using OpenSSL to generate a correctly-formed key- pair follows: > openssl genrsa -des3 -out private.pem 2048 @@ -467,16 +478,16 @@ form PEM After these commands, the public key will be contained in the file pub- - lic.pem and the private key will be contained in the file pri- + lic.pem and the private key will be contained in the file pri- vate_not_protected.pem. Authentication - Authorized users configuration file - A simple plaintext file must be provided to the iperf3 server in order - to specify the authorized user credentials. The file is a simple list - of comma-separated pairs of a username and a corresponding password - hash. The password hash is a SHA256 hash of the string "{$user}$pass- - word". The file can also contain commented lines (starting with the # - character). An example of commands to generate the password hash on a + A simple plaintext file must be provided to the iperf3 server in order + to specify the authorized user credentials. The file is a simple list + of comma-separated pairs of a username and a corresponding password + hash. The password hash is a SHA256 hash of the string "{$user}$pass- + word". The file can also contain commented lines (starting with the # + character). An example of commands to generate the password hash on a UNIX/Linux system is given below: > S_USER=mario S_PASSWD=rossi @@ -500,7 +511,8 @@ - ESnet January 2022 IPERF3(1) + ESnet September 2022 IPERF3(1) + The iperf3 manual page will typically be installed in manual section 1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/docs/news.rst new/iperf-3.13/docs/news.rst --- old/iperf-3.12/docs/news.rst 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/docs/news.rst 2023-02-16 23:23:12.000000000 +0100 @@ -1,6 +1,15 @@ iperf3 Project News =================== +2022-09-30: iperf-3.12 released +---------------------------------- +| URL: https://downloads.es.net/pub/iperf/iperf-3.12.tar.gz +| SHA256: ``72034ecfb6a7d6d67e384e19fb6efff3236ca4f7ed4c518d7db649c447e1ffd6`` + +iperf 3.12 is principally a bugfix release, although it includes an +updated version of cJSON and adds a few new features. + + 2022-01-28: iperf-3.11 released ---------------------------------- | URL: https://downloads.es.net/pub/iperf/iperf-3.11.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/docs/obtaining.rst new/iperf-3.13/docs/obtaining.rst --- old/iperf-3.12/docs/obtaining.rst 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/docs/obtaining.rst 2023-02-16 23:23:12.000000000 +0100 @@ -9,24 +9,28 @@ Note that ESnet does not distribute binary packages of iperf3. All of the packages listed in this section are provided by third parties, who are solely responsible for their contents. This is an incomplete list -of binary packages: +of binary packages for various operating systems and distributions: -* FreeBSD: `benchmarks/iperf3 - <http://freshports.org/benchmarks/iperf3>`_ in the FreeBSD Ports Collection -* Fedora / CentOS: `iperf3 +* FreeBSD: via the FreeBSD Ports Collection with ``sudo pkg install + benchmarks/iperf3``. +* Fedora / RedHat Linux / CentOS / Rocky: `iperf3 <https://apps.fedoraproject.org/packages/iperf3/>`_ and `iperf3-devel <https://apps.fedoraproject.org/packages/iperf3-devel>`_ in Fedora 19 and 20 and in Fedora EPEL 5, 6, and 7. iperf3 is included as a part of RedHat Enterprise Linux 7.4 and later (as well as CentOS 7.4 - and later). + and later, and all versions of Rocky Linux), and can generally be + installed with ``yum install iperf3``. * Ubuntu: `iperf3 <https://launchpad.net/ubuntu/+source/iperf3>`_, is available in Trusty (backports), and as a part of the main - release in Vivid and newer. -* macOS: via HomeBrew. -* Windows: `iperf3 binaries for Windows - <https://iperf.fr/iperf-download.php#windows>`_ are available from - iperf.fr (and other sources). + release in Vivid and newer. It can generally be installed with + ``sudo apt-get install iperf3``. +* macOS: via HomeBrew with ``brew install iperf3`` or MacPorts with + ``sudo port install iperf3``. +* Windows: iperf3 binaries for Windows (built with `Cygwin <https://www.cygwin.com/>`_) can be found in a variety of + locations, including `<https://files.budman.pw/>`_ + (`discussion thread + <https://www.neowin.net/forum/topic/1234695-iperf/>`_). Source Distributions -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/iperf3.spec.in new/iperf-3.13/iperf3.spec.in --- old/iperf-3.12/iperf3.spec.in 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/iperf3.spec.in 2023-02-16 23:23:12.000000000 +0100 @@ -9,11 +9,9 @@ Source0: https://downloads.es.net/pub/iperf/iperf-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -%if 0%{?el5} -BuildRequires: e2fsprogs-devel, openssl-devel -%else +BuildRequires: autoconf +BuildRequires: gcc BuildRequires: openssl-devel -%endif %description iperf3 is a tool for active measurements of the maximum achievable @@ -59,47 +57,3 @@ %{_libdir}/libiperf.la %{_libdir}/*.so %{_libdir}/*.so.* - -%changelog -* Fri Aug 29 2014 Aaron Brown <aa...@internet2.edu> 3.0.7-1 -- Update to 3.0.7 - -* Tue Jul 29 2014 Aaron Brown <aa...@internet2.edu> 3.0.6-1 -- Update to 3.0.6 - -* Mon Jun 16 2014 Aaron Brown <aa...@internet2.edu> 3.0.5-1 -- Update to 3.0.5 - -* Wed Apr 2 2014 Susant Sahani <ssah...@redhat.com> 3.0.3-2 -- Moved static library to devel section only . - -* Sun Mar 30 2014 Susant Sahani <ssah...@redhat.com> 3.0.3-1 -- Update to 3.0.3 and added devel rpm support - -* Tue Mar 11 2014 Susant Sahani <ssah...@redhat.com> 3.0.2-1 -- Update to 3.0.2 - -* Tue Jan 14 2014 Susant Sahani <ssah...@redhat.com> 3.0.1-1 -- Update to 3.0.1 - -* Fri Oct 25 2013 Steven Roberts <strob...@strobe.net> 3.0-1 -- Update to 3.0 - -* Sat May 04 2013 Kevin Fenzi <ke...@scrye.com> 3.0-0.4.b5 -- Update to 3.0b5 - -* Thu Feb 14 2013 Fedora Release Engineering <rel-...@lists.fedoraproject.org> - 3.0-0.3.b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Thu Jul 19 2012 Fedora Release Engineering <rel-...@lists.fedoraproject.org> - 3.0-0.2.b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Fri Jan 13 2012 Fedora Release Engineering <rel-...@lists.fedoraproject.org> - 3.0-0.1.b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Wed Apr 06 2011 G.Balaji <balaji...@gmail.com> 3.0b4-2 -- Changed the Spec name, removed static libs generation and devel -- package. - -* Sat Mar 26 2011 G.Balaji <balaji...@gmail.com> 3.0b4-1 -- Initial Version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf.h new/iperf-3.13/src/iperf.h --- old/iperf-3.12/src/iperf.h 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf.h 2023-02-16 23:23:12.000000000 +0100 @@ -94,9 +94,9 @@ int cnt_error; int omitted; -#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) && \ +#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && \ defined(TCP_INFO) - struct tcp_info tcpInfo; /* getsockopt(TCP_INFO) for Linux, {Free,Net}BSD */ + struct tcp_info tcpInfo; /* getsockopt(TCP_INFO) for Linux, {Free,Net,Open}BSD */ #else /* Just placeholders, never accessed. */ char *tcpInfo; @@ -297,6 +297,7 @@ FILE *outfile; int ctrl_sck; + int mapped_v4; int listener; int prot_listener; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_api.c new/iperf-3.13/src/iperf_api.c --- old/iperf-3.12/src/iperf_api.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_api.c 2023-02-16 23:23:12.000000000 +0100 @@ -225,6 +225,12 @@ } int +iperf_get_test_bidirectional(struct iperf_test *ipt) +{ + return ipt->bidirectional; +} + +int iperf_get_test_blksize(struct iperf_test *ipt) { return ipt->settings->blksize; @@ -423,6 +429,12 @@ return ipt->settings->mss; } +int +iperf_get_mapped_v4(struct iperf_test* ipt) +{ + return ipt->mapped_v4; +} + /************** Setter routines for some fields inside iperf_test *************/ void @@ -575,6 +587,12 @@ ipt->timestamp_format = strdup(tf); } +void +iperf_set_mapped_v4(struct iperf_test *ipt, const int val) +{ + ipt->mapped_v4 = val; +} + static void check_sender_has_retransmits(struct iperf_test *ipt) { @@ -709,7 +727,7 @@ } void -iperf_set_test_bind_dev(struct iperf_test *ipt, char *bnd_dev) +iperf_set_test_bind_dev(struct iperf_test *ipt, const char *bnd_dev) { ipt->bind_dev = strdup(bnd_dev); } @@ -839,7 +857,7 @@ iperf_on_test_start(struct iperf_test *test) { if (test->json_output) { - cJSON_AddItemToObject(test->json_start, "test_start", iperf_json_printf("protocol: %s num_streams: %d blksize: %d omit: %d duration: %d bytes: %d blocks: %d reverse: %d tos: %d target_bitrate: %d", test->protocol->name, (int64_t) test->num_streams, (int64_t) test->settings->blksize, (int64_t) test->omit, (int64_t) test->duration, (int64_t) test->settings->bytes, (int64_t) test->settings->blocks, test->reverse?(int64_t)1:(int64_t)0, (int64_t) test->settings->tos, (int64_t) test->settings->rate)); + cJSON_AddItemToObject(test->json_start, "test_start", iperf_json_printf("protocol: %s num_streams: %d blksize: %d omit: %d duration: %d bytes: %d blocks: %d reverse: %d tos: %d target_bitrate: %d bidir: %d fqrate: %d", test->protocol->name, (int64_t) test->num_streams, (int64_t) test->settings->blksize, (int64_t) test->omit, (int64_t) test->duration, (int64_t) test->settings->bytes, (int64_t) test->settings->blocks, test->reverse?(int64_t)1:(int64_t)0, (int64_t) test->settings->tos, (int64_t) test->settings->rate, (int64_t) test->bidirectional, (uint64_t) test->settings->fqrate)); } else { if (test->verbose) { if (test->settings->bytes) @@ -856,8 +874,10 @@ ** old IPv4 format, which is easier on the eyes of network veterans. ** ** If the v6 address is not v4-mapped it is left alone. +** +** Returns 1 if the v6 address is v4-mapped, 0 otherwise. */ -static void +static int mapped_v4_to_regular_v4(char *str) { char *prefix = "::ffff:"; @@ -867,7 +887,9 @@ if (strncmp(str, prefix, prefix_len) == 0) { int str_len = strlen(str); memmove(str, str + prefix_len, str_len - prefix_len + 1); + return 1; } + return 0; } void @@ -910,7 +932,9 @@ inet_ntop(AF_INET6, &sa_in6P->sin6_addr, ipr, sizeof(ipr)); port = ntohs(sa_in6P->sin6_port); } - mapped_v4_to_regular_v4(ipr); + if (mapped_v4_to_regular_v4(ipr)) { + iperf_set_mapped_v4(test, 1); + } if (test->json_output) cJSON_AddItemToObject(test->json_start, "accepted_connection", iperf_json_printf("host: %s port: %d", ipr, (int64_t) port)); else @@ -925,7 +949,9 @@ cJSON_AddNumberToObject(test->json_start, "tcp_mss_default", test->ctrl_sck_mss); } } + // Duplicate to make sure it appears on all output cJSON_AddNumberToObject(test->json_start, "target_bitrate", test->settings->rate); + cJSON_AddNumberToObject(test->json_start, "fq_rate", test->settings->fqrate); } else if (test->verbose) { iperf_printf(test, report_cookie, test->cookie); if (test->protocol->id == SOCK_STREAM) { @@ -2006,7 +2032,7 @@ return 0; } else { if (test->debug) { - iperf_printf(test, report_authentication_failed, username, ts); + iperf_printf(test, report_authentication_failed, ret, username, ts); } free(username); free(password); @@ -3015,6 +3041,8 @@ struct iperf_stream *sp; int i; + iperf_close_logfile(test); + /* Free streams */ while (!SLIST_EMPTY(&test->streams)) { sp = SLIST_FIRST(&test->streams); @@ -4293,41 +4321,57 @@ /**************************************************************************/ int -iperf_init_stream(struct iperf_stream *sp, struct iperf_test *test) +iperf_common_sockopts(struct iperf_test *test, int s) { - socklen_t len; int opt; - len = sizeof(struct sockaddr_storage); - if (getsockname(sp->socket, (struct sockaddr *) &sp->local_addr, &len) < 0) { - i_errno = IEINITSTREAM; - return -1; - } - len = sizeof(struct sockaddr_storage); - if (getpeername(sp->socket, (struct sockaddr *) &sp->remote_addr, &len) < 0) { - i_errno = IEINITSTREAM; - return -1; - } - /* Set IP TOS */ if ((opt = test->settings->tos)) { - if (getsockdomain(sp->socket) == AF_INET6) { + if (getsockdomain(s) == AF_INET6) { #ifdef IPV6_TCLASS - if (setsockopt(sp->socket, IPPROTO_IPV6, IPV6_TCLASS, &opt, sizeof(opt)) < 0) { + if (setsockopt(s, IPPROTO_IPV6, IPV6_TCLASS, &opt, sizeof(opt)) < 0) { i_errno = IESETCOS; return -1; } + + /* if the control connection was established with a mapped v4 address + then set IP_TOS on v6 stream socket as well */ + if (iperf_get_mapped_v4(test)) { + if (setsockopt(s, IPPROTO_IP, IP_TOS, &opt, sizeof(opt)) < 0) { + /* ignore any failure of v4 TOS in IPv6 case */ + } + } #else i_errno = IESETCOS; return -1; #endif } else { - if (setsockopt(sp->socket, IPPROTO_IP, IP_TOS, &opt, sizeof(opt)) < 0) { + if (setsockopt(s, IPPROTO_IP, IP_TOS, &opt, sizeof(opt)) < 0) { i_errno = IESETTOS; return -1; } } } + return 0; +} + +/**************************************************************************/ +int +iperf_init_stream(struct iperf_stream *sp, struct iperf_test *test) +{ + int opt; + socklen_t len; + + len = sizeof(struct sockaddr_storage); + if (getsockname(sp->socket, (struct sockaddr *) &sp->local_addr, &len) < 0) { + i_errno = IEINITSTREAM; + return -1; + } + len = sizeof(struct sockaddr_storage); + if (getpeername(sp->socket, (struct sockaddr *) &sp->remote_addr, &len) < 0) { + i_errno = IEINITSTREAM; + return -1; + } #if defined(HAVE_DONT_FRAGMENT) /* Set Don't Fragment (DF). Only applicable to IPv4/UDP tests. */ @@ -4368,6 +4412,7 @@ #endif /* IP_MTU_DISCOVER */ } #endif /* HAVE_DONT_FRAGMENT */ + return 0; } @@ -4576,6 +4621,7 @@ } snprintf(buf, sizeof(buf), "%d", getpid()); /* no trailing newline */ if (write(fd, buf, strlen(buf)) < 0) { + (void)close(fd); return -1; } if (close(fd) < 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_api.h new/iperf-3.13/src/iperf_api.h --- old/iperf-3.12/src/iperf_api.h 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_api.h 2023-02-16 23:23:12.000000000 +0100 @@ -118,6 +118,7 @@ int iperf_get_test_duration( struct iperf_test* ipt ); char iperf_get_test_role( struct iperf_test* ipt ); int iperf_get_test_reverse( struct iperf_test* ipt ); +int iperf_get_test_bidirectional( struct iperf_test* ipt ); int iperf_get_test_blksize( struct iperf_test* ipt ); FILE* iperf_get_test_outfile( struct iperf_test* ipt ); uint64_t iperf_get_test_rate( struct iperf_test* ipt ); @@ -143,6 +144,7 @@ int iperf_get_test_get_server_output( struct iperf_test* ipt ); char iperf_get_test_unit_format(struct iperf_test *ipt); char* iperf_get_test_bind_address ( struct iperf_test* ipt ); +char* iperf_get_test_bind_dev(struct iperf_test *ipt); int iperf_get_test_udp_counters_64bit( struct iperf_test* ipt ); int iperf_get_test_one_off( struct iperf_test* ipt ); int iperf_get_test_tos( struct iperf_test* ipt ); @@ -153,6 +155,7 @@ int iperf_get_dont_fragment( struct iperf_test* ipt ); char* iperf_get_test_congestion_control(struct iperf_test* ipt); int iperf_get_test_mss(struct iperf_test* ipt); +int iperf_get_mapped_v4(struct iperf_test* ipt); /* Setter routines for some fields inside iperf_test. */ void iperf_set_verbose( struct iperf_test* ipt, int verbose ); @@ -186,6 +189,7 @@ void iperf_set_test_get_server_output( struct iperf_test* ipt, int get_server_output ); void iperf_set_test_unit_format(struct iperf_test *ipt, char unit_format); void iperf_set_test_bind_address( struct iperf_test* ipt, const char *bind_address ); +void iperf_set_test_bind_dev(struct iperf_test *ipt, const char *bnd_dev); void iperf_set_test_udp_counters_64bit( struct iperf_test* ipt, int udp_counters_64bit ); void iperf_set_test_one_off( struct iperf_test* ipt, int one_off ); void iperf_set_test_tos( struct iperf_test* ipt, int tos ); @@ -195,6 +199,7 @@ void iperf_set_dont_fragment( struct iperf_test* ipt, int dont_fragment ); void iperf_set_test_congestion_control(struct iperf_test* ipt, char* cc); void iperf_set_test_mss(struct iperf_test* ipt, int mss); +void iperf_set_mapped_v4(struct iperf_test* ipt, const int val); #if defined(HAVE_SSL) void iperf_set_test_client_username(struct iperf_test *ipt, const char *client_username); @@ -281,6 +286,12 @@ */ void iperf_free_stream(struct iperf_stream * sp); +/** + * iperf_common_sockopts -- init stream socket with common socket options + * + */ +int iperf_common_sockopts(struct iperf_test *, int s); + int has_tcpinfo(void); int has_tcpinfo_retransmits(void); void save_tcpinfo(struct iperf_stream *sp, struct iperf_interval_results *irp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_error.c new/iperf-3.13/src/iperf_error.c --- old/iperf-3.12/src/iperf_error.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_error.c 2023-02-16 23:23:12.000000000 +0100 @@ -260,11 +260,11 @@ snprintf(errstr, len, "received an unknown control message"); break; case IESENDMESSAGE: - snprintf(errstr, len, "unable to send control message"); + snprintf(errstr, len, "unable to send control message - port may not be available, the other side may have stopped running, etc."); perr = 1; break; case IERECVMESSAGE: - snprintf(errstr, len, "unable to receive control message"); + snprintf(errstr, len, "unable to receive control message - port may not be available, the other side may have stopped running, etc."); perr = 1; break; case IESENDPARAMS: @@ -459,7 +459,7 @@ snprintf(errstr, len, "unable to set IP Do-Not-Fragment flag"); break; case IESETUSERTIMEOUT: - snprintf(errstr, len, "unable to set TCP/SCTP MSS"); + snprintf(errstr, len, "unable to set TCP USER_TIMEOUT"); perr = 1; break; default: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_locale.c new/iperf-3.13/src/iperf_locale.c --- old/iperf-3.12/src/iperf_locale.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_locale.c 2023-02-16 23:23:12.000000000 +0100 @@ -307,7 +307,7 @@ "Authentication succeeded for user '%s' ts %ld\n"; const char report_authentication_failed[] = -"Authentication failed for user '%s' ts %ld\n"; +"Authentication failed with return code %d for user '%s' ts %ld\n"; const char report_reverse[] = "Reverse mode, remote host %s is sending\n"; @@ -450,11 +450,7 @@ const char report_tcpInfo[] = "event=TCP_Info CWND=%u SND_SSTHRESH=%u RCV_SSTHRESH=%u UNACKED=%u SACK=%u LOST=%u RETRANS=%u FACK=%u RTT=%u REORDERING=%u\n"; #endif -#if defined(__FreeBSD__) -const char report_tcpInfo[] = -"event=TCP_Info CWND=%u RCV_WIND=%u SND_SSTHRESH=%u RTT=%u\n"; -#endif -#if defined(__NetBSD__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) const char report_tcpInfo[] = "event=TCP_Info CWND=%u RCV_WIND=%u SND_SSTHRESH=%u RTT=%u\n"; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_server_api.c new/iperf-3.13/src/iperf_server_api.c --- old/iperf-3.12/src/iperf_server_api.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_server_api.c 2023-02-16 23:23:12.000000000 +0100 @@ -382,7 +382,6 @@ cleanup_server(struct iperf_test *test) { struct iperf_stream *sp; - iperf_close_logfile(test); /* Close open streams */ SLIST_FOREACH(sp, &test->streams, streams) { @@ -390,6 +389,7 @@ FD_CLR(sp->socket, &test->read_set); FD_CLR(sp->socket, &test->write_set); close(sp->socket); + sp->socket = -1; } } @@ -561,7 +561,7 @@ test->server_forced_no_msg_restarts_count += 1; i_errno = IENOMSG; if (iperf_get_verbose(test)) - iperf_err(test, "Server restart (#%d) during active test due to idle data for receiving data", + iperf_err(test, "Server restart (#%d) during active test due to idle timeout for receiving data", test->server_forced_no_msg_restarts_count); cleanup_server(test); return -1; @@ -609,6 +609,13 @@ return -1; } + /* apply other common socket options */ + if (iperf_common_sockopts(test, s) < 0) + { + cleanup_server(test); + return -1; + } + if (!is_closed(s)) { #if defined(HAVE_TCP_USER_TIMEOUT) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_tcp.c new/iperf-3.13/src/iperf_tcp.c --- old/iperf-3.12/src/iperf_tcp.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_tcp.c 2023-02-16 23:23:12.000000000 +0100 @@ -545,6 +545,9 @@ } } + /* Set common socket options */ + iperf_common_sockopts(test, s); + if (connect(s, (struct sockaddr *) server_res->ai_addr, server_res->ai_addrlen) < 0 && errno != EINPROGRESS) { saved_errno = errno; close(s); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/iperf_udp.c new/iperf-3.13/src/iperf_udp.c --- old/iperf-3.12/src/iperf_udp.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/iperf_udp.c 2023-02-16 23:23:12.000000000 +0100 @@ -555,6 +555,9 @@ } } + /* Set common socket options */ + iperf_common_sockopts(test, s); + #ifdef SO_RCVTIMEO /* 30 sec timeout for a case when there is a network problem. */ tv.tv_sec = 30; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/main.c new/iperf-3.13/src/main.c --- old/iperf-3.12/src/main.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/main.c 2023-02-16 23:23:12.000000000 +0100 @@ -151,7 +151,7 @@ for (;;) { int rc; rc = iperf_run_server(test); - test->server_last_run_rc =rc; + test->server_last_run_rc = rc; if (rc < 0) { iperf_err(test, "error - %s", iperf_strerror(i_errno)); if (test->json_output) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/portable_endian.h new/iperf-3.13/src/portable_endian.h --- old/iperf-3.12/src/portable_endian.h 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/portable_endian.h 2023-02-16 23:23:12.000000000 +0100 @@ -20,18 +20,7 @@ #elif defined(HAVE_SYS_ENDIAN_H) # include <sys/endian.h> -# if defined(__OpenBSD__) - -# define be16toh(x) betoh16(x) -# define le16toh(x) letoh16(x) - -# define be32toh(x) betoh32(x) -# define le32toh(x) letoh32(x) - -# define be64toh(x) betoh64(x) -# define le64toh(x) letoh64(x) - -# elif defined(__sgi) +# if defined(__sgi) # include <netinet/in.h> # include <inttypes.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.12/src/tcp_info.c new/iperf-3.13/src/tcp_info.c --- old/iperf-3.12/src/tcp_info.c 2022-09-30 20:49:24.000000000 +0200 +++ new/iperf-3.13/src/tcp_info.c 2023-02-16 23:23:12.000000000 +0100 @@ -60,7 +60,7 @@ int has_tcpinfo(void) { -#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) \ +#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) \ && defined(TCP_INFO) return 1; #else @@ -82,7 +82,7 @@ #else #if defined(__FreeBSD__) && __FreeBSD_version >= 600000 return 1; /* Should work now */ -#elif defined(__NetBSD__) && defined(TCP_INFO) +#elif (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(TCP_INFO) return 1; #else return 0; @@ -94,7 +94,7 @@ void save_tcpinfo(struct iperf_stream *sp, struct iperf_interval_results *irp) { -#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) && \ +#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && \ defined(TCP_INFO) socklen_t tcp_info_length = sizeof(struct tcp_info); @@ -118,7 +118,7 @@ return irp->tcpInfo.tcpi_total_retrans; #elif defined(__FreeBSD__) && __FreeBSD_version >= 600000 return irp->tcpInfo.tcpi_snd_rexmitpack; -#elif defined(__NetBSD__) && defined(TCP_INFO) +#elif (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(TCP_INFO) return irp->tcpInfo.tcpi_snd_rexmitpack; #else return -1; @@ -138,6 +138,8 @@ return irp->tcpInfo.tcpi_snd_cwnd; #elif defined(__NetBSD__) && defined(TCP_INFO) return (long)irp->tcpInfo.tcpi_snd_cwnd * irp->tcpInfo.tcpi_snd_mss; +#elif defined(__OpenBSD__) && defined(TCP_INFO) + return irp->tcpInfo.tcpi_snd_cwnd; #else return -1; #endif @@ -158,6 +160,8 @@ return irp->tcpInfo.tcpi_snd_wnd; #elif defined(__NetBSD__) && defined(TCP_INFO) return (long)irp->tcpInfo.tcpi_snd_wnd * irp->tcpInfo.tcpi_snd_mss; +#elif defined(__OpenBSD__) && defined(TCP_INFO) + return irp->tcpInfo.tcpi_snd_wnd; #else return -1; #endif @@ -174,7 +178,7 @@ return irp->tcpInfo.tcpi_rtt; #elif defined(__FreeBSD__) && __FreeBSD_version >= 600000 return irp->tcpInfo.tcpi_rtt; -#elif defined(__NetBSD__) && defined(TCP_INFO) +#elif (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(TCP_INFO) return irp->tcpInfo.tcpi_rtt; #else return -1; @@ -192,7 +196,7 @@ return irp->tcpInfo.tcpi_rttvar; #elif defined(__FreeBSD__) && __FreeBSD_version >= 600000 return irp->tcpInfo.tcpi_rttvar; -#elif defined(__NetBSD__) && defined(TCP_INFO) +#elif (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(TCP_INFO) return irp->tcpInfo.tcpi_rttvar; #else return -1; @@ -223,11 +227,7 @@ r->tcpInfo.tcpi_lost, r->tcpInfo.tcpi_retrans, r->tcpInfo.tcpi_fackets, r->tcpInfo.tcpi_rtt, r->tcpInfo.tcpi_reordering); #endif -#if defined(__FreeBSD__) && defined(TCP_INFO) - sprintf(message, report_tcpInfo, r->tcpInfo.tcpi_snd_cwnd, - r->tcpInfo.tcpi_rcv_space, r->tcpInfo.tcpi_snd_ssthresh, r->tcpInfo.tcpi_rtt); -#endif -#if defined(__NetBSD__) && defined(TCP_INFO) +#if (defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && defined(TCP_INFO) sprintf(message, report_tcpInfo, r->tcpInfo.tcpi_snd_cwnd, r->tcpInfo.tcpi_rcv_space, r->tcpInfo.tcpi_snd_ssthresh, r->tcpInfo.tcpi_rtt); #endif ++++++ iperf-3.12.tar.gz.sha256 -> iperf-3.13.tar.gz.sha256 ++++++ --- /work/SRC/openSUSE:Factory/iperf/iperf-3.12.tar.gz.sha256 2022-12-06 16:42:59.376765061 +0100 +++ /work/SRC/openSUSE:Factory/.iperf.new.31432/iperf-3.13.tar.gz.sha256 2023-03-13 12:41:09.323810318 +0100 @@ -1 +1 @@ -72034ecfb6a7d6d67e384e19fb6efff3236ca4f7ed4c518d7db649c447e1ffd6 iperf-3.12.tar.gz +bee427aeb13d6a2ee22073f23261f63712d82befaa83ac8cb4db5da4c2bdc865 iperf-3.13.tar.gz