102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* 202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project Copyright (C) 1993-2007 Hewlett-Packard Company 402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project ALL RIGHTS RESERVED. 502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project The enclosed software and documentation includes copyrighted works 702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project of Hewlett-Packard Co. For as long as you comply with the following 802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project limitations, you are hereby authorized to (i) use, reproduce, and 902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project modify the software and documentation, and to (ii) distribute the 1002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project software and documentation, including modifications, for 1102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project non-commercial purposes only. 1202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 1302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 1. The enclosed software and documentation is made available at no 1402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project charge in order to advance the general development of 1502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project high-performance networking products. 1602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 1702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 2. You may not delete any copyright notices contained in the 1802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project software or documentation. All hard copies, and copies in 1902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project source code or object code form, of the software or 2002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project documentation (including modifications) must contain at least 2102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project one of the copyright notices. 2202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 2302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 3. The enclosed software and documentation has not been subjected 2402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project to testing and quality control and is not a Hewlett-Packard Co. 2502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project product. At a future time, Hewlett-Packard Co. may or may not 2602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project offer a version of the software and documentation as a product. 2702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 2802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 4. THE SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS". 2902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project HEWLETT-PACKARD COMPANY DOES NOT WARRANT THAT THE USE, 3002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project REPRODUCTION, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR 3102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project DOCUMENTATION WILL NOT INFRINGE A THIRD PARTY'S INTELLECTUAL 3202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project PROPERTY RIGHTS. HP DOES NOT WARRANT THAT THE SOFTWARE OR 3302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project DOCUMENTATION IS ERROR FREE. HP DISCLAIMS ALL WARRANTIES, 3402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project EXPRESS AND IMPLIED, WITH REGARD TO THE SOFTWARE AND THE 3502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project DOCUMENTATION. HP SPECIFICALLY DISCLAIMS ALL WARRANTIES OF 3602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 3702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 3802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 5. HEWLETT-PACKARD COMPANY WILL NOT IN ANY EVENT BE LIABLE FOR ANY 3902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES 4002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project (INCLUDING LOST PROFITS) RELATED TO ANY USE, REPRODUCTION, 4102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project MODIFICATION, OR DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION. 4202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 4302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project*/ 4402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectchar netperf_id[]="\ 4502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project@(#)netperf.c (c) Copyright 1993-2007 Hewlett-Packard Company. Version 2.4.3"; 4602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 4702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_CONFIG_H 4802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "config.h" 4902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 5002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 5102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <stdio.h> 5202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <stdlib.h> 5302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_STRINGS_H 5402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <strings.h> 5502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 5602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 5702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* FreeBSD doesn't like socket.h before types are set. */ 5802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if __FreeBSD__ 5902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include <sys/types.h> 6002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 6102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 6202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef WIN32 6302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* this should only be temporary */ 6402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <sys/socket.h> 6502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 6602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 6702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32 6802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <winsock2.h> 6902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <windows.h> 7002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WIN32 */ 7102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 7202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "netsh.h" 7302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "netlib.h" 7402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_bsd.h" 7502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 7602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_UNIX 7702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_unix.h" 7802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_UNIX */ 7902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 8002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_XTI 8102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_xti.h" 8202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_XTI */ 8302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 8402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_DLPI 8502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_dlpi.h" 8602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_DLPI */ 8702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 8802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_SDP 8902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_sdp.h" 9002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 9102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 9202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* The DNS tests have been removed from netperf2. Those wanting to do 9302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project DNS_RR tests should use netperf4 instead. */ 9402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 9502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef DO_DNS 9602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#error DNS tests have been removed from netperf. Use netperf4 instead 9702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* DO_DNS */ 9802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 9902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_SCTP 10002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "nettest_sctp.h" 10102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 10202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 10302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* this file contains the main for the netperf program. all the other */ 10402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* routines can be found in the file netsh.c */ 10502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 10602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 10702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectint _cdecl 10802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectmain(int argc, char *argv[]) 10902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project{ 11002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 11102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32 11202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project WSADATA wsa_data ; 11302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 11402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* Initialize the winsock lib ( version 2.2 ) */ 11502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if ( WSAStartup(MAKEWORD(2,2), &wsa_data) == SOCKET_ERROR ){ 11602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project printf("WSAStartup() failed : %d\n", GetLastError()) ; 11702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project return 1 ; 11802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 11902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WIN32 */ 12002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 12102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project netlib_init(); 12202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project set_defaults(); 12302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project scan_cmd_line(argc,argv); 12402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 12502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if (debug) { 12602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project dump_globals(); 12702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project install_signal_catchers(); 12802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 12902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 13002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if (debug) { 13102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project printf("remotehost is %s and port %s\n",host_name,test_port); 13202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project fflush(stdout); 13302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 13402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 13502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 13602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if (!no_control) { 13702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project establish_control(host_name,test_port,address_family, 13802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project local_host_name,local_test_port,local_address_family); 13902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 14002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 14102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if (strcasecmp(test_name,"TCP_STREAM") == 0) { 14202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_stream(host_name); 14302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 14402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_MAERTS") == 0) { 14502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_maerts(host_name); 14602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 14702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_ICSC_EXS 14802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"EXS_TCP_STREAM") == 0) { 14902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_exs_tcp_stream(host_name); 15002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 15102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_ICSC_EXS */ 15202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_SENDFILE 15302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_SENDFILE") == 0) { 15402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project sendfile_tcp_stream(host_name); 15502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 15602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_SENDFILE */ 15702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_RR") == 0) { 15802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_rr(host_name); 15902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 16002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_CRR") == 0) { 16102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_conn_rr(host_name); 16202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 16302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_CC") == 0) { 16402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_cc(host_name); 16502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 16602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef DO_1644 16702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_TRR") == 0) { 16802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_tran_rr(host_name); 16902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 17002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* DO_1644 */ 17102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef DO_NBRR 17202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"TCP_NBRR") == 0) { 17302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_tcp_nbrr(host_name); 17402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 17502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* DO_NBRR */ 17602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"UDP_STREAM") == 0) { 17702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_udp_stream(host_name); 17802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 17902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"UDP_RR") == 0) { 18002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_udp_rr(host_name); 18102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 18202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"LOC_CPU") == 0) { 18302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project loc_cpu_rate(); 18402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 18502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"REM_CPU") == 0) { 18602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project rem_cpu_rate(); 18702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 18802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_DLPI 18902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DLCO_RR") == 0) { 19002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dlpi_co_rr(host_name); 19102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 19202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DLCL_RR") == 0) { 19302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dlpi_cl_rr(host_name); 19402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 19502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DLCO_STREAM") == 0) { 19602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dlpi_co_stream(host_name); 19702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 19802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DLCL_STREAM") == 0) { 19902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dlpi_cl_stream(host_name); 20002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 20102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_DLPI */ 20202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_UNIX 20302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"STREAM_RR") == 0) { 20402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_stream_rr(host_name); 20502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 20602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DG_RR") == 0) { 20702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dg_rr(host_name); 20802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 20902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"STREAM_STREAM") == 0) { 21002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_stream_stream(host_name); 21102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 21202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DG_STREAM") == 0) { 21302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_dg_stream(host_name); 21402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 21502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_UNIX */ 21602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_XTI 21702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"XTI_TCP_STREAM") == 0) { 21802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_xti_tcp_stream(host_name); 21902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 22002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"XTI_TCP_RR") == 0) { 22102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_xti_tcp_rr(host_name); 22202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 22302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"XTI_UDP_STREAM") == 0) { 22402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_xti_udp_stream(host_name); 22502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 22602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"XTI_UDP_RR") == 0) { 22702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_xti_udp_rr(host_name); 22802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 22902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_XTI */ 23002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 23102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_SCTP 23202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name, "SCTP_STREAM") == 0) { 23302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sctp_stream(host_name); 23402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 23502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name, "SCTP_RR") == 0) { 23602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sctp_rr(host_name); 23702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 23802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name, "SCTP_STREAM_MANY") == 0) { 23902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sctp_stream_1toMany(host_name); 24002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 24102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name, "SCTP_RR_MANY") == 0) { 24202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sctp_stream_1toMany(host_name); 24302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 24402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 24502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 24602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef DO_DNS 24702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"DNS_RR") == 0) { 24802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project fprintf(stderr, 24902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project "DNS tests can now be found in netperf4.\n"); 25002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project fflush(stderr); 25102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project exit(-1); 25202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 25302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* DO_DNS */ 25402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_SDP 25502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"SDP_STREAM") == 0) { 25602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sdp_stream(host_name); 25702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 25802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"SDP_MAERTS") == 0) { 25902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sdp_maerts(host_name); 26002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 26102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else if (strcasecmp(test_name,"SDP_RR") == 0) { 26202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project send_sdp_rr(host_name); 26302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 26402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_SDP */ 26502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project else { 26602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project printf("The test you requested is unknown to this netperf.\n"); 26702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project printf("Please verify that you have the correct test name, \n"); 26802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project printf("and that test family has been compiled into this netperf.\n"); 26902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project exit(1); 27002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 27102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 27202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project if (!no_control) { 27302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project shutdown_control(); 27402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project } 27502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 27602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32 27702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* Cleanup the winsock lib */ 27802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project WSACleanup(); 27902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif 28002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 28102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project return(0); 28202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project} 28302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 28402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project 285