| .TH LIBIPERF 3 "June 2018" ESnet "User Manuals" |
| .SH NAME |
| libiperf \- API for iperf3 network throughput tester |
| |
| .SH SYNOPSIS |
| #include <iperf_api.h> |
| .br |
| \-liperf |
| |
| .SH DESCRIPTION |
| .PP |
| Libiperf gives you access to all the functionality of the iperf3 |
| network testing tool. |
| You can build it directly into your own program, instead of having |
| to run it as a shell command. |
| |
| .SH CALLS |
| Initialization / termination: |
| .nf |
| struct iperf_test *iperf_new_test(); |
| int iperf_defaults(struct iperf_test *t); |
| void iperf_free_test(struct iperf_test *t); |
| .fi |
| Setting test parameters: |
| .nf |
| void iperf_set_test_role( struct iperf_test *pt, char role ); |
| void iperf_set_test_bind_address( struct iperf_test *t, char *bind_address ); |
| void iperf_set_test_server_hostname( struct iperf_test *t, char *server_host ); |
| void iperf_set_test_server_port( struct iperf_test *t, int server_port ); |
| void iperf_set_test_duration( struct iperf_test *t, int duration ); |
| void iperf_set_test_blksize( struct iperf_test *t, int blksize ); |
| void iperf_set_test_num_streams( struct iperf_test *t, int num_streams ); |
| void iperf_set_test_json_output( struct iperf_test *t, int json_output ); |
| int iperf_has_zerocopy( void ); |
| void iperf_set_test_zerocopy( struct iperf_test* t, int zerocopy ); |
| void iperf_set_test_tos( struct iperf_test* t, int tos ); |
| .fi |
| Authentication functions: |
| .nf |
| void iperf_set_test_client_username(struct iperf_test *ipt, char *client_username) |
| void iperf_set_test_client_password(struct iperf_test *ipt, char *client_password) |
| void iperf_set_test_client_rsa_pubkey(struct iperf_test *ipt, char *client_rsa_pubkey_base64) |
| .fi |
| Running a test: |
| .nf |
| int iperf_run_client(struct iperf_test *); |
| int iperf_run_server(struct iperf_test *); |
| void iperf_reset_test(struct iperf_test *); |
| .fi |
| Output: |
| .nf |
| FILE *iperf_get_test_outfile(struct iperf_test *); |
| char* iperf_get_test_json_output_string(struct iperf_test *); |
| .fi |
| Error reporting: |
| .nf |
| void iperf_err(struct iperf_test *t, const char *format, ...); |
| char *iperf_strerror(int); |
| extern int i_errno; |
| .fi |
| This is not a complete list of the available calls. |
| See the include file for more. |
| |
| .SH EXAMPLES |
| Here's some sample code that runs an iperf client: |
| .nf |
| struct iperf_test *test; |
| test = iperf_new_test(); |
| if ( test == NULL ) { |
| fprintf( stderr, "%s: failed to create test\n", argv0 ); |
| exit( EXIT_FAILURE ); |
| } |
| iperf_defaults( test ); |
| iperf_set_test_role( test, 'c' ); |
| iperf_set_test_server_hostname( test, host ); |
| iperf_set_test_server_port( test, port ); |
| if ( iperf_run_client( test ) < 0 ) { |
| fprintf( stderr, "%s: error - %s\n", argv0, iperf_strerror( i_errno ) ); |
| exit( EXIT_FAILURE ); |
| } |
| iperf_free_test( test ); |
| .fi |
| And here's a server: |
| .nf |
| struct iperf_test *test; |
| test = iperf_new_test(); |
| if ( test == NULL ) { |
| fprintf( stderr, "%s: failed to create test\n", argv0 ); |
| exit( EXIT_FAILURE ); |
| } |
| iperf_defaults( test ); |
| iperf_set_test_role( test, 's' ); |
| iperf_set_test_server_port( test, port ); |
| for (;;) { |
| if ( iperf_run_server( test ) < 0 ) |
| fprintf( stderr, "%s: error - %s\n\n", argv0, iperf_strerror( i_errn |
| o ) ); |
| iperf_reset_test( test ); |
| } |
| iperf_free_test( test ); |
| .fi |
| These are not complete programs, just excerpts. |
| The full runnable source code can be found in the examples subdirectory |
| of the iperf3 source tree. |
| |
| .SH AUTHORS |
| A list of the contributors to iperf3 can be found within the |
| documentation located at |
| \fChttps://software.es.net/iperf/dev.html#authors\fR. |
| |
| .SH "SEE ALSO" |
| iperf3(1), |
| https://software.es.net/iperf/ |