1 /* 2 Copyright (C) 1993-2003 Hewlett-Packard Company 3 */ 4 5 /* This file contains the test-specific definitions for netperf's BSD */ 6 /* sockets tests */ 7 8 9 struct sctp_stream_request_struct { 10 int send_buf_size; 11 int recv_buf_size; /* how big does the client want it - the */ 12 /* receive socket buffer that is */ 13 int receive_size; /* how many bytes do we want to receive at one */ 14 /* time? */ 15 int recv_alignment; /* what is the alignment of the receive */ 16 /* buffer? */ 17 int recv_offset; /* and at what offset from that alignment? */ 18 int no_delay; /* do we disable the nagle algorithm for send */ 19 /* coalescing? */ 20 int measure_cpu; /* does the client want server cpu utilization */ 21 /* measured? */ 22 float cpu_rate; /* do we know how fast the cpu is already? */ 23 int test_length; /* how long is the test? */ 24 int so_rcvavoid; /* do we want the remote to avoid copies on */ 25 /* receives? */ 26 int so_sndavoid; /* do we want the remote to avoid send copies? */ 27 int dirty_count; /* how many integers in the receive buffer */ 28 /* should be made dirty before calling recv? */ 29 int clean_count; /* how many integers should be read from the */ 30 /* recv buffer before calling recv? */ 31 int port; /* the to port to which recv side should bind 32 to allow netperf to run through firewalls */ 33 int ipfamily; /* address family of ipaddress */ 34 int non_blocking; /* run the test in non-blocking mode */ 35 }; 36 37 struct sctp_stream_response_struct { 38 int recv_buf_size; /* how big does the client want it */ 39 int receive_size; 40 int no_delay; 41 int measure_cpu; /* does the client want server cpu */ 42 int test_length; /* how long is the test? */ 43 int send_buf_size; 44 int data_port_number; /* connect to me here */ 45 float cpu_rate; /* could we measure */ 46 int so_rcvavoid; /* could the remote avoid receive copies? */ 47 int so_sndavoid; /* could the remote avoid send copies? */ 48 int non_blocking; /* run the test in non-blocking mode */ 49 }; 50 51 struct sctp_stream_results_struct { 52 double bytes_received; 53 unsigned int recv_calls; 54 float elapsed_time; /* how long the test ran */ 55 float cpu_util; /* -1 if not measured */ 56 float serv_dem; /* -1 if not measured */ 57 int cpu_method; /* how was cpu util measured? */ 58 int num_cpus; /* how many CPUs had the remote? */ 59 }; 60 61 struct sctp_rr_request_struct { 62 int recv_buf_size; /* how big does the client want it */ 63 int send_buf_size; 64 int recv_alignment; 65 int recv_offset; 66 int send_alignment; 67 int send_offset; 68 int request_size; 69 int response_size; 70 int no_delay; 71 int measure_cpu; /* does the client want server cpu */ 72 float cpu_rate; /* do we know how fast the cpu is? */ 73 int test_length; /* how long is the test? */ 74 int so_rcvavoid; /* do we want the remote to avoid receive */ 75 /* copies? */ 76 int so_sndavoid; /* do we want the remote to avoid send copies? */ 77 int port; /* the to port to which recv side should bind 78 to allow netperf to run through firewalls */ 79 int ipfamily; /* address family of ipaddress */ 80 int non_blocking; /* run the test in non-blocking mode */ 81 }; 82 83 struct sctp_rr_response_struct { 84 int recv_buf_size; /* how big does the client want it */ 85 int no_delay; 86 int measure_cpu; /* does the client want server cpu */ 87 int test_length; /* how long is the test? */ 88 int send_buf_size; 89 int data_port_number; /* connect to me here */ 90 float cpu_rate; /* could we measure */ 91 int so_rcvavoid; /* could the remote avoid receive copies? */ 92 int so_sndavoid; /* could the remote avoid send copies? */ 93 int non_blocking; /* run the test in non-blocking mode */ 94 }; 95 96 struct sctp_rr_results_struct { 97 unsigned int bytes_received; /* ignored initially */ 98 unsigned int recv_calls; /* ignored initially */ 99 unsigned int trans_received; /* not ignored */ 100 float elapsed_time; /* how long the test ran */ 101 float cpu_util; /* -1 if not measured */ 102 float serv_dem; /* -1 if not measured */ 103 int cpu_method; /* how was cpu util measured? */ 104 int num_cpus; /* how many CPUs had the remote? */ 105 }; 106 107 #define SCTP_SNDRCV_INFO_EV 0x01 108 #define SCTP_ASSOC_CHANGE_EV 0x02 109 #define SCTP_PEERADDR_CHANGE_EV 0x04 110 #define SCTP_SND_FAILED_EV 0x08 111 #define SCTP_REMOTE_ERROR_EV 0x10 112 #define SCTP_SHUTDOWN_EV 0x20 113 #define SCTP_PD_EV 0x40 114 #define SCTP_ADAPT_EV 0x80 115 116 typedef enum sctp_disposition { 117 SCTP_OK = 1, 118 SCTP_CLOSE, 119 } sctp_disposition_t; 120 121 extern void scan_sctp_args( int argc, char *argv[] ); 122 123 extern void send_sctp_stream( char remote_host[] ); 124 extern void send_sctp_stream_1toMany( char remote_host[] ); 125 extern void send_sctp_rr( char remote_host[] ); 126 extern void send_sctp_rr_1toMany( char remote_host[] ); 127 128 extern void recv_sctp_stream( void ); 129 extern void recv_sctp_stream_1toMany( void ); 130 extern void recv_sctp_rr( void ); 131 extern void recv_sctp_rr_1toMany( void ); 132 133 extern void loc_cpu_rate(); 134 extern void rem_cpu_rate(); 135