1*c110a92dSBruce A. Mah #include "iperf_config.h"
2*c110a92dSBruce A. Mah
33e587542SJef Poskanzer #include <stdio.h>
43e587542SJef Poskanzer #include <stdlib.h>
53e587542SJef Poskanzer #include <unistd.h>
63e587542SJef Poskanzer #include <string.h>
7426221a3SBruce A. Mah #ifdef HAVE_STDINT_H
83e587542SJef Poskanzer #include <stdint.h>
9426221a3SBruce A. Mah #endif
103e587542SJef Poskanzer
113e587542SJef Poskanzer #include <iperf_api.h>
123e587542SJef Poskanzer
133e587542SJef Poskanzer int
main(int argc,char ** argv)143e587542SJef Poskanzer main( int argc, char** argv )
153e587542SJef Poskanzer {
163e587542SJef Poskanzer char* argv0;
173e587542SJef Poskanzer int port;
183e587542SJef Poskanzer struct iperf_test *test;
19cf06ba65SJef Poskanzer int consecutive_errors;
203e587542SJef Poskanzer
213e587542SJef Poskanzer argv0 = strrchr( argv[0], '/' );
223e587542SJef Poskanzer if ( argv0 != (char*) 0 )
233e587542SJef Poskanzer ++argv0;
243e587542SJef Poskanzer else
253e587542SJef Poskanzer argv0 = argv[0];
263e587542SJef Poskanzer
273e587542SJef Poskanzer if ( argc != 2 ) {
283e587542SJef Poskanzer fprintf( stderr, "usage: %s [port]\n", argv0 );
293e587542SJef Poskanzer exit( EXIT_FAILURE );
303e587542SJef Poskanzer }
313e587542SJef Poskanzer port = atoi( argv[1] );
323e587542SJef Poskanzer
333e587542SJef Poskanzer test = iperf_new_test();
343e587542SJef Poskanzer if ( test == NULL ) {
353e587542SJef Poskanzer fprintf( stderr, "%s: failed to create test\n", argv0 );
363e587542SJef Poskanzer exit( EXIT_FAILURE );
373e587542SJef Poskanzer }
383e587542SJef Poskanzer iperf_defaults( test );
398bdc8fffSJef Poskanzer iperf_set_verbose( test, 1 );
403e587542SJef Poskanzer iperf_set_test_role( test, 's' );
413e587542SJef Poskanzer iperf_set_test_server_port( test, port );
423e587542SJef Poskanzer
43cf06ba65SJef Poskanzer consecutive_errors = 0;
443e587542SJef Poskanzer for (;;) {
45cf06ba65SJef Poskanzer if ( iperf_run_server( test ) < 0 ) {
463e587542SJef Poskanzer fprintf( stderr, "%s: error - %s\n\n", argv0, iperf_strerror( i_errno ) );
47cf06ba65SJef Poskanzer ++consecutive_errors;
48cf06ba65SJef Poskanzer if (consecutive_errors >= 5) {
49ac0786c8SBruce A. Mah fprintf(stderr, "%s: too many errors, exiting\n", argv0);
50cf06ba65SJef Poskanzer break;
51cf06ba65SJef Poskanzer }
52cf06ba65SJef Poskanzer } else
53cf06ba65SJef Poskanzer consecutive_errors = 0;
543e587542SJef Poskanzer iperf_reset_test( test );
553e587542SJef Poskanzer }
563e587542SJef Poskanzer
573e587542SJef Poskanzer iperf_free_test( test );
583e587542SJef Poskanzer exit( EXIT_SUCCESS );
593e587542SJef Poskanzer }
60