diff --git a/src/iperf.h b/src/iperf.h old mode 100644 new mode 100755 index 447eaad..7cca7b4 --- a/src/iperf.h +++ b/src/iperf.h @@ -202,6 +202,7 @@ struct iperf_test struct protocol *protocol; signed char state; char *server_hostname; /* -c option */ + char *template; /* -c option */ char *bind_address; /* first -B option */ TAILQ_HEAD(xbind_addrhead, xbind_entry) xbind_addrs; /* all -X opts */ int bind_port; /* --cport option */ diff --git a/src/iperf_api.c b/src/iperf_api.c old mode 100644 new mode 100755 index 5f5ebfe..07982b8 --- a/src/iperf_api.c +++ b/src/iperf_api.c @@ -210,6 +210,12 @@ iperf_get_test_server_hostname(struct iperf_test *ipt) return ipt->server_hostname; } +char* +iperf_get_test_template(struct iperf_test *ipt) +{ + return ipt->template; +} + int iperf_get_test_protocol_id(struct iperf_test *ipt) { @@ -372,6 +378,12 @@ iperf_set_test_server_hostname(struct iperf_test *ipt, char *server_hostname) ipt->server_hostname = strdup(server_hostname); } +void +iperf_set_test_template(struct iperf_test *ipt, char *template) +{ + ipt->template = strdup(template); +} + void iperf_set_test_reverse(struct iperf_test *ipt, int reverse) { @@ -1869,6 +1881,8 @@ iperf_free_test(struct iperf_test *test) if (test->server_hostname) free(test->server_hostname); + if (test->template) + free(test->template); if (test->bind_address) free(test->bind_address); if (!TAILQ_EMPTY(&test->xbind_addrs)) { @@ -1883,6 +1897,7 @@ iperf_free_test(struct iperf_test *test) free(xbe); } } + if (test->settings) free(test->settings); if (test->title) free(test->title); @@ -2574,7 +2589,14 @@ iperf_new_stream(struct iperf_test *test, int s) { int i; struct iperf_stream *sp; - char template[] = "/tmp/iperf3.XXXXXX"; + + char template[1024]; + if (test->template) { + snprintf(template, strlen(test->template), "%s", test->template); + } else { + char buf[] = "/tmp/iperf3.XXXXXX"; + snprintf(template, strlen(buf), "%s", buf); + } h_errno = 0; diff --git a/src/iperf_api.h b/src/iperf_api.h old mode 100644 new mode 100755 index 82942fe..bb9163d --- a/src/iperf_api.h +++ b/src/iperf_api.h @@ -88,6 +88,7 @@ double iperf_get_test_stats_interval( struct iperf_test* ipt ); int iperf_get_test_num_streams( struct iperf_test* ipt ); int iperf_get_test_server_port( struct iperf_test* ipt ); char* iperf_get_test_server_hostname( struct iperf_test* ipt ); +char* iperf_get_test_template( struct iperf_test* ipt ); int iperf_get_test_protocol_id( struct iperf_test* ipt ); int iperf_get_test_json_output( struct iperf_test* ipt ); char* iperf_get_test_json_output_string ( struct iperf_test* ipt ); @@ -113,6 +114,7 @@ void iperf_set_test_socket_bufsize( struct iperf_test* ipt, int socket_bufsize ) void iperf_set_test_num_streams( struct iperf_test* ipt, int num_streams ); void iperf_set_test_role( struct iperf_test* ipt, char role ); void iperf_set_test_server_hostname( struct iperf_test* ipt, char* server_hostname ); +void iperf_set_test_template( struct iperf_test *ipt, char *template ); void iperf_set_test_reverse( struct iperf_test* ipt, int reverse ); void iperf_set_test_json_output( struct iperf_test* ipt, int json_output ); int iperf_has_zerocopy( void );