Commit Graph

466 Commits

Author SHA1 Message Date
Bruce A. Mah
cf451d861f Add .hgignore file to quiet down "hg stat". 2014-02-03 15:09:01 -08:00
Bruce A. Mah
9a829841eb Replace system("uname -a") with call to uname(3).
Slightly reworked version of a patch that was...

Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-30 15:15:53 -08:00
Bruce A. Mah
441d8b75a0 Add support for writing the PID to a file in server mode.
This is specified with the -I or --pidfile option.

Issue:		120 (PID file support)
2014-01-24 16:42:10 -08:00
Bruce A. Mah
343c141874 Mention the need for -4 when running as a server on OpenBSD.
Issue:		108 (Runtime error on OpenBSD 5.4 AMD64)
2014-01-21 16:12:23 -08:00
Bruce A. Mah
09f54a4f44 Fix warning on platforms that don't support processor affinity.
No functional change.
2014-01-21 15:03:29 -08:00
Bruce A. Mah
723f2f7b2a Fix an abort observed on MacOS X 10.9 (but applicable to other platforms).
mapped_v4_to_regular_v4() committed the sin of doing strcpy(3) on
overlapping buffers.  This caused an abort on MacOS X 10.9.  Fix this
to use memcpy(3) instead, which handles overlapping buffers correctly.

Issue:		135 (Crash on OS X when using IP address)
2014-01-21 12:59:47 -08:00
Bruce A. Mah
0ff7575499 Fix build on Linux distros that don't support TCP_CONGESTION.
Apparently older kernels don't support TCP_CONGESTION, so we can't
just test for defined(linux) to know if we can use this sockopt or not.
This change unbreaks the build on (notably) CentOS 5.
2014-01-16 10:43:08 -08:00
Bruce A. Mah
7234074fe8 Whoops. Forgot to document the -d flag properly. Do this. 2014-01-15 12:01:22 -08:00
Bruce A. Mah
cf59099b49 Add support for a -d debug flag to enable debugging output.
Mostly intended for developer use.  At the moment there are no public
uses for this flag.
2014-01-15 10:27:33 -08:00
Bruce A. Mah
deefb95fea Add FreeBSD support for -A (set CPU affinity).
Mostly this change consists of adding FreeBSD-specific code to handle
this feature.  The concepts and system calls are very similar to what's
already done for Linux.  One difference is that on FreeBSD, the CPU
affinity mask is saved before -A processing and restored afterwards.
This causes a slight change to the function signatures for
iperf_setaffinity() and iperf_clearaffinity() (these functions
however are not documented as a part of the libiperf3 API).

Slightly improve some of the documentation for the -A command line
option, to hopefully stave off some of the questions about this
feature.

Mostly based on a submitted patch.

Issue:          128 (better error message for CPU affinity failure)
Submitted by:   Susant Sahani <ssahani@redhat.com>
2014-01-13 10:58:47 -08:00
Bruce A. Mah
55a453c2a1 Clean up some memory leaks in iperf_new_stream error handling.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-13 09:27:42 -08:00
Bruce A. Mah
0129f08391 tagging 3.0.1 2014-01-10 13:25:18 -08:00
Bruce A. Mah
49f74e582c Prepare for iperf3 3.0.1. 2014-01-10 13:22:11 -08:00
Bruce A. Mah
a844d3ba95 Minor improvements to make_release script.
Allow optional specification of a version string (the intended use of
this to be able to roll a tarball from a source tree / repo that's not
the exact version being released).

Compute and display SHA256 hash of the tarball on Linux, FreeBSD, and
MacOS.

Don't exclude make_release from the tarball (no point in hiding it)
but do try a little harder to get rid of .hg\* files.

Comment out some debugging code.
2014-01-09 13:26:32 -08:00
Bruce A. Mah
5f693411d2 Whitespace fixes, no content changes. 2014-01-08 09:28:49 -08:00
Brian Tierney
fa34a97f49 updating to prepare for 3.0.0 release; still need to add final release date 2014-01-07 16:45:43 -08:00
Bruce A. Mah
5238ff0458 Happy 2014. 2014-01-07 16:12:34 -08:00
Bruce A. Mah
c04bdcb9d0 Second try at printing statistics when processes are interrupted.
When the client process gets interrupted, both the client and server
dump out accumulated interval statistics, as well as a partial set of
summary statistics (basically each side dumps what it has, but without
the exchange of information that usually happens at the end of a
normal run).

If the server process gets interrupted, the server dumps out its
accumulated interval and summary statistics as above.  The client does
this as well in the -R case, but exits with a "Broken pipe" in the non
-R case (this behavior was present all along; it was not introduced in
this change).  More investigation will be needed to understand the
client behavior.

Bump copyright dates in a few places.

Issue:		132 (signal handler for API calls)
Discussed with:	aaron@internet2.edu
2014-01-07 16:06:27 -08:00
Bruce A. Mah
a898ff8b8e If the client gets interrupted / signaled, dump JSON output.
Issue:		132 (signal handler for API calls)
2014-01-06 12:18:21 -08:00
Bruce A. Mah
ac0786c828 Fix typos: s/exitting/exiting/
Bump a couple of copyright dates while here.
2014-01-03 11:24:06 -08:00
Bruce A. Mah
c7ddebaa6c Fix memory leaks in iperf_reset_test().
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-03 11:19:26 -08:00
Bruce A. Mah
0b9ba1005a Fix a server side crash with -P and -R.
The problem was a mangled printf format string, which I introduced in
616ac79bd80b.

