Lines Matching refs:test
96 static int send_parameters(struct iperf_test *test);
97 static int get_parameters(struct iperf_test *test);
98 static int send_results(struct iperf_test *test);
99 static int get_results(struct iperf_test *test);
103 static void print_interval_results(struct iperf_test *test, struct iperf_stream *sp, cJSON *json_in…
797 get_protocol(struct iperf_test *test, int prot_id) in get_protocol() argument
801 SLIST_FOREACH(prot, &test->protocols, protocols) { in get_protocol()
813 set_protocol(struct iperf_test *test, int prot_id) in set_protocol() argument
817 SLIST_FOREACH(prot, &test->protocols, protocols) { in set_protocol()
819 test->protocol = prot; in set_protocol()
820 check_sender_has_retransmits(test); in set_protocol()
839 iperf_on_test_start(struct iperf_test *test) in iperf_on_test_start() argument
841 if (test->json_output) { in iperf_on_test_start()
842 …test->json_start, "test_start", iperf_json_printf("protocol: %s num_streams: %d blksize: %d omi… in iperf_on_test_start()
844 if (test->verbose) { in iperf_on_test_start()
845 if (test->settings->bytes) in iperf_on_test_start()
846 …perf_printf(test, test_start_bytes, test->protocol->name, test->num_streams, test->settings->blksi… in iperf_on_test_start()
847 else if (test->settings->blocks) in iperf_on_test_start()
848 …erf_printf(test, test_start_blocks, test->protocol->name, test->num_streams, test->settings->blksi… in iperf_on_test_start()
850 …iperf_printf(test, test_start_time, test->protocol->name, test->num_streams, test->settings->blksi… in iperf_on_test_start()
874 iperf_on_connect(struct iperf_test *test) in iperf_on_connect() argument
888 if (test->json_output) in iperf_on_connect()
889 …cJSON_AddItemToObject(test->json_start, "timestamp", iperf_json_printf("time: %s timesecs: %d", n… in iperf_on_connect()
890 else if (test->verbose) in iperf_on_connect()
891 iperf_printf(test, report_time, now_str); in iperf_on_connect()
893 if (test->role == 'c') { in iperf_on_connect()
894 if (test->json_output) in iperf_on_connect()
895 …SON_AddItemToObject(test->json_start, "connecting_to", iperf_json_printf("host: %s port: %d", tes… in iperf_on_connect()
897 iperf_printf(test, report_connecting, test->server_hostname, test->server_port); in iperf_on_connect()
898 if (test->reverse) in iperf_on_connect()
899 iperf_printf(test, report_reverse, test->server_hostname); in iperf_on_connect()
903 getpeername(test->ctrl_sck, (struct sockaddr *) &sa, &len); in iperf_on_connect()
904 if (getsockdomain(test->ctrl_sck) == AF_INET) { in iperf_on_connect()
914 if (test->json_output) in iperf_on_connect()
915 …cJSON_AddItemToObject(test->json_start, "accepted_connection", iperf_json_printf("host: %s port: … in iperf_on_connect()
917 iperf_printf(test, report_accepted, ipr, port); in iperf_on_connect()
919 if (test->json_output) { in iperf_on_connect()
920 cJSON_AddStringToObject(test->json_start, "cookie", test->cookie); in iperf_on_connect()
921 if (test->protocol->id == SOCK_STREAM) { in iperf_on_connect()
922 if (test->settings->mss) in iperf_on_connect()
923 cJSON_AddNumberToObject(test->json_start, "tcp_mss", test->settings->mss); in iperf_on_connect()
925 cJSON_AddNumberToObject(test->json_start, "tcp_mss_default", test->ctrl_sck_mss); in iperf_on_connect()
928 cJSON_AddNumberToObject(test->json_start, "target_bitrate", test->settings->rate); in iperf_on_connect()
929 } else if (test->verbose) { in iperf_on_connect()
930 iperf_printf(test, report_cookie, test->cookie); in iperf_on_connect()
931 if (test->protocol->id == SOCK_STREAM) { in iperf_on_connect()
932 if (test->settings->mss) in iperf_on_connect()
933 iperf_printf(test, " TCP MSS: %d\n", test->settings->mss); in iperf_on_connect()
935 iperf_printf(test, " TCP MSS: %d (default)\n", test->ctrl_sck_mss); in iperf_on_connect()
938 if (test->settings->rate) in iperf_on_connect()
939 iperf_printf(test, " Target Bitrate: %"PRIu64"\n", test->settings->rate); in iperf_on_connect()
944 iperf_on_test_finish(struct iperf_test *test) in iperf_on_test_finish() argument
962 iperf_parse_hostname(struct iperf_test *test, char *spec, char **p, char **p1) { in iperf_parse_hostname() argument
975 if (test->debug) { in iperf_parse_hostname()
976 iperf_printf(test, "IPv6 link-local address literal detected\n"); in iperf_parse_hostname()
985 if (test->debug) { in iperf_parse_hostname()
986 iperf_printf(test, "p %s p1 %s\n", *p, *p1); in iperf_parse_hostname()
992 if (test->debug) { in iperf_parse_hostname()
993 iperf_printf(test, "noparse\n"); in iperf_parse_hostname()
1000 iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) in iperf_parse_arguments() argument
1113 test->server_port = portno; in iperf_parse_arguments()
1120 test->settings->unit_format = *optarg; in iperf_parse_arguments()
1121 if (test->settings->unit_format == 'k' || in iperf_parse_arguments()
1122 test->settings->unit_format == 'K' || in iperf_parse_arguments()
1123 test->settings->unit_format == 'm' || in iperf_parse_arguments()
1124 test->settings->unit_format == 'M' || in iperf_parse_arguments()
1125 test->settings->unit_format == 'g' || in iperf_parse_arguments()
1126 test->settings->unit_format == 'G' || in iperf_parse_arguments()
1127 test->settings->unit_format == 't' || in iperf_parse_arguments()
1128 test->settings->unit_format == 'T') { in iperf_parse_arguments()
1139 test->stats_interval = test->reporter_interval = atof(optarg); in iperf_parse_arguments()
1140 …if ((test->stats_interval < MIN_INTERVAL || test->stats_interval > MAX_INTERVAL) && test->stats_in… in iperf_parse_arguments()
1146 test->daemon = 1; in iperf_parse_arguments()
1150 test->one_off = 1; in iperf_parse_arguments()
1154 test->verbose = 1; in iperf_parse_arguments()
1157 test->json_output = 1; in iperf_parse_arguments()
1164 if (test->role == 'c') { in iperf_parse_arguments()
1168 iperf_set_test_role(test, 's'); in iperf_parse_arguments()
1171 if (test->role == 's') { in iperf_parse_arguments()
1175 iperf_set_test_role(test, 'c'); in iperf_parse_arguments()
1176 iperf_set_test_server_hostname(test, optarg); in iperf_parse_arguments()
1178 if (iperf_parse_hostname(test, optarg, &p, &p1)) { in iperf_parse_arguments()
1181 free(iperf_get_test_server_hostname(test)); in iperf_parse_arguments()
1182 iperf_set_test_server_hostname(test, p); in iperf_parse_arguments()
1183 iperf_set_test_bind_dev(test, p1); in iperf_parse_arguments()
1191 set_protocol(test, Pudp); in iperf_parse_arguments()
1196 set_protocol(test, Psctp); in iperf_parse_arguments()
1206 test->settings->num_ostreams = unit_atoi(optarg); in iperf_parse_arguments()
1217 test->settings->burst = atoi(slash); in iperf_parse_arguments()
1218 if (test->settings->burst <= 0 || in iperf_parse_arguments()
1219 test->settings->burst > MAX_BURST) { in iperf_parse_arguments()
1224 test->settings->rate = unit_atof_rate(optarg); in iperf_parse_arguments()
1233 test->settings->bitrate_limit_interval = atof(slash); in iperf_parse_arguments()
1234 …if (test->settings->bitrate_limit_interval != 0 && /* Using same Max/Min limits as for Stats Inter… in iperf_parse_arguments()
1235 …(test->settings->bitrate_limit_interval < MIN_INTERVAL || test->settings->bitrate_limit_interval >… in iperf_parse_arguments()
1240 test->settings->bitrate_limit = unit_atof_rate(optarg); in iperf_parse_arguments()
1244 test->duration = atoi(optarg); in iperf_parse_arguments()
1245 if (test->duration > MAX_TIME) { in iperf_parse_arguments()
1253 test->settings->bytes = unit_atoi(optarg); in iperf_parse_arguments()
1257 test->settings->blocks = unit_atoi(optarg); in iperf_parse_arguments()
1265 test->num_streams = atoi(optarg); in iperf_parse_arguments()
1266 if (test->num_streams > MAX_STREAMS) { in iperf_parse_arguments()
1273 if (test->bidirectional) { in iperf_parse_arguments()
1277 iperf_set_test_reverse(test, 1); in iperf_parse_arguments()
1281 if (test->reverse) { in iperf_parse_arguments()
1285 iperf_set_test_bidirectional(test, 1); in iperf_parse_arguments()
1297 test->settings->socket_bufsize = (int) farg; in iperf_parse_arguments()
1302 iperf_set_test_bind_address(test, optarg); in iperf_parse_arguments()
1304 if (iperf_parse_hostname(test, optarg, &p, &p1)) { in iperf_parse_arguments()
1307 free(iperf_get_test_server_hostname(test)); in iperf_parse_arguments()
1308 iperf_set_test_server_hostname(test, p); in iperf_parse_arguments()
1309 iperf_set_test_bind_dev(test, p1); in iperf_parse_arguments()
1318 iperf_set_test_bind_dev(test, optarg); in iperf_parse_arguments()
1327 test->bind_port = portno; in iperf_parse_arguments()
1330 test->settings->mss = atoi(optarg); in iperf_parse_arguments()
1331 if (test->settings->mss > MAX_MSS) { in iperf_parse_arguments()
1338 test->no_delay = 1; in iperf_parse_arguments()
1342 test->settings->domain = AF_INET; in iperf_parse_arguments()
1345 test->settings->domain = AF_INET6; in iperf_parse_arguments()
1348 test->settings->tos = strtol(optarg, &endptr, 0); in iperf_parse_arguments()
1350 test->settings->tos < 0 || in iperf_parse_arguments()
1351 test->settings->tos > 255) { in iperf_parse_arguments()
1358 test->settings->tos = parse_qos(optarg); in iperf_parse_arguments()
1359 if(test->settings->tos < 0) { in iperf_parse_arguments()
1366 test->extra_data = strdup(optarg); in iperf_parse_arguments()
1371 test->settings->flowlabel = strtol(optarg, &endptr, 0); in iperf_parse_arguments()
1373 test->settings->flowlabel < 1 || test->settings->flowlabel > 0xfffff) { in iperf_parse_arguments()
1395 TAILQ_INSERT_TAIL(&test->xbind_addrs, xbe, link); in iperf_parse_arguments()
1402 test->zerocopy = 1; in iperf_parse_arguments()
1406 test->repeating_payload = 1; in iperf_parse_arguments()
1410 iperf_set_test_timestamps(test, 1); in iperf_parse_arguments()
1412 iperf_set_test_timestamp_format(test, optarg); in iperf_parse_arguments()
1415 iperf_set_test_timestamp_format(test, TIMESTAMP_FORMAT); in iperf_parse_arguments()
1419 test->omit = atoi(optarg); in iperf_parse_arguments()
1420 if (test->omit < 0 || test->omit > 60) { in iperf_parse_arguments()
1427 test->diskfile_name = optarg; in iperf_parse_arguments()
1430 test->settings->idle_timeout = atoi(optarg); in iperf_parse_arguments()
1431 if (test->settings->idle_timeout < 1 || test->settings->idle_timeout > MAX_TIME) { in iperf_parse_arguments()
1443 test->settings->rcv_timeout.secs = rcv_timeout_in / SEC_TO_mS; in iperf_parse_arguments()
1444 test->settings->rcv_timeout.usecs = (rcv_timeout_in % SEC_TO_mS) * mS_TO_US; in iperf_parse_arguments()
1449 test->settings->snd_timeout = atoi(optarg); in iperf_parse_arguments()
1450 … if (test->settings->snd_timeout < 0 || test->settings->snd_timeout > MAX_TIME * SEC_TO_mS) { in iperf_parse_arguments()
1459 test->affinity = strtol(optarg, &endptr, 0); in iperf_parse_arguments()
1461 test->affinity < 0 || test->affinity > 1024) { in iperf_parse_arguments()
1467 test->server_affinity = atoi(comma+1); in iperf_parse_arguments()
1468 if (test->server_affinity < 0 || test->server_affinity > 1024) { in iperf_parse_arguments()
1480 test->title = strdup(optarg); in iperf_parse_arguments()
1485 test->congestion = strdup(optarg); in iperf_parse_arguments()
1493 test->debug = 1; in iperf_parse_arguments()
1494 test->debug_level = DEBUG_LEVEL_MAX; in iperf_parse_arguments()
1496 test->debug_level = atoi(optarg); in iperf_parse_arguments()
1497 if (test->debug_level < 0) in iperf_parse_arguments()
1498 test->debug_level = DEBUG_LEVEL_MAX; in iperf_parse_arguments()
1502 test->pidfile = strdup(optarg); in iperf_parse_arguments()
1505 test->logfile = strdup(optarg); in iperf_parse_arguments()
1508 test->forceflush = 1; in iperf_parse_arguments()
1511 test->get_server_output = 1; in iperf_parse_arguments()
1515 test->udp_counters_64bit = 1; in iperf_parse_arguments()
1520 test->settings->fqrate = 0; in iperf_parse_arguments()
1529 test->settings->fqrate = unit_atof_rate(optarg); in iperf_parse_arguments()
1538 test->settings->dont_fragment = 1; in iperf_parse_arguments()
1553 test->server_authorized_users = strdup(optarg); in iperf_parse_arguments()
1556 test->server_skew_threshold = atoi(optarg); in iperf_parse_arguments()
1557 if(test->server_skew_threshold <= 0){ in iperf_parse_arguments()
1564 test->settings->pacing_timer = unit_atoi(optarg); in iperf_parse_arguments()
1568 test->settings->connect_timeout = unit_atoi(optarg); in iperf_parse_arguments()
1581 if (test->role == 'c' && server_flag) { in iperf_parse_arguments()
1585 if (test->role == 's' && client_flag) { in iperf_parse_arguments()
1592 if (test->role == 's' && (client_username || client_rsa_public_key)){ in iperf_parse_arguments()
1595 } else if (test->role == 'c' && (client_username || client_rsa_public_key) && in iperf_parse_arguments()
1599 } else if (test->role == 'c' && (client_username && client_rsa_public_key)){ in iperf_parse_arguments()
1611 iperf_err(test, "%s\n", ERR_error_string(ERR_get_error(), NULL)); in iperf_parse_arguments()
1616 test->settings->client_username = client_username; in iperf_parse_arguments()
1617 test->settings->client_password = client_password; in iperf_parse_arguments()
1618 test->settings->client_rsa_pubkey = load_pubkey_from_file(client_rsa_public_key); in iperf_parse_arguments()
1623 if (test->role == 'c' && (server_rsa_private_key || test->server_authorized_users)){ in iperf_parse_arguments()
1626 } else if (test->role == 'c' && (test->server_skew_threshold != 0)){ in iperf_parse_arguments()
1629 } else if (test->role == 'c' && rcv_timeout_flag && test->mode == SENDER){ in iperf_parse_arguments()
1632 } else if (test->role == 's' && (server_rsa_private_key || test->server_authorized_users) && in iperf_parse_arguments()
1633 !(server_rsa_private_key && test->server_authorized_users)) { in iperf_parse_arguments()
1636 } else if (test->role == 's' && server_rsa_private_key) { in iperf_parse_arguments()
1637 test->server_rsa_private_key = load_privkey_from_file(server_rsa_private_key); in iperf_parse_arguments()
1638 if (test->server_rsa_private_key == NULL){ in iperf_parse_arguments()
1639 iperf_err(test, "%s\n", ERR_error_string(ERR_get_error(), NULL)); in iperf_parse_arguments()
1646 if(test->server_skew_threshold == 0){ in iperf_parse_arguments()
1648 test->server_skew_threshold=10; in iperf_parse_arguments()
1654 if (test->protocol->id == Pudp) in iperf_parse_arguments()
1656 else if (test->protocol->id == Psctp) in iperf_parse_arguments()
1661 if ((test->protocol->id != Pudp && blksize <= 0) in iperf_parse_arguments()
1666 if (test->protocol->id == Pudp && in iperf_parse_arguments()
1672 test->settings->blksize = blksize; in iperf_parse_arguments()
1675 test->settings->rate = test->protocol->id == Pudp ? UDP_RATE : 0; in iperf_parse_arguments()
1680 if (test->settings->bytes == 0 && in iperf_parse_arguments()
1681 test->settings->blocks == 0 && in iperf_parse_arguments()
1683 test->diskfile_name != (char*) 0 && in iperf_parse_arguments()
1684 test->role == 'c' in iperf_parse_arguments()
1687 if( stat(test->diskfile_name, &st) == 0 ){ in iperf_parse_arguments()
1689 test->settings->bytes = file_bytes; in iperf_parse_arguments()
1690 if (test->debug) in iperf_parse_arguments()
1691 printf("End condition set to file-size: %"PRIu64" bytes\n", test->settings->bytes); in iperf_parse_arguments()
1696 if ((test->settings->bytes != 0 || test->settings->blocks != 0) && ! duration_flag) in iperf_parse_arguments()
1697 test->duration = 0; in iperf_parse_arguments()
1704 if ((duration_flag && test->settings->bytes != 0) || in iperf_parse_arguments()
1705 (duration_flag && test->settings->blocks != 0) || in iperf_parse_arguments()
1706 (test->settings->bytes != 0 && test->settings->blocks != 0)) { in iperf_parse_arguments()
1717 if ((test->role != 'c') && (test->role != 's')) { in iperf_parse_arguments()
1723 if (test->settings->bitrate_limit_interval != 0) { in iperf_parse_arguments()
1724 test->settings->bitrate_limit_stats_per_interval = in iperf_parse_arguments()
1725 (test->settings->bitrate_limit_interval <= test->stats_interval ? in iperf_parse_arguments()
1726 1 : round(test->settings->bitrate_limit_interval/test->stats_interval) ); in iperf_parse_arguments()
1730 if ((test->json_output) && (test->settings->unit_format != 'a')) { in iperf_parse_arguments()
1735 if (test->json_output && test->verbose) { in iperf_parse_arguments()
1738 if (test->json_output && test->debug) { in iperf_parse_arguments()
1748 int iperf_open_logfile(struct iperf_test *test) in iperf_open_logfile() argument
1750 test->outfile = fopen(test->logfile, "a+"); in iperf_open_logfile()
1751 if (test->outfile == NULL) { in iperf_open_logfile()
1760 iperf_set_send_state(struct iperf_test *test, signed char state) in iperf_set_send_state() argument
1762 if (test->ctrl_sck >= 0) { in iperf_set_send_state()
1763 test->state = state; in iperf_set_send_state()
1764 if (Nwrite(test->ctrl_sck, (char*) &state, sizeof(state), Ptcp) < 0) { in iperf_set_send_state()
1779 if (sp->test->done || sp->test->settings->rate == 0) in iperf_check_throttle()
1784 if (bits_per_second < sp->test->settings->rate) { in iperf_check_throttle()
1786 FD_SET(sp->socket, &sp->test->write_set); in iperf_check_throttle()
1789 FD_CLR(sp->socket, &sp->test->write_set); in iperf_check_throttle()
1795 iperf_check_total_rate(struct iperf_test *test, iperf_size_t last_interval_bytes_transferred) in iperf_check_total_rate() argument
1802 … if (test->done || test->settings->bitrate_limit == 0) // Continue only if check should be done in iperf_check_total_rate()
1806 … if (++test->bitrate_limit_last_interval_index >= test->settings->bitrate_limit_stats_per_interval) in iperf_check_total_rate()
1807 test->bitrate_limit_last_interval_index = 0; in iperf_check_total_rate()
1808 …test->bitrate_limit_intervals_traffic_bytes[test->bitrate_limit_last_interval_index] = last_interv… in iperf_check_total_rate()
1811 test->bitrate_limit_stats_count += 1; in iperf_check_total_rate()
1812 if (test->bitrate_limit_stats_count < test->settings->bitrate_limit_stats_per_interval) in iperf_check_total_rate()
1816 for (total_bytes = 0, i = 0; i < test->settings->bitrate_limit_stats_per_interval; i++) { in iperf_check_total_rate()
1817 total_bytes += test->bitrate_limit_intervals_traffic_bytes[i]; in iperf_check_total_rate()
1820 seconds = test->stats_interval * test->settings->bitrate_limit_stats_per_interval; in iperf_check_total_rate()
1822 if (test->debug) { in iperf_check_total_rate()
1823 …f_printf(test,"Interval %" PRIu64 " - throughput %" PRIu64 " bps (limit %" PRIu64 ")\n", test->bit… in iperf_check_total_rate()
1826 if (bits_per_second > test->settings->bitrate_limit) { in iperf_check_total_rate()
1827 if (iperf_get_verbose(test)) in iperf_check_total_rate()
1828 …iperf_err(test, "Total throughput of %" PRIu64 " bps exceeded %" PRIu64 " bps limit", bits_per_sec… in iperf_check_total_rate()
1829 test->bitrate_limit_exceeded = 1; in iperf_check_total_rate()
1834 iperf_send(struct iperf_test *test, fd_set *write_setP) in iperf_send() argument
1842 if (test->settings->burst != 0) in iperf_send()
1843 multisend = test->settings->burst; in iperf_send()
1844 else if (test->settings->rate == 0) in iperf_send()
1845 multisend = test->multisend; in iperf_send()
1850 no_throttle_check = test->settings->rate != 0 && test->settings->burst == 0; in iperf_send()
1856 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_send()
1859 … if (multisend > 1 && test->settings->bytes != 0 && test->bytes_sent >= test->settings->bytes) in iperf_send()
1861 … if (multisend > 1 && test->settings->blocks != 0 && test->blocks_sent >= test->settings->blocks) in iperf_send()
1870 test->bytes_sent += r; in iperf_send()
1872 ++test->blocks_sent; in iperf_send()
1882 SLIST_FOREACH(sp, &test->streams, streams) in iperf_send()
1887 SLIST_FOREACH(sp, &test->streams, streams) in iperf_send()
1895 iperf_recv(struct iperf_test *test, fd_set *read_setP) in iperf_recv() argument
1900 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_recv()
1906 test->bytes_received += r; in iperf_recv()
1907 ++test->blocks_received; in iperf_recv()
1916 iperf_init_test(struct iperf_test *test) in iperf_init_test() argument
1921 if (test->protocol->init) { in iperf_init_test()
1922 if (test->protocol->init(test) < 0) in iperf_init_test()
1931 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_init_test()
1935 if (test->on_test_start) in iperf_init_test()
1936 test->on_test_start(test); in iperf_init_test()
1954 iperf_create_send_timers(struct iperf_test * test) in iperf_create_send_timers() argument
1964 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_create_send_timers()
1966 if (test->settings->rate != 0 && sp->sender) { in iperf_create_send_timers()
1968 sp->send_timer = tmr_create(NULL, send_timer_proc, cd, test->settings->pacing_timer, 1); in iperf_create_send_timers()
1979 int test_is_authorized(struct iperf_test *test){ in test_is_authorized() argument
1980 if ( !(test->server_rsa_private_key && test->server_authorized_users)) { in test_is_authorized()
1984 if (test->settings->authtoken){ in test_is_authorized()
1987 …int rc = decode_auth_setting(test->debug, test->settings->authtoken, test->server_rsa_private_key,… in test_is_authorized()
1991 …int ret = check_authentication(username, password, ts, test->server_authorized_users, test->server… in test_is_authorized()
1993 if (test->debug) { in test_is_authorized()
1994 iperf_printf(test, report_authentication_succeeded, username, ts); in test_is_authorized()
2000 if (test->debug) { in test_is_authorized()
2001 iperf_printf(test, report_authentication_failed, username, ts); in test_is_authorized()
2018 iperf_exchange_parameters(struct iperf_test *test) in iperf_exchange_parameters() argument
2023 if (test->role == 'c') { in iperf_exchange_parameters()
2025 if (send_parameters(test) < 0) in iperf_exchange_parameters()
2030 if (get_parameters(test) < 0) in iperf_exchange_parameters()
2034 if (test_is_authorized(test) < 0){ in iperf_exchange_parameters()
2035 if (iperf_set_send_state(test, SERVER_ERROR) != 0) in iperf_exchange_parameters()
2039 if (Nwrite(test->ctrl_sck, (char*) &err, sizeof(err), Ptcp) < 0) { in iperf_exchange_parameters()
2047 if ((s = test->protocol->listen(test)) < 0) { in iperf_exchange_parameters()
2048 if (iperf_set_send_state(test, SERVER_ERROR) != 0) in iperf_exchange_parameters()
2051 if (Nwrite(test->ctrl_sck, (char*) &err, sizeof(err), Ptcp) < 0) { in iperf_exchange_parameters()
2056 if (Nwrite(test->ctrl_sck, (char*) &err, sizeof(err), Ptcp) < 0) { in iperf_exchange_parameters()
2063 FD_SET(s, &test->read_set); in iperf_exchange_parameters()
2064 test->max_fd = (s > test->max_fd) ? s : test->max_fd; in iperf_exchange_parameters()
2065 test->prot_listener = s; in iperf_exchange_parameters()
2068 if (iperf_set_send_state(test, CREATE_STREAMS) != 0) in iperf_exchange_parameters()
2079 iperf_exchange_results(struct iperf_test *test) in iperf_exchange_results() argument
2081 if (test->role == 'c') { in iperf_exchange_results()
2083 if (send_results(test) < 0) in iperf_exchange_results()
2086 if (get_results(test) < 0) in iperf_exchange_results()
2090 if (get_results(test) < 0) in iperf_exchange_results()
2093 if (send_results(test) < 0) in iperf_exchange_results()
2102 send_parameters(struct iperf_test *test) in send_parameters() argument
2112 if (test->protocol->id == Ptcp) in send_parameters()
2114 else if (test->protocol->id == Pudp) in send_parameters()
2116 else if (test->protocol->id == Psctp) in send_parameters()
2118 cJSON_AddNumberToObject(j, "omit", test->omit); in send_parameters()
2119 if (test->server_affinity != -1) in send_parameters()
2120 cJSON_AddNumberToObject(j, "server_affinity", test->server_affinity); in send_parameters()
2121 cJSON_AddNumberToObject(j, "time", test->duration); in send_parameters()
2122 if (test->settings->bytes) in send_parameters()
2123 cJSON_AddNumberToObject(j, "num", test->settings->bytes); in send_parameters()
2124 if (test->settings->blocks) in send_parameters()
2125 cJSON_AddNumberToObject(j, "blockcount", test->settings->blocks); in send_parameters()
2126 if (test->settings->mss) in send_parameters()
2127 cJSON_AddNumberToObject(j, "MSS", test->settings->mss); in send_parameters()
2128 if (test->no_delay) in send_parameters()
2130 cJSON_AddNumberToObject(j, "parallel", test->num_streams); in send_parameters()
2131 if (test->reverse) in send_parameters()
2133 if (test->bidirectional) in send_parameters()
2135 if (test->settings->socket_bufsize) in send_parameters()
2136 cJSON_AddNumberToObject(j, "window", test->settings->socket_bufsize); in send_parameters()
2137 if (test->settings->blksize) in send_parameters()
2138 cJSON_AddNumberToObject(j, "len", test->settings->blksize); in send_parameters()
2139 if (test->settings->rate) in send_parameters()
2140 cJSON_AddNumberToObject(j, "bandwidth", test->settings->rate); in send_parameters()
2141 if (test->settings->fqrate) in send_parameters()
2142 cJSON_AddNumberToObject(j, "fqrate", test->settings->fqrate); in send_parameters()
2143 if (test->settings->pacing_timer) in send_parameters()
2144 cJSON_AddNumberToObject(j, "pacing_timer", test->settings->pacing_timer); in send_parameters()
2145 if (test->settings->burst) in send_parameters()
2146 cJSON_AddNumberToObject(j, "burst", test->settings->burst); in send_parameters()
2147 if (test->settings->tos) in send_parameters()
2148 cJSON_AddNumberToObject(j, "TOS", test->settings->tos); in send_parameters()
2149 if (test->settings->flowlabel) in send_parameters()
2150 cJSON_AddNumberToObject(j, "flowlabel", test->settings->flowlabel); in send_parameters()
2151 if (test->title) in send_parameters()
2152 cJSON_AddStringToObject(j, "title", test->title); in send_parameters()
2153 if (test->extra_data) in send_parameters()
2154 cJSON_AddStringToObject(j, "extra_data", test->extra_data); in send_parameters()
2155 if (test->congestion) in send_parameters()
2156 cJSON_AddStringToObject(j, "congestion", test->congestion); in send_parameters()
2157 if (test->congestion_used) in send_parameters()
2158 cJSON_AddStringToObject(j, "congestion_used", test->congestion_used); in send_parameters()
2159 if (test->get_server_output) in send_parameters()
2160 cJSON_AddNumberToObject(j, "get_server_output", iperf_get_test_get_server_output(test)); in send_parameters()
2161 if (test->udp_counters_64bit) in send_parameters()
2162 cJSON_AddNumberToObject(j, "udp_counters_64bit", iperf_get_test_udp_counters_64bit(test)); in send_parameters()
2163 if (test->repeating_payload) in send_parameters()
2164 cJSON_AddNumberToObject(j, "repeating_payload", test->repeating_payload); in send_parameters()
2165 if (test->zerocopy) in send_parameters()
2166 cJSON_AddNumberToObject(j, "zerocopy", test->zerocopy); in send_parameters()
2168 if (test->settings->dont_fragment) in send_parameters()
2169 cJSON_AddNumberToObject(j, "dont_fragment", test->settings->dont_fragment); in send_parameters()
2173 …if (test->settings->client_username && test->settings->client_password && test->settings->client_r… in send_parameters()
2174 … = encode_auth_setting(test->settings->client_username, test->settings->client_password, test->set… in send_parameters()
2182 cJSON_AddStringToObject(j, "authtoken", test->settings->authtoken); in send_parameters()
2187 if (test->debug) { in send_parameters()
2193 if (JSON_write(test->ctrl_sck, j) < 0) { in send_parameters()
2205 get_parameters(struct iperf_test *test) in get_parameters() argument
2211 j = JSON_read(test->ctrl_sck); in get_parameters()
2216 if (test->debug) { in get_parameters()
2224 set_protocol(test, Ptcp); in get_parameters()
2226 set_protocol(test, Pudp); in get_parameters()
2228 set_protocol(test, Psctp); in get_parameters()
2230 test->omit = j_p->valueint; in get_parameters()
2232 test->server_affinity = j_p->valueint; in get_parameters()
2234 test->duration = j_p->valueint; in get_parameters()
2236 test->settings->bytes = j_p->valueint; in get_parameters()
2238 test->settings->blocks = j_p->valueint; in get_parameters()
2240 test->settings->mss = j_p->valueint; in get_parameters()
2242 test->no_delay = 1; in get_parameters()
2244 test->num_streams = j_p->valueint; in get_parameters()
2246 iperf_set_test_reverse(test, 1); in get_parameters()
2248 iperf_set_test_bidirectional(test, 1); in get_parameters()
2250 test->settings->socket_bufsize = j_p->valueint; in get_parameters()
2252 test->settings->blksize = j_p->valueint; in get_parameters()
2254 test->settings->rate = j_p->valueint; in get_parameters()
2256 test->settings->fqrate = j_p->valueint; in get_parameters()
2258 test->settings->pacing_timer = j_p->valueint; in get_parameters()
2260 test->settings->burst = j_p->valueint; in get_parameters()
2262 test->settings->tos = j_p->valueint; in get_parameters()
2264 test->settings->flowlabel = j_p->valueint; in get_parameters()
2266 test->title = strdup(j_p->valuestring); in get_parameters()
2268 test->extra_data = strdup(j_p->valuestring); in get_parameters()
2270 test->congestion = strdup(j_p->valuestring); in get_parameters()
2272 test->congestion_used = strdup(j_p->valuestring); in get_parameters()
2274 iperf_set_test_get_server_output(test, 1); in get_parameters()
2276 iperf_set_test_udp_counters_64bit(test, 1); in get_parameters()
2278 test->repeating_payload = 1; in get_parameters()
2280 test->zerocopy = j_p->valueint; in get_parameters()
2283 test->settings->dont_fragment = j_p->valueint; in get_parameters()
2287 test->settings->authtoken = strdup(j_p->valuestring); in get_parameters()
2289 if (test->mode && test->protocol->id == Ptcp && has_tcpinfo_retransmits()) in get_parameters()
2290 test->sender_has_retransmits = 1; in get_parameters()
2291 if (test->settings->rate) in get_parameters()
2292 cJSON_AddNumberToObject(test->json_start, "target_bitrate", test->settings->rate); in get_parameters()
2301 send_results(struct iperf_test *test) in send_results() argument
2319 cJSON_AddNumberToObject(j, "cpu_util_total", test->cpu_util[0]); in send_results()
2320 cJSON_AddNumberToObject(j, "cpu_util_user", test->cpu_util[1]); in send_results()
2321 cJSON_AddNumberToObject(j, "cpu_util_system", test->cpu_util[2]); in send_results()
2322 if ( test->mode == RECEIVER ) in send_results()
2325 sender_has_retransmits = test->sender_has_retransmits; in send_results()
2327 if ( test->congestion_used ) { in send_results()
2328 cJSON_AddStringToObject(j, "congestion_used", test->congestion_used); in send_results()
2332 if (test->role == 's' && test->get_server_output) { in send_results()
2333 if (test->json_output) { in send_results()
2335 cJSON_AddItemReferenceToObject(j, "server_output_json", test->json_top); in send_results()
2343 TAILQ_FOREACH(t, &(test->server_output_list), textlineentries) { in send_results()
2349 TAILQ_FOREACH(t, &(test->server_output_list), textlineentries) { in send_results()
2365 SLIST_FOREACH(sp, &test->streams, streams) { in send_results()
2373 retransmits = (sp->sender && test->sender_has_retransmits) ? sp->result->stream_retrans : -1; in send_results()
2390 if (r == 0 && test->debug) { in send_results()
2395 if (r == 0 && JSON_write(test->ctrl_sck, j) < 0) { in send_results()
2408 get_results(struct iperf_test *test) in get_results() argument
2435 j = JSON_read(test->ctrl_sck); in get_results()
2448 if (test->debug) { in get_results()
2454 test->remote_cpu_util[0] = j_cpu_util_total->valuedouble; in get_results()
2455 test->remote_cpu_util[1] = j_cpu_util_user->valuedouble; in get_results()
2456 test->remote_cpu_util[2] = j_cpu_util_system->valuedouble; in get_results()
2458 if ( test->mode == RECEIVER ) { in get_results()
2459 test->sender_has_retransmits = result_has_retransmits; in get_results()
2460 test->other_side_has_retransmits = 0; in get_results()
2462 else if ( test->mode == BIDIRECTIONAL ) in get_results()
2463 test->other_side_has_retransmits = result_has_retransmits; in get_results()
2495 SLIST_FOREACH(sp, &test->streams, streams) in get_results()
2540 if (test->role == 'c' && iperf_get_test_get_server_output(test)) { in get_results()
2544 test->json_server_output = j_server_output; in get_results()
2550 test->server_output_text = strdup(j_server_output->valuestring); in get_results()
2559 test->remote_congestion_used = strdup(j_remote_congestion_used->valuestring); in get_results()
2680 if (sp->test->json_output) in connect_msg()
2681 …cJSON_AddItemToArray(sp->test->json_connected, iperf_json_printf("socket: %d local_host: %s loca… in connect_msg()
2683 iperf_printf(sp->test, report_connected, sp->socket, ipl, lport, ipr, rport); in connect_msg()
2692 struct iperf_test *test; in iperf_new_test() local
2694 test = (struct iperf_test *) malloc(sizeof(struct iperf_test)); in iperf_new_test()
2695 if (!test) { in iperf_new_test()
2700 memset(test, 0, sizeof(struct iperf_test)); in iperf_new_test()
2702 test->settings = (struct iperf_settings *) malloc(sizeof(struct iperf_settings)); in iperf_new_test()
2703 if (!test->settings) { in iperf_new_test()
2704 free(test); in iperf_new_test()
2708 memset(test->settings, 0, sizeof(struct iperf_settings)); in iperf_new_test()
2710 …test->bitrate_limit_intervals_traffic_bytes = (iperf_size_t *) malloc(sizeof(iperf_size_t) * MAX_I… in iperf_new_test()
2711 if (!test->bitrate_limit_intervals_traffic_bytes) { in iperf_new_test()
2712 free(test->settings); in iperf_new_test()
2713 free(test); in iperf_new_test()
2717 …memset(test->bitrate_limit_intervals_traffic_bytes, 0, sizeof(sizeof(iperf_size_t) * MAX_INTERVAL)… in iperf_new_test()
2720 test->outfile = stdout; in iperf_new_test()
2722 return test; in iperf_new_test()
2873 iperf_free_test(struct iperf_test *test) in iperf_free_test() argument
2879 while (!SLIST_EMPTY(&test->streams)) { in iperf_free_test()
2880 sp = SLIST_FIRST(&test->streams); in iperf_free_test()
2881 SLIST_REMOVE_HEAD(&test->streams, streams); in iperf_free_test()
2884 if (test->server_hostname) in iperf_free_test()
2885 free(test->server_hostname); in iperf_free_test()
2886 if (test->tmp_template) in iperf_free_test()
2887 free(test->tmp_template); in iperf_free_test()
2888 if (test->bind_address) in iperf_free_test()
2889 free(test->bind_address); in iperf_free_test()
2890 if (test->bind_dev) in iperf_free_test()
2891 free(test->bind_dev); in iperf_free_test()
2892 if (!TAILQ_EMPTY(&test->xbind_addrs)) { in iperf_free_test()
2895 while (!TAILQ_EMPTY(&test->xbind_addrs)) { in iperf_free_test()
2896 xbe = TAILQ_FIRST(&test->xbind_addrs); in iperf_free_test()
2897 TAILQ_REMOVE(&test->xbind_addrs, xbe, link); in iperf_free_test()
2906 if (test->server_rsa_private_key) in iperf_free_test()
2907 EVP_PKEY_free(test->server_rsa_private_key); in iperf_free_test()
2908 test->server_rsa_private_key = NULL; in iperf_free_test()
2910 free(test->settings->authtoken); in iperf_free_test()
2911 test->settings->authtoken = NULL; in iperf_free_test()
2913 free(test->settings->client_username); in iperf_free_test()
2914 test->settings->client_username = NULL; in iperf_free_test()
2916 free(test->settings->client_password); in iperf_free_test()
2917 test->settings->client_password = NULL; in iperf_free_test()
2919 if (test->settings->client_rsa_pubkey) in iperf_free_test()
2920 EVP_PKEY_free(test->settings->client_rsa_pubkey); in iperf_free_test()
2921 test->settings->client_rsa_pubkey = NULL; in iperf_free_test()
2924 if (test->settings) in iperf_free_test()
2925 free(test->settings); in iperf_free_test()
2926 if (test->title) in iperf_free_test()
2927 free(test->title); in iperf_free_test()
2928 if (test->extra_data) in iperf_free_test()
2929 free(test->extra_data); in iperf_free_test()
2930 if (test->congestion) in iperf_free_test()
2931 free(test->congestion); in iperf_free_test()
2932 if (test->congestion_used) in iperf_free_test()
2933 free(test->congestion_used); in iperf_free_test()
2934 if (test->remote_congestion_used) in iperf_free_test()
2935 free(test->remote_congestion_used); in iperf_free_test()
2936 if (test->timestamp_format) in iperf_free_test()
2937 free(test->timestamp_format); in iperf_free_test()
2938 if (test->omit_timer != NULL) in iperf_free_test()
2939 tmr_cancel(test->omit_timer); in iperf_free_test()
2940 if (test->timer != NULL) in iperf_free_test()
2941 tmr_cancel(test->timer); in iperf_free_test()
2942 if (test->stats_timer != NULL) in iperf_free_test()
2943 tmr_cancel(test->stats_timer); in iperf_free_test()
2944 if (test->reporter_timer != NULL) in iperf_free_test()
2945 tmr_cancel(test->reporter_timer); in iperf_free_test()
2948 while (!SLIST_EMPTY(&test->protocols)) { in iperf_free_test()
2949 prot = SLIST_FIRST(&test->protocols); in iperf_free_test()
2950 SLIST_REMOVE_HEAD(&test->protocols, protocols); in iperf_free_test()
2954 if (test->logfile) { in iperf_free_test()
2955 free(test->logfile); in iperf_free_test()
2956 test->logfile = NULL; in iperf_free_test()
2957 if (test->outfile && test->outfile != stdout) { in iperf_free_test()
2958 fclose(test->outfile); in iperf_free_test()
2959 test->outfile = NULL; in iperf_free_test()
2963 if (test->server_output_text) { in iperf_free_test()
2964 free(test->server_output_text); in iperf_free_test()
2965 test->server_output_text = NULL; in iperf_free_test()
2968 if (test->json_output_string) { in iperf_free_test()
2969 free(test->json_output_string); in iperf_free_test()
2970 test->json_output_string = NULL; in iperf_free_test()
2975 while (!TAILQ_EMPTY(&test->server_output_list)) { in iperf_free_test()
2976 t = TAILQ_FIRST(&test->server_output_list); in iperf_free_test()
2977 TAILQ_REMOVE(&test->server_output_list, t, textlineentries); in iperf_free_test()
2983 if (!TAILQ_EMPTY(&test->xbind_addrs)) { in iperf_free_test()
2986 TAILQ_FOREACH(xbe, &test->xbind_addrs, link) { in iperf_free_test()
2995 if (test->bitrate_limit_intervals_traffic_bytes != NULL) in iperf_free_test()
2996 free(test->bitrate_limit_intervals_traffic_bytes); in iperf_free_test()
3000 test->stats_callback = NULL; in iperf_free_test()
3001 test->reporter_callback = NULL; in iperf_free_test()
3002 free(test); in iperf_free_test()
3007 iperf_reset_test(struct iperf_test *test) in iperf_reset_test() argument
3013 while (!SLIST_EMPTY(&test->streams)) { in iperf_reset_test()
3014 sp = SLIST_FIRST(&test->streams); in iperf_reset_test()
3015 SLIST_REMOVE_HEAD(&test->streams, streams); in iperf_reset_test()
3018 if (test->omit_timer != NULL) { in iperf_reset_test()
3019 tmr_cancel(test->omit_timer); in iperf_reset_test()
3020 test->omit_timer = NULL; in iperf_reset_test()
3022 if (test->timer != NULL) { in iperf_reset_test()
3023 tmr_cancel(test->timer); in iperf_reset_test()
3024 test->timer = NULL; in iperf_reset_test()
3026 if (test->stats_timer != NULL) { in iperf_reset_test()
3027 tmr_cancel(test->stats_timer); in iperf_reset_test()
3028 test->stats_timer = NULL; in iperf_reset_test()
3030 if (test->reporter_timer != NULL) { in iperf_reset_test()
3031 tmr_cancel(test->reporter_timer); in iperf_reset_test()
3032 test->reporter_timer = NULL; in iperf_reset_test()
3034 test->done = 0; in iperf_reset_test()
3036 SLIST_INIT(&test->streams); in iperf_reset_test()
3038 if (test->remote_congestion_used) in iperf_reset_test()
3039 free(test->remote_congestion_used); in iperf_reset_test()
3040 test->remote_congestion_used = NULL; in iperf_reset_test()
3041 test->role = 's'; in iperf_reset_test()
3042 test->mode = RECEIVER; in iperf_reset_test()
3043 test->sender_has_retransmits = 0; in iperf_reset_test()
3044 set_protocol(test, Ptcp); in iperf_reset_test()
3045 test->omit = OMIT; in iperf_reset_test()
3046 test->duration = DURATION; in iperf_reset_test()
3047 test->server_affinity = -1; in iperf_reset_test()
3049 CPU_ZERO(&test->cpumask); in iperf_reset_test()
3051 test->state = 0; in iperf_reset_test()
3053 test->ctrl_sck = -1; in iperf_reset_test()
3054 test->prot_listener = -1; in iperf_reset_test()
3056 test->bytes_sent = 0; in iperf_reset_test()
3057 test->blocks_sent = 0; in iperf_reset_test()
3059 test->bytes_received = 0; in iperf_reset_test()
3060 test->blocks_received = 0; in iperf_reset_test()
3062 test->other_side_has_retransmits = 0; in iperf_reset_test()
3064 test->bitrate_limit_stats_count = 0; in iperf_reset_test()
3065 test->bitrate_limit_last_interval_index = 0; in iperf_reset_test()
3066 test->bitrate_limit_exceeded = 0; in iperf_reset_test()
3069 test->bitrate_limit_intervals_traffic_bytes[i] = 0; in iperf_reset_test()
3071 test->reverse = 0; in iperf_reset_test()
3072 test->bidirectional = 0; in iperf_reset_test()
3073 test->no_delay = 0; in iperf_reset_test()
3075 FD_ZERO(&test->read_set); in iperf_reset_test()
3076 FD_ZERO(&test->write_set); in iperf_reset_test()
3078 test->num_streams = 1; in iperf_reset_test()
3079 test->settings->socket_bufsize = 0; in iperf_reset_test()
3080 test->settings->blksize = DEFAULT_TCP_BLKSIZE; in iperf_reset_test()
3081 test->settings->rate = 0; in iperf_reset_test()
3082 test->settings->burst = 0; in iperf_reset_test()
3083 test->settings->mss = 0; in iperf_reset_test()
3084 test->settings->tos = 0; in iperf_reset_test()
3085 test->settings->dont_fragment = 0; in iperf_reset_test()
3086 test->zerocopy = 0; in iperf_reset_test()
3089 if (test->settings->authtoken) { in iperf_reset_test()
3090 free(test->settings->authtoken); in iperf_reset_test()
3091 test->settings->authtoken = NULL; in iperf_reset_test()
3093 if (test->settings->client_username) { in iperf_reset_test()
3094 free(test->settings->client_username); in iperf_reset_test()
3095 test->settings->client_username = NULL; in iperf_reset_test()
3097 if (test->settings->client_password) { in iperf_reset_test()
3098 free(test->settings->client_password); in iperf_reset_test()
3099 test->settings->client_password = NULL; in iperf_reset_test()
3101 if (test->settings->client_rsa_pubkey) { in iperf_reset_test()
3102 EVP_PKEY_free(test->settings->client_rsa_pubkey); in iperf_reset_test()
3103 test->settings->client_rsa_pubkey = NULL; in iperf_reset_test()
3107 memset(test->cookie, 0, COOKIE_SIZE); in iperf_reset_test()
3108 test->multisend = 10; /* arbitrary */ in iperf_reset_test()
3109 test->udp_counters_64bit = 0; in iperf_reset_test()
3110 if (test->title) { in iperf_reset_test()
3111 free(test->title); in iperf_reset_test()
3112 test->title = NULL; in iperf_reset_test()
3114 if (test->extra_data) { in iperf_reset_test()
3115 free(test->extra_data); in iperf_reset_test()
3116 test->extra_data = NULL; in iperf_reset_test()
3121 while (!TAILQ_EMPTY(&test->server_output_list)) { in iperf_reset_test()
3122 t = TAILQ_FIRST(&test->server_output_list); in iperf_reset_test()
3123 TAILQ_REMOVE(&test->server_output_list, t, textlineentries); in iperf_reset_test()
3134 iperf_reset_stats(struct iperf_test *test) in iperf_reset_stats() argument
3140 test->bytes_sent = 0; in iperf_reset_stats()
3141 test->blocks_sent = 0; in iperf_reset_stats()
3143 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_reset_stats()
3152 if (test->sender_has_retransmits == 1) { in iperf_reset_stats()
3170 iperf_stats_callback(struct iperf_test *test) in iperf_stats_callback() argument
3178 temp.omitted = test->omitting; in iperf_stats_callback()
3179 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_stats_callback()
3197 if (test->protocol->id == Ptcp) { in iperf_stats_callback()
3200 if (test->sender_has_retransmits == 1) { in iperf_stats_callback()
3251 if (test->role == 's') { in iperf_stats_callback()
3252 iperf_check_total_rate(test, total_interval_bytes_transferred); in iperf_stats_callback()
3263 iperf_print_intermediate(struct iperf_test *test) in iperf_print_intermediate() argument
3288 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_print_intermediate()
3293 if (test->debug) { in iperf_print_intermediate()
3302 if (interval_len >= test->stats_interval * 0.10 || in iperf_print_intermediate()
3305 if (test->debug) { in iperf_print_intermediate()
3312 if (test->debug) { in iperf_print_intermediate()
3318 if (test->json_output) { in iperf_print_intermediate()
3322 cJSON_AddItemToArray(test->json_intervals, json_interval); in iperf_print_intermediate()
3341 if (test->mode == BIDIRECTIONAL) { in iperf_print_intermediate()
3342 if (test->role == 'c') { in iperf_print_intermediate()
3350 lower_mode = test->mode; in iperf_print_intermediate()
3374 if (test->mode == BIDIRECTIONAL) { in iperf_print_intermediate()
3375 sprintf(mbuf, "[%s-%s]", stream_must_be_sender?"TX":"RX", test->role == 'c'?"C":"S"); in iperf_print_intermediate()
3381 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_print_intermediate()
3383 print_interval_results(test, sp, json_interval_streams); in iperf_print_intermediate()
3387 iperf_err(test, in iperf_print_intermediate()
3392 if (test->protocol->id == Ptcp) { in iperf_print_intermediate()
3393 if (test->sender_has_retransmits == 1) { in iperf_print_intermediate()
3405 if (test->num_streams > 1 || test->json_output) { in iperf_print_intermediate()
3414 if (test->mode == BIDIRECTIONAL) { in iperf_print_intermediate()
3415 if ((test->role == 'c' && !stream_must_be_sender) || in iperf_print_intermediate()
3416 (test->role != 'c' && stream_must_be_sender)) in iperf_print_intermediate()
3422 sp = SLIST_FIRST(&test->streams); /* reset back to 1st stream */ in iperf_print_intermediate()
3429 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_intermediate()
3435 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_intermediate()
3436 if (test->sender_has_retransmits == 1 && stream_must_be_sender) { in iperf_print_intermediate()
3438 if (test->json_output) in iperf_print_intermediate()
3441 …iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, end_time, ubuf, nbuf, retransmi… in iperf_print_intermediate()
3444 if (test->json_output) in iperf_print_intermediate()
3445 …nd_time, (double) irp->interval_duration, (int64_t) bytes, bandwidth * 8, test->omitting, stream_m… in iperf_print_intermediate()
3447 …iperf_printf(test, report_sum_bw_format, mbuf, start_time, end_time, ubuf, nbuf, test->omitting?re… in iperf_print_intermediate()
3452 if (test->json_output) in iperf_print_intermediate()
3453 …terval_duration, (int64_t) bytes, bandwidth * 8, (int64_t) total_packets, test->omitting, stream_m… in iperf_print_intermediate()
3455 …iperf_printf(test, report_sum_bw_udp_sender_format, mbuf, start_time, end_time, ubuf, nbuf, zbuf, … in iperf_print_intermediate()
3457 avg_jitter /= test->num_streams; in iperf_print_intermediate()
3464 if (test->json_output) in iperf_print_intermediate()
3465 …, (int64_t) lost_packets, (int64_t) total_packets, (double) lost_percent, test->omitting, stream_m… in iperf_print_intermediate()
3467 …rintf(test, report_sum_bw_udp_format, mbuf, start_time, end_time, ubuf, nbuf, avg_jitter * 1000.0,… in iperf_print_intermediate()
3479 iperf_print_results(struct iperf_test *test) in iperf_print_results() argument
3489 int tmp_sender_has_retransmits = test->sender_has_retransmits; in iperf_print_results()
3493 if (test->json_output) { in iperf_print_results()
3497 cJSON_AddItemToObject(test->json_end, "streams", json_summary_streams); in iperf_print_results()
3499 iperf_printf(test, "%s", report_bw_separator); in iperf_print_results()
3500 if (test->verbose) in iperf_print_results()
3501 iperf_printf(test, "%s", report_summary); in iperf_print_results()
3502 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_results()
3503 if (test->sender_has_retransmits || test->other_side_has_retransmits) { in iperf_print_results()
3504 if (test->bidirectional) in iperf_print_results()
3505 iperf_printf(test, "%s", report_bw_retrans_header_bidir); in iperf_print_results()
3507 iperf_printf(test, "%s", report_bw_retrans_header); in iperf_print_results()
3510 if (test->bidirectional) in iperf_print_results()
3511 iperf_printf(test, "%s", report_bw_header_bidir); in iperf_print_results()
3513 iperf_printf(test, "%s", report_bw_header); in iperf_print_results()
3516 if (test->bidirectional) in iperf_print_results()
3517 iperf_printf(test, "%s", report_bw_udp_header_bidir); in iperf_print_results()
3519 iperf_printf(test, "%s", report_bw_udp_header); in iperf_print_results()
3532 if (test->mode == BIDIRECTIONAL) { in iperf_print_results()
3533 if (test->role == 'c') { in iperf_print_results()
3541 lower_mode = test->mode; in iperf_print_results()
3570 if (test->mode == BIDIRECTIONAL) { in iperf_print_results()
3571 sprintf(mbuf, "[%s-%s]", stream_must_be_sender?"TX":"RX", test->role == 'c'?"C":"S"); in iperf_print_results()
3577 if (test->mode == BIDIRECTIONAL && stream_must_be_sender) in iperf_print_results()
3578 test->sender_has_retransmits = tmp_sender_has_retransmits; in iperf_print_results()
3579 else if (test->mode == BIDIRECTIONAL && !stream_must_be_sender) in iperf_print_results()
3580 test->sender_has_retransmits = test->other_side_has_retransmits; in iperf_print_results()
3583 sp = SLIST_FIRST(&test->streams); in iperf_print_results()
3615 SLIST_FOREACH(sp, &test->streams, streams) { in iperf_print_results()
3617 if (test->json_output) { in iperf_print_results()
3638 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_results()
3639 if (test->sender_has_retransmits) { in iperf_print_results()
3662 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_results()
3663 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_results()
3664 if (test->sender_has_retransmits) { in iperf_print_results()
3666 if (test->json_output) in iperf_print_results()
3669 if (test->role == 's' && !sp->sender) { in iperf_print_results()
3670 if (test->verbose) in iperf_print_results()
3671 … iperf_printf(test, report_sender_not_available_format, sp->socket); in iperf_print_results()
3674 …iperf_printf(test, report_bw_retrans_format, sp->socket, mbuf, start_time, sender_time, ubuf, nbuf… in iperf_print_results()
3678 if (test->json_output) in iperf_print_results()
3681 if (test->role == 's' && !sp->sender) { in iperf_print_results()
3682 if (test->verbose) in iperf_print_results()
3683 … iperf_printf(test, report_sender_not_available_format, sp->socket); in iperf_print_results()
3686 …iperf_printf(test, report_bw_format, sp->socket, mbuf, start_time, sender_time, ubuf, nbuf, report… in iperf_print_results()
3697 if (test->json_output) { in iperf_print_results()
3725 if (test->role == 's' && !sp->sender) { in iperf_print_results()
3726 if (test->verbose) in iperf_print_results()
3727 iperf_printf(test, report_sender_not_available_format, sp->socket); in iperf_print_results()
3730 …iperf_printf(test, report_bw_udp_format, sp->socket, mbuf, start_time, sender_time, ubuf, nbuf, 0.… in iperf_print_results()
3733 …iperf_printf(test, report_sum_outoforder, mbuf, start_time, sender_time, (sp->outoforder_packets -… in iperf_print_results()
3746 if (test->json_output) in iperf_print_results()
3747 …d, (int64_t) sb.st_size, (int64_t) percent_sent, (int64_t) percent_received, test->diskfile_name)); in iperf_print_results()
3750 … iperf_printf(test, report_diskfile, ubuf, sbuf, percent_sent, test->diskfile_name); in iperf_print_results()
3754 … iperf_printf(test, report_diskfile, ubuf, sbuf, percent_received, test->diskfile_name); in iperf_print_results()
3766 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_results()
3767 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_results()
3769 if (test->json_output) in iperf_print_results()
3772 if (test->role == 's' && sp->sender) { in iperf_print_results()
3773 if (test->verbose) in iperf_print_results()
3774 … iperf_printf(test, report_receiver_not_available_format, sp->socket); in iperf_print_results()
3777 …iperf_printf(test, report_bw_format, sp->socket, mbuf, start_time, receiver_time, ubuf, nbuf, repo… in iperf_print_results()
3786 if (! test->json_output) { in iperf_print_results()
3794 if (test->role == 's' && sp->sender) { in iperf_print_results()
3795 if (test->verbose) in iperf_print_results()
3796 … iperf_printf(test, report_receiver_not_available_format, sp->socket); in iperf_print_results()
3799 …iperf_printf(test, report_bw_udp_format, sp->socket, mbuf, start_time, receiver_time, ubuf, nbuf, … in iperf_print_results()
3807 if (test->num_streams > 1 || test->json_output) { in iperf_print_results()
3818 if (test->mode == BIDIRECTIONAL) { in iperf_print_results()
3819 if ((test->role == 'c' && !stream_must_be_sender) || in iperf_print_results()
3820 (test->role != 'c' && stream_must_be_sender)) in iperf_print_results()
3837 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_results()
3838 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in iperf_print_results()
3839 if (test->sender_has_retransmits) { in iperf_print_results()
3841 if (test->json_output) in iperf_print_results()
3842 …cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f second… in iperf_print_results()
3844 if (test->role == 's' && !stream_must_be_sender) { in iperf_print_results()
3845 if (test->verbose) in iperf_print_results()
3846 … iperf_printf(test, report_sender_not_available_summary_format, "SUM"); in iperf_print_results()
3849 …iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, sender_time, ubuf, nbuf, total_… in iperf_print_results()
3853 if (test->json_output) in iperf_print_results()
3854 …cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f second… in iperf_print_results()
3856 if (test->role == 's' && !stream_must_be_sender) { in iperf_print_results()
3857 if (test->verbose) in iperf_print_results()
3858 … iperf_printf(test, report_sender_not_available_summary_format, "SUM"); in iperf_print_results()
3861 …iperf_printf(test, report_sum_bw_format, mbuf, start_time, sender_time, ubuf, nbuf, report_sender); in iperf_print_results()
3872 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_results()
3873 if (test->json_output) in iperf_print_results()
3874 …cJSON_AddItemToObject(test->json_end, sum_received_name, iperf_json_printf("start: %f end: %f se… in iperf_print_results()
3876 if (test->role == 's' && stream_must_be_sender) { in iperf_print_results()
3877 if (test->verbose) in iperf_print_results()
3878 iperf_printf(test, report_receiver_not_available_summary_format, "SUM"); in iperf_print_results()
3881 …iperf_printf(test, report_sum_bw_format, mbuf, start_time, receiver_time, ubuf, nbuf, report_recei… in iperf_print_results()
3885 avg_jitter /= test->num_streams; in iperf_print_results()
3893 if (test->json_output) { in iperf_print_results()
3899 …cJSON_AddItemToObject(test->json_end, sum_name, iperf_json_printf("start: %f end: %f seconds: %f… in iperf_print_results()
3905 …cJSON_AddItemToObject(test->json_end, sum_sent_name, iperf_json_printf("start: %f end: %f second… in iperf_print_results()
3906 …cJSON_AddItemToObject(test->json_end, sum_received_name, iperf_json_printf("start: %f end: %f se… in iperf_print_results()
3913 if (! (test->role == 's' && !stream_must_be_sender) ) { in iperf_print_results()
3915 …iperf_printf(test, report_sum_bw_udp_format, mbuf, start_time, sender_time, ubuf, nbuf, 0.0, 0, se… in iperf_print_results()
3917 if (! (test->role == 's' && stream_must_be_sender) ) { in iperf_print_results()
3927 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in iperf_print_results()
3928 …iperf_printf(test, report_sum_bw_udp_format, mbuf, start_time, receiver_time, ubuf, nbuf, avg_jitt… in iperf_print_results()
3934 if (test->json_output && current_mode == upper_mode) { in iperf_print_results()
3935 …test->json_end, "cpu_utilization_percent", iperf_json_printf("host_total: %f host_user: %f host_… in iperf_print_results()
3936 if (test->protocol->id == Ptcp) { in iperf_print_results()
3939 snd_congestion = test->congestion_used; in iperf_print_results()
3940 rcv_congestion = test->remote_congestion_used; in iperf_print_results()
3943 snd_congestion = test->remote_congestion_used; in iperf_print_results()
3944 rcv_congestion = test->congestion_used; in iperf_print_results()
3947 … cJSON_AddStringToObject(test->json_end, "sender_tcp_congestion", snd_congestion); in iperf_print_results()
3950 … cJSON_AddStringToObject(test->json_end, "receiver_tcp_congestion", rcv_congestion); in iperf_print_results()
3955 if (test->verbose) { in iperf_print_results()
3957 if (test->bidirectional) { in iperf_print_results()
3958 …test, report_cpu, report_local, stream_must_be_sender?report_sender:report_receiver, test->cpu_uti… in iperf_print_results()
3959 …test, report_cpu, report_local, !stream_must_be_sender?report_sender:report_receiver, test->cpu_ut… in iperf_print_results()
3961 …test, report_cpu, report_local, stream_must_be_sender?report_sender:report_receiver, test->cpu_uti… in iperf_print_results()
3963 if (test->protocol->id == Ptcp) { in iperf_print_results()
3966 snd_congestion = test->congestion_used; in iperf_print_results()
3967 rcv_congestion = test->remote_congestion_used; in iperf_print_results()
3970 snd_congestion = test->remote_congestion_used; in iperf_print_results()
3971 rcv_congestion = test->congestion_used; in iperf_print_results()
3974 iperf_printf(test, "snd_tcp_congestion %s\n", snd_congestion); in iperf_print_results()
3977 iperf_printf(test, "rcv_tcp_congestion %s\n", rcv_congestion); in iperf_print_results()
3983 if (test->role == 'c' && iperf_get_test_get_server_output(test) && !test->json_output) { in iperf_print_results()
3984 if (test->json_server_output) { in iperf_print_results()
3985 char *str = cJSON_Print(test->json_server_output); in iperf_print_results()
3986 iperf_printf(test, "\nServer JSON output:\n%s\n", str); in iperf_print_results()
3988 cJSON_Delete(test->json_server_output); in iperf_print_results()
3989 test->json_server_output = NULL; in iperf_print_results()
3991 if (test->server_output_text) { in iperf_print_results()
3992 iperf_printf(test, "\nServer output:\n%s\n", test->server_output_text); in iperf_print_results()
3993 test->server_output_text = NULL; in iperf_print_results()
4000 if (test->mode == BIDIRECTIONAL) in iperf_print_results()
4001 test->sender_has_retransmits = tmp_sender_has_retransmits; in iperf_print_results()
4013 iperf_reporter_callback(struct iperf_test *test) in iperf_reporter_callback() argument
4015 switch (test->state) { in iperf_reporter_callback()
4019 iperf_print_intermediate(test); in iperf_reporter_callback()
4023 iperf_print_intermediate(test); in iperf_reporter_callback()
4024 iperf_print_results(test); in iperf_reporter_callback()
4036 print_interval_results(struct iperf_test *test, struct iperf_stream *sp, cJSON *json_interval_strea… in print_interval_results() argument
4048 if (test->mode == BIDIRECTIONAL) { in print_interval_results()
4049 sprintf(mbuf, "[%s-%s]", sp->sender?"TX":"RX", test->role == 'c'?"C":"S"); in print_interval_results()
4057 iperf_err(test, "print_interval_results error: interval_results is NULL"); in print_interval_results()
4060 if (!test->json_output) { in print_interval_results()
4062 if (sp == SLIST_FIRST(&test->streams)) { in print_interval_results()
4068 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in print_interval_results()
4069 if (test->sender_has_retransmits == 1) { in print_interval_results()
4070 if (test->bidirectional) in print_interval_results()
4071 iperf_printf(test, "%s", report_bw_retrans_cwnd_header_bidir); in print_interval_results()
4073 iperf_printf(test, "%s", report_bw_retrans_cwnd_header); in print_interval_results()
4076 if (test->bidirectional) in print_interval_results()
4077 iperf_printf(test, "%s", report_bw_header_bidir); in print_interval_results()
4079 iperf_printf(test, "%s", report_bw_header); in print_interval_results()
4082 if (test->mode == SENDER) { in print_interval_results()
4083 iperf_printf(test, "%s", report_bw_udp_sender_header); in print_interval_results()
4084 } else if (test->mode == RECEIVER){ in print_interval_results()
4085 iperf_printf(test, "%s", report_bw_udp_header); in print_interval_results()
4088 iperf_printf(test, "%s", report_bw_udp_header_bidir); in print_interval_results()
4091 } else if (test->num_streams > 1) in print_interval_results()
4092 iperf_printf(test, "%s", report_bw_separator); in print_interval_results()
4103 unit_snprintf(nbuf, UNIT_LEN, bandwidth, test->settings->unit_format); in print_interval_results()
4110 if (test->protocol->id == Ptcp || test->protocol->id == Psctp) { in print_interval_results()
4111 if (test->sender_has_retransmits == 1 && sp->sender) { in print_interval_results()
4113 if (test->json_output) in print_interval_results()
4117 …iperf_printf(test, report_bw_retrans_cwnd_format, sp->socket, mbuf, st, et, ubuf, nbuf, irp->inter… in print_interval_results()
4121 if (test->json_output) in print_interval_results()
4124 …iperf_printf(test, report_bw_format, sp->socket, mbuf, st, et, ubuf, nbuf, irp->omitted?report_omi… in print_interval_results()
4129 if (test->json_output) in print_interval_results()
4132 …iperf_printf(test, report_bw_udp_sender_format, sp->socket, mbuf, st, et, ubuf, nbuf, zbuf, irp->i… in print_interval_results()
4140 if (test->json_output) in print_interval_results()
4143 …iperf_printf(test, report_bw_udp_format, sp->socket, mbuf, st, et, ubuf, nbuf, irp->jitter * 1000.… in print_interval_results()
4147 if (test->logfile || test->forceflush) in print_interval_results()
4148 iflush(test); in print_interval_results()
4158 munmap(sp->buffer, sp->test->settings->blksize); in iperf_free_stream()
4174 iperf_new_stream(struct iperf_test *test, int s, int sender) in iperf_new_stream() argument
4180 if (test->tmp_template) { in iperf_new_stream()
4181 snprintf(template, sizeof(template) / sizeof(char), "%s", test->tmp_template); in iperf_new_stream()
4206 sp->test = test; in iperf_new_stream()
4207 sp->settings = test->settings; in iperf_new_stream()
4232 if (ftruncate(sp->buffer_fd, test->settings->blksize) < 0) { in iperf_new_stream()
4238 …sp->buffer = (char *) mmap(NULL, test->settings->blksize, PROT_READ|PROT_WRITE, MAP_PRIVATE, sp->b… in iperf_new_stream()
4250 sp->snd = test->protocol->send; in iperf_new_stream()
4251 sp->rcv = test->protocol->recv; in iperf_new_stream()
4253 if (test->diskfile_name != (char*) 0) { in iperf_new_stream()
4254 …sp->diskfile_fd = open(test->diskfile_name, sender ? O_RDONLY : (O_WRONLY|O_CREAT|O_TRUNC), S_IRUS… in iperf_new_stream()
4257 munmap(sp->buffer, sp->test->settings->blksize); in iperf_new_stream()
4270 if (test->repeating_payload) in iperf_new_stream()
4271 fill_with_repeating_pattern(sp->buffer, test->settings->blksize); in iperf_new_stream()
4273 ret = readentropy(sp->buffer, test->settings->blksize); in iperf_new_stream()
4275 if ((ret < 0) || (iperf_init_stream(sp, test) < 0)) { in iperf_new_stream()
4277 munmap(sp->buffer, sp->test->settings->blksize); in iperf_new_stream()
4282 iperf_add_stream(test, sp); in iperf_new_stream()
4289 iperf_init_stream(struct iperf_stream *sp, struct iperf_test *test) in iperf_init_stream() argument
4306 if ((opt = test->settings->tos)) { in iperf_init_stream()
4327 if (iperf_get_test_protocol_id(test) == Pudp && in iperf_init_stream()
4329 iperf_get_dont_fragment(test)) { in iperf_init_stream()
4369 iperf_add_stream(struct iperf_test *test, struct iperf_stream *sp) in iperf_add_stream() argument
4374 if (SLIST_EMPTY(&test->streams)) { in iperf_add_stream()
4375 SLIST_INSERT_HEAD(&test->streams, sp, streams); in iperf_add_stream()
4384 SLIST_FOREACH(n, &test->streams, streams) { in iperf_add_stream()
4409 if (sp->diskfile_left < sp->test->settings->blksize && !sp->test->done) { in diskfile_send()
4410 r = read(sp->diskfile_fd, sp->buffer, sp->test->settings->blksize - in diskfile_send()
4414 if (sp->test->debug) { in diskfile_send()
4420 if (buffer_left != sp->test->settings->blksize) { in diskfile_send()
4421 if (sp->test->debug) in diskfile_send()
4431 sp->test->done = 1; in diskfile_send()
4432 if (sp->test->debug) in diskfile_send()
4440 if( sp->test->done || buffer_left == 0 ){ in diskfile_send()
4441 if (sp->test->debug) in diskfile_send()
4443 sp->test->done = 1; in diskfile_send()
4458 if (sp->diskfile_left && sp->diskfile_left < sp->test->settings->blksize) { in diskfile_send()
4460 sp->buffer + (sp->test->settings->blksize - sp->diskfile_left), in diskfile_send()
4462 if (sp->test->debug) in diskfile_send()
4463 …printf("Shifting %d bytes by %d\n", sp->diskfile_left, (sp->test->settings->blksize - sp->diskfile… in diskfile_send()
4503 iperf_got_sigend(struct iperf_test *test) in iperf_got_sigend() argument
4509 if (test->role == 'c' || in iperf_got_sigend()
4510 (test->role == 's' && test->state == TEST_RUNNING)) { in iperf_got_sigend()
4512 test->done = 1; in iperf_got_sigend()
4513 cpu_util(test->cpu_util); in iperf_got_sigend()
4514 test->stats_callback(test); in iperf_got_sigend()
4515 test->state = DISPLAY_RESULTS; /* change local state only */ in iperf_got_sigend()
4516 if (test->on_test_finish) in iperf_got_sigend()
4517 test->on_test_finish(test); in iperf_got_sigend()
4518 test->reporter_callback(test); in iperf_got_sigend()
4521 if (test->ctrl_sck >= 0) { in iperf_got_sigend()
4522 test->state = (test->role == 'c') ? CLIENT_TERMINATE : SERVER_TERMINATE; in iperf_got_sigend()
4523 (void) Nwrite(test->ctrl_sck, (char*) &test->state, sizeof(signed char), Ptcp); in iperf_got_sigend()
4525 i_errno = (test->role == 'c') ? IECLIENTTERM : IESERVERTERM; in iperf_got_sigend()
4526 iperf_errexit(test, "interrupt - %s", iperf_strerror(i_errno)); in iperf_got_sigend()
4531 iperf_create_pidfile(struct iperf_test *test) in iperf_create_pidfile() argument
4533 if (test->pidfile) { in iperf_create_pidfile()
4538 fd = open(test->pidfile, O_RDONLY, 0); in iperf_create_pidfile()
4554 free(test->pidfile); in iperf_create_pidfile()
4555 test->pidfile = NULL; in iperf_create_pidfile()
4556 iperf_errexit(test, "Another instance of iperf3 appears to be running"); in iperf_create_pidfile()
4566 fd = open(test->pidfile, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR|S_IWUSR); in iperf_create_pidfile()
4583 iperf_delete_pidfile(struct iperf_test *test) in iperf_delete_pidfile() argument
4585 if (test->pidfile) { in iperf_delete_pidfile()
4586 if (unlink(test->pidfile) < 0) { in iperf_delete_pidfile()
4594 iperf_json_start(struct iperf_test *test) in iperf_json_start() argument
4596 test->json_top = cJSON_CreateObject(); in iperf_json_start()
4597 if (test->json_top == NULL) in iperf_json_start()
4599 test->json_start = cJSON_CreateObject(); in iperf_json_start()
4600 if (test->json_start == NULL) in iperf_json_start()
4602 cJSON_AddItemToObject(test->json_top, "start", test->json_start); in iperf_json_start()
4603 test->json_connected = cJSON_CreateArray(); in iperf_json_start()
4604 if (test->json_connected == NULL) in iperf_json_start()
4606 cJSON_AddItemToObject(test->json_start, "connected", test->json_connected); in iperf_json_start()
4607 test->json_intervals = cJSON_CreateArray(); in iperf_json_start()
4608 if (test->json_intervals == NULL) in iperf_json_start()
4610 cJSON_AddItemToObject(test->json_top, "intervals", test->json_intervals); in iperf_json_start()
4611 test->json_end = cJSON_CreateObject(); in iperf_json_start()
4612 if (test->json_end == NULL) in iperf_json_start()
4614 cJSON_AddItemToObject(test->json_top, "end", test->json_end); in iperf_json_start()
4619 iperf_json_finish(struct iperf_test *test) in iperf_json_finish() argument
4621 if (test->title) in iperf_json_finish()
4622 cJSON_AddStringToObject(test->json_top, "title", test->title); in iperf_json_finish()
4623 if (test->extra_data) in iperf_json_finish()
4624 cJSON_AddStringToObject(test->json_top, "extra_data", test->extra_data); in iperf_json_finish()
4626 if (test->json_server_output) { in iperf_json_finish()
4627 cJSON_AddItemToObject(test->json_top, "server_output_json", test->json_server_output); in iperf_json_finish()
4629 if (test->server_output_text) { in iperf_json_finish()
4630 cJSON_AddStringToObject(test->json_top, "server_output_text", test->server_output_text); in iperf_json_finish()
4635 char *str = cJSON_Print(test->json_top); in iperf_json_finish()
4638 test->json_output_string = strdup(str); in iperf_json_finish()
4640 if (test->json_output_string == NULL) in iperf_json_finish()
4642 fprintf(test->outfile, "%s\n", test->json_output_string); in iperf_json_finish()
4643 iflush(test); in iperf_json_finish()
4644 cJSON_Delete(test->json_top); in iperf_json_finish()
4645 …test->json_top = test->json_start = test->json_connected = test->json_intervals = test->json_serve… in iperf_json_finish()
4653 iperf_setaffinity(struct iperf_test *test, int affinity) in iperf_setaffinity() argument
4669 sizeof(cpuset_t), &test->cpumask) != 0) { in iperf_setaffinity()
4699 iperf_clearaffinity(struct iperf_test *test) in iperf_clearaffinity() argument
4715 sizeof(cpuset_t), &test->cpumask) != 0) { in iperf_clearaffinity()
4741 iperf_printf(struct iperf_test *test, const char* format, ...) in iperf_printf() argument
4750 if (iperf_get_test_timestamps(test)) { in iperf_printf()
4753 strftime(iperf_timestr, sizeof(iperf_timestr), iperf_get_test_timestamp_format(test), ltm); in iperf_printf()
4769 if (test->role == 'c') { in iperf_printf()
4771 r0 = fprintf(test->outfile, "%s", ct); in iperf_printf()
4776 if (test->title) { in iperf_printf()
4777 r0 = fprintf(test->outfile, "%s: ", test->title); in iperf_printf()
4783 r0 = vfprintf(test->outfile, format, argp); in iperf_printf()
4789 else if (test->role == 's') { in iperf_printf()
4805 fprintf(test->outfile, "%s", linebuffer); in iperf_printf()
4807 if (test->role == 's' && iperf_get_test_get_server_output(test)) { in iperf_printf()
4810 TAILQ_INSERT_TAIL(&(test->server_output_list), l, textlineentries); in iperf_printf()
4817 iflush(struct iperf_test *test) in iflush() argument
4819 return fflush(test->outfile); in iflush()