xref: /iperf/examples/mis.c (revision 480824e3)
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