1
1

476 Коммитов

Автор SHA1 Сообщение Дата
Bruce A. Mah
cfcfabf5d7
fix(cygwin): Fix compile error where CPU_SETSIZE isn't defined. (#948)
Based on a fix from @RomelSan.

Fixes #944.
2020-03-17 13:51:07 -07:00
Xiang Xiao
0eb370de2e
check SIGINT/SIGTERM/SIGHUP defined before using them
since not all platform define these signal number

Part of #935.

Change-Id: I98f14590ad45d1fe7e61076cce5a76b7874772ea
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
(cherry picked from commit d4267b66b5550c0e4cfec60439eab1d57a4a0c7a)
Signed-off-by: Bruce A. Mah <bmah@es.net>
2020-01-02 15:54:19 -08:00
Xiang Xiao
a0af1e68c8
change some file mode from 100755 to 100644
Part of #935.

Change-Id: I5c563ad0cffce1a75b6a8039aa9a2e1543763880
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
(cherry picked from commit d7e30bea791e7bcd28eebf1ca6fe39e4f00ddc3c)
Signed-off-by: Bruce A. Mah <bmah@es.net>
2020-01-02 13:16:47 -08:00
Bruce A. Mah
a294bd4ce7
fix: Copy some strings passed as API parameters for consistency with CLI. (#943)
Fixes #939.
2019-12-20 15:39:26 -08:00
Ondrej Lichtner
80353b0ada fix: fix burst mode throttle checking (#898)
When burst mode is configured for unlimited rate (-b0) but with a
specific packet burst value (e.g. /1000), iperf only sends packets once,
after that the iperf_check_throttle function gets called and sets
green_light=0 due to the rate value being 0 and average calculated rate
always being higher than 0.

The iperf_check_throttle function is designed to be skipped in case the
target rate is unlimited or if a specific burst value was configured,
however this skip is only utilized in one place where the function is
called leading to the situation above.

This can be fixed by moving the "skip throttling" condition directly
inside the iperf_check_throttle function.

Signed-off-by: Ondrej Lichtner <olichtne@redhat.com>
2019-10-01 16:55:14 -07:00
Allen Flickinger
22da02dcfb enh: Add server authentication API functions (#911) 2019-10-01 13:28:38 -07:00
Sergey Nemov
9c69a85088 fix: Fix a bug in --bidir option processing (#903)
If --bidir option was passed before --client option on command line,
the latter would override ipt->mode parameter of the test back to SENDER
or RECEIVER making the test hang during execution.

Fix this by checking if ipt->bidirectional was set to true in
iperf_set_test_role() function.
2019-08-19 14:29:27 -07:00
Bruce A. Mah
c4bd56f373
fix: Fix off-by-one memory overwrite crash and memory leaks (#887)
The base64 decode will crash on musl c-library builds for OpenWRT
due to the write of the '\0' past the end of the allocated buffer.
Fix other various memory leaks on the authentication code paths.
Fix some memory-free library calls into OpenSSL.

Based heavily on PR #881 originally submitted by @acmay, 
with comments from @ralcini.
2019-06-18 15:11:32 -07:00
Bruce A. Mah
6c7834629a
Fix: Don't allow --port 0 or other invalid values. (#885)
* Fix:  Don't allow --port or --cport to take 0 or other invalid values.

Fixes #884.
2019-06-14 11:21:15 -07:00
srgnk
255a9c7110 enh: Introduce iperf_set_test_logfile API function (#871)
To be able to set the test->outfile to a different file other than default
if using libiperf API.

Since logfile is now opened in iperf_parse_arguments() and this function
may not be used if running iperf using API, define a dedicated function
iperf_open_logfile() and move the opening of logfile into
iperf_run_client() and iperf_run_server() to make sure logfile will be
opened if iperf_parse_arguments() was not called.
2019-06-05 16:08:17 -07:00
srgnk
2679640c0f fix: Don't print spurious JSON server output in bidir mode (#868)
In bidirectional mode, if option --get-server-output is set and if
both client and server have --json set to true, client would still print
the json output of server to stdout as a separate piece instead of
including it into client's json output.

This patch fixes this problem, the server's json output would be
appended to client's json field 'server_output_json' as it should be.
2019-05-28 12:02:07 -07:00
srgnk
a9af2b5127 enh: Introduce API functions for no_delay option (#870) 2019-05-17 13:39:40 -07:00
srgnk
8fc10fa34b enh: Introduce API functions for repeating_payload option (#869) 2019-05-17 13:38:58 -07:00
srgnk
e9e984de2b fix: Pass repeating_payload option to server (#867)
If client was started with --repeating-payload option, tell the
server to use the repeating_payload also.

Since repeating_payload is a client specific option at the moment and
we don't tell the server if repeating_payload was set not not,
server always uses randomized patterns in reverse and bidirectional
modes disregarding what patterns the client was told to generate.

So, if client was started with both --repeating-payload and --reverse,
the server would still send the randomized data to the client which
doesn't seem right.

This commit fixes this issue.

Signed-off-by: Sergey Nemov <sergey.nemov@intel.com>
2019-05-17 13:21:31 -07:00
Bruce A. Mah
61b82c0b25
fix: Use timezone from time formatting, not a (wrong) hardcoded string. (#857)
Fixes #838.
2019-04-12 17:21:19 -04:00
Matt Pelland
40e7c05440 implement providing password via environment variable (#815) 2019-02-01 14:39:43 -08:00
Boris Okunev
0778f04c98 Bidirect mode implementation (#780)
Adds the `--bidir` flag to support simultaneous two-way tests.

Submitted by @LikHait.  Fixes #201.
2018-12-13 12:59:02 -08:00
Bruce A. Mah
d13fa7ce39
Merge branch 'iperf_time' of https://github.com/accelleran/iperf into accelleran-iperf_time 2018-09-28 10:35:23 -07:00
RollingSlack
197d27ac76 Show client's target bitrate (-b/--bitrate) in server output (json,verbose) (#776)
Fixes #599.
2018-09-28 09:37:38 -07:00
Bruce A. Mah
d71efe5ff5
Fix a segmentation fault in verbose mode. (#784)
To reproduce, run the server as "iperf3 --server --verbose" and
run a client as "iperf3 --client localhost -reverse --parallel 2".
Fixes #778.

Based on https://github.com/Aquantia/iperf/commit/f1778271d2c6bed1dae09dccd33251
1b263f6871
2018-08-22 14:11:05 -07:00
Boris Okunev
da6eebb521 Fixed function implementation (#775)
* Fixed implementation of function set_test-reverse().

* Correct/improve some other checks
2018-08-14 15:47:21 -07:00
RollingSlack
beac6881e6 Add libiperf api for getting iperf version (#767)
Also includes a test program.
2018-08-09 12:36:54 -07:00
Sam Hooke
02e16f67fb Towards issue 595 (#762)
* Add pacing timer, bytes and blocks functions to libiperf.

* Explicitly cast to uint64_t to match return type.
2018-06-28 13:30:41 -07:00
Bruce A. Mah
1254e135fd
Warn if doing JSON output and either -d or -v are specified.
Debugging and/or verbose output can get in the way of producing
valid/parsable JSON.

Inspired by #737.
2018-06-08 11:55:33 -07:00
Bruce A. Mah
7f883016bb
Add a forgotten cast to fix a glitch in JSON output on CentOS 6. (#744)
Fixes #727.
2018-05-30 11:32:38 -07:00
Ben Fox-Moore
cde81d7640 Add initial portable time abstraction 2018-05-17 14:09:52 +02:00
Bruce A. Mah
829d619ab4
First try at implementing --extra-data. (#729)
Towards #600.
2018-05-09 17:42:17 -07:00
ralcini
e28f12c788 Add authentication functions to libiperf (#713)
Fixes #712.  A subsequent commit will add some information to the libiperf manual page.
2018-04-27 13:39:28 -07:00
Phil Levchenko
cbea72b6ee Add --repeating-payload option to the client side (#726)
This option simulates payload in iperf2, which is just repetitive pattern
(ASCII '0..9' repeating), as opposed to iperf3 where payload is random.
It might help in testing and reveal problems in networking gear with hardware
compression (including WiFi access points), where iperf2 and iperf3 perform
differently, just based on payload entropy.
2018-04-20 07:25:24 -07:00
Bruce A. Mah
6332d84016
Wordsmith warning message from #721 / #709. 2018-04-20 07:21:23 -07:00
Kai Borowiak
22508a21b0 Add warning if JSON output is used with explicit report format (#721)
Fixes #709.
2018-04-20 07:17:39 -07:00
Kai Borowiak
c0a441756a Add ToS Byte to iperf API (#719)
* Add ToS byte to iperf API

* Add function prototype to manual page
2018-03-23 06:28:20 -07:00
Bruce A. Mah
e7aa59b6b8
Make --cport work without --bind (#697).
This commit also adds SCTP support for --cport.

Fixes #616.
2018-02-12 10:30:23 -08:00
Bruce A. Mah
47450ad9e1
Fix a server-side crash with --verbose and a client with multiple connections. (#696)
This was caused by a stale / invalid pointer reference that didn't even
make any sense in context anyway.  Fixes #686.
2018-01-26 13:35:45 -08:00
Suresh Sundriyal
a5e327b442 Include signal.h + time.h. (#680)
Required to avoid implicit declarations of 'signal()' and 'time()'; which
causes compilation to error out while compiling a statically linked binary.
2018-01-03 12:00:27 -08:00
Bruce A. Mah
eddfb8267e
Fix a couple of problems with the help message for the --length option.
* The canonical long-form option name is "length", not "len".

* The default length for UDP should be displayed in bytes not KB.
2017-11-27 09:50:50 -08:00
Bruce A. Mah
19329249d1
Fix some compile-time warnings on macOS (#671)
* Attempt to quiet a warning with print(3) formatting. As a part of this, factor out PRIu64 support / compatibility (added in #664) into a header file and make it more portable by taking into account the size of a long integer. Based on email conversation with: @pprindeville.

* Follow-up to pull request #669, fixing compiler warnings on platforms that don't have HAVE_TCP_CONGESTION defined.
2017-11-16 14:12:24 -08:00
Bruce A. Mah
222da46ba9
Follow-on to pull-request #665...update manpage and comments.
These reflect support for -A on Windows.
2017-11-13 13:00:10 -08:00
Boris Okunev
5b27ea39a7 Implemented -A flag for Windows (#665)
TODO:  Need to update some documentation that reflects `-A` is applicable to Windows.  @bmah888 to do this.
2017-11-13 12:54:34 -08:00
Todd C. Miller
480824e3c1 Remove a few unnecessary headers and unused functions. (#667)
* EXIT_SUCCESS and EXIT_FAILURE are defined in stdlib.h, not sysexits.h
so no need to include the latter.

* No need to include pthread.h.

* Remove the no longer used delay() function.
This also removes the reliance on nanosleep().

* Remove get_tcp_windowsize() and set_tcp_windowsize() which are unused.
These days, iperf uses get/setsockopt() with SO_SNDBUF SO_RCVBUF directly.
2017-11-11 10:26:59 -08:00
Philip Prindeville
d88f4cecf3 Fix 3.3 build warnings (#664)
* Fix warnings about _GNU_SOURCE being redefined.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>

* Fix warnings of format-specified mismatching type

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>

* Simplify endianness checks

Linux can be built with too many types of C run-time library and it's
not reasonable to have to enumerate all of them, especially since at
least one of them (MUSL) goes out of its way to not be easily
detectable.

Instead, leverage autoconf better for Linux/BSD to detect either
<endian.h> or <sys/endian.h> directly.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>

* Sys headers should not be included directly

There's usually a top-level header which then includes the sys/
descendent.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-11-08 09:29:26 -08:00
Bruce A. Mah
010fc7e6c8 Don't overwrite a PID file corresponding to a valid process. (#654)
This fixes a problem described in issue #623 where the PID file
opened by a running instance of iperf3 could be overwritten /
deleted by a subsequent invocation of iperf3.
2017-10-25 10:04:26 -07:00
Bruce A. Mah
24da2caa09 Fix memory leak introduced in 1460aa3433769db1f5660e7819b669e5414e9b42. (#652)
Pointed out by:  @pprindeville
Should have been found by:  @bmah888
2017-10-13 11:01:06 -07:00
ralcini
1460aa3433 fix for https://github.com/esnet/iperf/issues/650 (#651)
Reset authentication token between tests.  Fixes #650.
2017-10-11 14:03:57 -07:00
Bruce A. Mah
b5640ac6c2 Clear TOS value when resetting test parameters. (#647)
This addresses a problem where the --tos parameter would incorrectly
"stick" on the server, causing wrong TOS values to be inserted into
packets during --reverse tests.  Fixes #639.
2017-10-11 12:10:11 -07:00
Bruce A. Mah
720a0a3e63 Allow the client to pass a duration of 0 to the server. (#648)
Seems to fix #645.
2017-10-11 11:05:55 -07:00
Malte
b2900fd710 Delete outdated comment
This comment became outdated with cba8584b2
2017-10-04 02:09:30 +02:00
Bruce A. Mah
b5597278b5 Towards issue #278. Don't print small, dataless last intervals. (#592)
This is mostly a cosmetic fix...due to timing differences or
interference from data packets, it is possible that the server
will have a very small last measurement window, possibly with
no data transferred.  This looks odd (although it's not incorrect)
and we'd like to eliminate these.  If there's an interval
(presumably it'd be the last measurement interval) less than
10% of the length of a standard measurement/reporting interval,
and there are no bytes transferred in the interval, then suppress
printing the results and don't add them to the grand total.
2017-06-05 10:38:36 -07:00
Bruce A. Mah
c458a115b7 Fix -F problems (#588)
Attempt to fix some brokenness in -F from #301.

In some work related to #125, we introduced a bug in which
chunks of a file being read for the -F option were not
completely sent, particularly with TCP sockets.  We attempt
to fix this by detecting cases in which not all data passed
to a socket could be actually sent (for example due to full
socket buffers) and preserving that data for future send
iterations.

The ending statistics in the "diskfile" JSON structure were
wrong, and did not properly distinguish between sender-side
and receiver-side statistics.  This has been fixed (at least
for the client side).

Specifically mention in the manpage that "iperf -F" is not
a file transfer tool.
2017-05-30 14:15:28 -07:00
Bruce A. Mah
39de1e0f27
Merge branch 'master' of github.com:esnet/iperf 2017-05-24 11:08:37 -07:00