102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/*
202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project        Copyright (C) 1993-2003 Hewlett-Packard Company
302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project*/
402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* This file contains the test-specific definitions for netperf's BSD */
602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* sockets tests */
702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct	sctp_stream_request_struct {
1002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_buf_size;
1102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_buf_size;	/* how big does the client want it - the */
1202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* receive socket buffer that is */
1302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	receive_size;   /* how many bytes do we want to receive at one */
1402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* time? */
1502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_alignment; /* what is the alignment of the receive */
1602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* buffer? */
1702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_offset;    /* and at what offset from that alignment? */
1802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	no_delay;       /* do we disable the nagle algorithm for send */
1902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* coalescing? */
2002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	measure_cpu;	/* does the client want server cpu utilization */
2102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* measured? */
2202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	cpu_rate;	/* do we know how fast the cpu is already? */
2302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	test_length;	/* how long is the test?		*/
2402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_rcvavoid;    /* do we want the remote to avoid copies on */
2502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* receives? */
2602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_sndavoid;    /* do we want the remote to avoid send copies? */
2702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   dirty_count;    /* how many integers in the receive buffer */
2802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* should be made dirty before calling recv? */
2902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   clean_count;    /* how many integers should be read from the */
3002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* recv buffer before calling recv? */
3102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   port;		/* the to port to which recv side should bind
3202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			   to allow netperf to run through firewalls */
3302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   ipfamily;	/* address family of ipaddress */
3402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   non_blocking;   /* run the test in non-blocking mode */
3502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
3602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
3702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct	sctp_stream_response_struct {
3802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_buf_size;	/* how big does the client want it	*/
3902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	receive_size;
4002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	no_delay;
4102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	measure_cpu;	/* does the client want server cpu	*/
4202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	test_length;	/* how long is the test?		*/
4302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_buf_size;
4402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	data_port_number;	/* connect to me here	*/
4502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	cpu_rate;		/* could we measure	*/
4602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_rcvavoid;	/* could the remote avoid receive copies? */
4702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_sndavoid;	/* could the remote avoid send copies? */
4802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   non_blocking;   /* run the test in non-blocking mode */
4902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
5002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
5102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct sctp_stream_results_struct {
5202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  double         bytes_received;
5302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  unsigned int	 recv_calls;
5402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	         elapsed_time;	/* how long the test ran */
5502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	         cpu_util;	/* -1 if not measured */
5602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	         serv_dem;	/* -1 if not measured */
5702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int            cpu_method;    /* how was cpu util measured? */
5802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int            num_cpus;      /* how many CPUs had the remote? */
5902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
6002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
6102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct	sctp_rr_request_struct {
6202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_buf_size;	/* how big does the client want it	*/
6302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_buf_size;
6402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_alignment;
6502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_offset;
6602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_alignment;
6702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_offset;
6802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	request_size;
6902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	response_size;
7002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	no_delay;
7102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	measure_cpu;	/* does the client want server cpu	*/
7202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	cpu_rate;	/* do we know how fast the cpu is?	*/
7302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	test_length;	/* how long is the test?		*/
7402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_rcvavoid;    /* do we want the remote to avoid receive */
7502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			/* copies? */
7602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_sndavoid;    /* do we want the remote to avoid send copies? */
7702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   port;		/* the to port to which recv side should bind
7802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			   to allow netperf to run through firewalls */
7902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   ipfamily;	/* address family of ipaddress */
8002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   non_blocking;   /* run the test in non-blocking mode */
8102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
8202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
8302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct	sctp_rr_response_struct {
8402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	recv_buf_size;	/* how big does the client want it	*/
8502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	no_delay;
8602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	measure_cpu;	/* does the client want server cpu	*/
8702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	test_length;	/* how long is the test?		*/
8802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	send_buf_size;
8902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	data_port_number;	/* connect to me here	*/
9002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	cpu_rate;		/* could we measure	*/
9102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_rcvavoid;	/* could the remote avoid receive copies? */
9202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int	so_sndavoid;	/* could the remote avoid send copies? */
9302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int   non_blocking;   /* run the test in non-blocking mode */
9402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
9502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
9602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct sctp_rr_results_struct {
9702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  unsigned int  bytes_received;	/* ignored initially */
9802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  unsigned int	recv_calls;	/* ignored initially */
9902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  unsigned int	trans_received;	/* not ignored  */
10002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	        elapsed_time;	/* how long the test ran */
10102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	        cpu_util;	/* -1 if not measured */
10202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  float	        serv_dem;	/* -1 if not measured */
10302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int           cpu_method;    /* how was cpu util measured? */
10402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int           num_cpus;      /* how many CPUs had the remote? */
10502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
10602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
10702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_SNDRCV_INFO_EV		0x01
10802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_ASSOC_CHANGE_EV		0x02
10902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_PEERADDR_CHANGE_EV		0x04
11002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_SND_FAILED_EV		0x08
11102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_REMOTE_ERROR_EV		0x10
11202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_SHUTDOWN_EV		0x20
11302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_PD_EV			0x40
11402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SCTP_ADAPT_EV			0x80
11502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
11602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projecttypedef enum sctp_disposition {
11702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    SCTP_OK = 1,
11802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    SCTP_CLOSE,
11902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project} sctp_disposition_t;
12002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
1217cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void scan_sctp_args( int argc, char *argv[] );
12202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
1237cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void send_sctp_stream( char remote_host[] );
1247cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void send_sctp_stream_1toMany( char remote_host[] );
1257cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void send_sctp_rr( char remote_host[] );
1267cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void send_sctp_rr_1toMany( char remote_host[] );
1277cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughes
1287cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void recv_sctp_stream( void );
1297cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void recv_sctp_stream_1toMany( void );
1307cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void recv_sctp_rr( void );
1317cb62816f02cc6abb1fe88b94808fc412e0b29d0Elliott Hughesextern void recv_sctp_rr_1toMany( void );
13202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
13302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern void loc_cpu_rate();
13402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern void rem_cpu_rate();
135