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 send_sctp_stream();
122 extern void send_sctp_rr();
123 
124 extern void recv_sctp_stream();
125 extern void recv_sctp_rr();
126 
127 extern void loc_cpu_rate();
128 extern void rem_cpu_rate();
129