libiperf - API for iperf3 network throughput tester
#include <iperf_api.h> -liperf
LIBIPERF(3) User Manuals LIBIPERF(3) NAME libiperf - API for iperf3 network throughput tester SYNOPSIS #include <iperf_api.h> -liperf DESCRIPTION Libiperf gives you access to all the functionality of the iperf3 net- work testing tool. You can build it directly into your own program, instead of having to run it as a shell command. CALLS Initialization / termination: struct iperf_test *iperf_new_test(); int iperf_defaults(struct iperf_test *t); void iperf_free_test(struct iperf_test *t); Setting test parameters: 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_bind_dev( struct iperf_test *t, char *bind_dev ); 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 ); Authentication functions: 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) Running a test: int iperf_run_client(struct iperf_test *); int iperf_run_server(struct iperf_test *); void iperf_reset_test(struct iperf_test *); Output: FILE *iperf_get_test_outfile(struct iperf_test *); char* iperf_get_test_json_output_string(struct iperf_test *); Error reporting: void iperf_err(struct iperf_test *t, const char *format, ...); char *iperf_strerror(int); extern int i_errno; This is not a complete list of the available calls. See the include file for more. EXAMPLES Here's some sample code that runs an iperf client: struct iperf_test *test; test = iperf_new_test(); if ( test == NULL ) { fprintf( stderr, "%s: failed to create test0, 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 - %s0, argv0, iperf_strerror( i_errno ) ); exit( EXIT_FAILURE ); } iperf_free_test( test ); And here's a server: struct iperf_test *test; test = iperf_new_test(); if ( test == NULL ) { fprintf( stderr, "%s: failed to create test0, 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 - %s0, argv0, iperf_strerror( i_errn o ) ); iperf_reset_test( test ); } iperf_free_test( test ); These are not complete programs, just excerpts. The full runnable source code can be found in the examples subdirectory of the iperf3 source tree. AUTHORS A list of the contributors to iperf3 can be found within the documenta- tion located at https://software.es.net/iperf/dev.html#authors. ATTRIBUTES See attributes(7) for descriptions of the following attributes: +---------------+------------------+ |ATTRIBUTE TYPE | ATTRIBUTE VALUE | +---------------+------------------+ |Availability | benchmark/iperf3 | +---------------+------------------+ |Stability | Uncommitted | +---------------+------------------+ SEE ALSO iperf3(1), https://software.es.net/iperf/ NOTES Source code for open source software components in Oracle Solaris can be found at https://www.oracle.com/downloads/opensource/solaris-source- code-downloads.html. This software was built from source available at https://github.com/oracle/solaris-userland. The original community source was downloaded from https://down- loads.es.net/pub/iperf/iperf-3.11.tar.gz. Further information about this software can be found on the open source community website at http://software.es.net/iperf/. ESnet January 2022 LIBIPERF(3)