Issue:		129 (iperf3 hangs with -R and -Z flags)
2014-01-03 10:33:28 -08:00
Bruce A. Mah
0fdda50c64 Fix a deadlock leading to a hang in -R mode.
In -R mode, the test consists of the server sending to the client
until the client tells it to stop by setting the test state to
TEST_END via the control socket.  However once the client changes the
test state, it stopped reading the incoming test data from the server.
In many (but not all) scenarios this could result in the server
filling up its send window (thus blocking on writes) before the
TEST_END message arrived from the client.  At this point the server
was hanging waiting for the client to drain its data connection(s),
and the client was waiting for the server to send a state change
message for EXCHANGE_RESULTS.

Bump copyright date while here.

This fix handles at least part of...

Issue:		129 (iperf3 hangs with -R and -Z flags)
2014-01-03 10:06:16 -08:00
Bruce A. Mah
48e66b9b9a Improve error message for TCP congestion algorithm setting failure.
Also remove a couple of places where we were saving and restoring errno
where we didn't need to.

Submitted by:	Susant Sahani <ssahani@redhat.com>
Issue:		121 (TCP congestion control algorithm support for client)
2014-01-02 13:49:56 -08:00
Bruce A. Mah
7da3d76096 Fix another minor memory leak.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-02 13:26:51 -08:00
Bruce A. Mah
e3faf8e421 Fix minor memory leak.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-02 13:21:49 -08:00
Brian Tierney
dd05057260 added test for -C flag 2013-12-20 15:05:21 -08:00
Brian Tierney
d7e699e3af added simple test script 2013-12-20 14:46:24 -08:00
Bruce A. Mah
39ad947995 For now, suppress printing congestion window stats in the output.
(It remains in the JSON output.)

We have some issues we need to resolve about the formatting and
representation of this (and other future values that we might be
adding).
2013-12-19 14:44:15 -08:00
Bruce A. Mah
2d83fe3f2b Branch merge. 2013-12-19 13:39:07 -08:00
Bruce A. Mah
dcd7b32b15 Follow-on to 4cfce137e89c based on some feedback and experience.
Rip out the tcpi_sacked support...it doesn't really keep a cumulative
total of SACKs received like we thought it did (it's instantaneous
state).

Convert tcpi_snd_cwnd (originally expressed in segments) to octets before
printing.

Re-work internal APIs for functions to get stuff out of tcp_info...rather
than doing a getsockopt() call per value, grab the values out of a
saved copy of the tcp_info structure (which we were getting in almost
every case anyway).

Issue:		99 (Additional TCP_INFO items)
2013-12-19 13:37:50 -08:00
Bruce A. Mah
559e6ce72c Branch merge. 2013-12-19 11:54:10 -08:00
Bruce A. Mah
310bd92410 Fix minor output glitch where we printed "receiver" when we meant "sender". 2013-12-19 11:44:03 -08:00
Bruce A. Mah
8d1388a3b8 Fix a logic bug in JSON output where default MSS was output as 0. 2013-12-19 11:33:38 -08:00
Jef Poskanzer
f11d3fa332 Added -k / --blockcount. 2013-12-19 10:31:22 -08:00
Bruce A. Mah
c2cb7b7520 Remove some (commented out) debugging code accidentally left in. 2013-12-19 09:27:12 -08:00
Jef Poskanzer
3f4d657209 Added note to -h output for -b flag's burst mode. 2013-12-18 20:56:21 -08:00
Brian Tierney
87f4ff6fc4 merging 2013-12-18 15:28:30 -08:00
Brian Tierney
849fc85a72 updated for 3.0.0 release 2013-12-18 15:23:16 -08:00
Bruce A. Mah
ae3ea78645 Branch merge. 2013-12-18 15:15:43 -08:00
Jef Poskanzer
6a00b2dfdd Branch merge. 2013-12-18 15:12:43 -08:00
Jef Poskanzer
89c05f5e9d Branch merge. 2013-12-18 15:10:01 -08:00
Bruce A. Mah
5cdc6a4ac8 Keep track of SACKs and snd_cwnd from tcp_info (Linux only for now).
Committing this WIP so we can get some experimentation done with it.
2013-12-18 15:09:46 -08:00
Brian Tierney
05dfd3b32f added instructions on bootstrap.sh 2013-12-18 15:08:35 -08:00
Jef Poskanzer
10e7a31811 Branch merge. 2013-12-18 15:08:20 -08:00
Bruce A. Mah
ee670372a9 Branch merge. 2013-12-18 14:48:11 -08:00
Bruce A. Mah
cfe8c5fb47 Make "iperf3 -s" accept both IPv4 and IPv6 connections on FreeBSD.
(Formerly it was just accepting IPv6.)

The problem here was that FreeBSD by default wasn't allowing IPv4
mapped addresses on IPv6 sockets, whereas other platforms
(specifically Linux and OS X) both do permit this.  We tried to turn
on mapped addresses via a setsockopt(IPV6_V6ONLY) call, but this call
was broken because the level argument was incorrect.  We didn't know
about this because we never checked the return value.

Fix this by providing the correct argument to setsockopt().  Add some
error checking to this and one other setsockopt() call, so we at least
don't fail silently in similar situations.

Issue:		126 (FreeBSD:  iperf3 -s only accepts IPv6
		connections)
2013-12-18 14:43:12 -08:00
Jef Poskanzer
db446fa66e Branch merge, I think because I forgot to pull before pushing. 2013-12-17 16:15:07 -08:00
Jef Poskanzer
bdf5335c2b Added burst mode. 2013-12-17 16:12:24 -08:00
Bruce A. Mah
a45a0d37b4 Mention -D, -C, -L in release notes.
These go to a new section that might be merged with the prior 3.0.0
section pending a release engineering discussion.

Also fix a typo:  s/vebose/verbose/
2013-12-16 10:15:32 -08:00