auto import from //depot/cupcake/@135843
diff --git a/nettest_sdp.h b/nettest_sdp.h
new file mode 100644
index 0000000..31d76bc
--- /dev/null
+++ b/nettest_sdp.h
@@ -0,0 +1,170 @@
+/*
+        Copyright (C) 2007 Hewlett-Packard Company
+*/
+
+ /* This file contains the test-specific definitions for netperf's SDP */
+ /* sockets tests */
+
+/* one of these days, this should not be required */
+#ifndef AF_INET_SDP
+#define AF_INET_SDP 27
+#define PF_INET_SDP AF_INET_SDP
+#endif 
+
+struct	sdp_stream_request_struct {
+  int	send_buf_size;
+  int	recv_buf_size;	/* how big does the client want it - the */
+			/* receive socket buffer that is */ 
+  int	receive_size;   /* how many bytes do we want to receive at one */
+			/* time? */ 
+  int	recv_alignment; /* what is the alignment of the receive */
+			/* buffer? */ 
+  int	recv_offset;    /* and at what offset from that alignment? */ 
+  int	no_delay;       /* do we disable the nagle algorithm for send */
+			/* coalescing? */ 
+  int	measure_cpu;	/* does the client want server cpu utilization */
+			/* measured? */ 
+  float	cpu_rate;	/* do we know how fast the cpu is already? */ 
+  int	test_length;	/* how long is the test?		*/
+  int	so_rcvavoid;    /* do we want the remote to avoid copies on */
+			/* receives? */ 
+  int	so_sndavoid;    /* do we want the remote to avoid send copies? */
+  int   dirty_count;    /* how many integers in the receive buffer */
+			/* should be made dirty before calling recv? */  
+  int   clean_count;    /* how many integers should be read from the */
+			/* recv buffer before calling recv? */ 
+  int   port;		/* the to port to which recv side should bind
+			   to allow netperf to run through firewalls */
+  int   ipfamily;	/* address family of ipaddress */
+  int   non_blocking;   /* run the test in non-blocking mode */
+};
+
+struct	sdp_stream_response_struct {
+  int	recv_buf_size;	/* how big does the client want it	*/
+  int	receive_size;
+  int	no_delay;
+  int	measure_cpu;	/* does the client want server cpu	*/
+  int	test_length;	/* how long is the test?		*/
+  int	send_buf_size;
+  int	data_port_number;	/* connect to me here	*/
+  float	cpu_rate;		/* could we measure	*/
+  int	so_rcvavoid;	/* could the remote avoid receive copies? */ 
+  int	so_sndavoid;	/* could the remote avoid send copies? */
+  int   non_blocking;   /* run the test in non-blocking mode */
+};
+
+struct sdp_stream_results_struct {
+  double         bytes_received;
+  unsigned int	 recv_calls;	
+  float	         elapsed_time;	/* how long the test ran */
+  float	         cpu_util;	/* -1 if not measured */
+  float	         serv_dem;	/* -1 if not measured */
+  int            cpu_method;    /* how was cpu util measured? */
+  int            num_cpus;      /* how many CPUs had the remote? */
+};
+
+struct	sdp_rr_request_struct {
+  int	recv_buf_size;	/* how big does the client want it	*/
+  int	send_buf_size;
+  int	recv_alignment;
+  int	recv_offset;
+  int	send_alignment;
+  int	send_offset;
+  int	request_size;
+  int	response_size;
+  int	no_delay;
+  int	measure_cpu;	/* does the client want server cpu	*/
+  float	cpu_rate;	/* do we know how fast the cpu is?	*/
+  int	test_length;	/* how long is the test?		*/
+  int	so_rcvavoid;    /* do we want the remote to avoid receive */
+			/* copies? */ 
+  int	so_sndavoid;    /* do we want the remote to avoid send copies? */
+  int   port;		/* the to port to which recv side should bind
+			   to allow netperf to run through firewalls */
+  int   ipfamily;	/* address family of ipaddress */
+  int   non_blocking;   /* run the test in non-blocking mode */
+};
+
+struct	sdp_rr_response_struct {
+  int	recv_buf_size;	/* how big does the client want it	*/
+  int	no_delay;
+  int	measure_cpu;	/* does the client want server cpu	*/
+  int	test_length;	/* how long is the test?		*/
+  int	send_buf_size;
+  int	data_port_number;	/* connect to me here	*/
+  float	cpu_rate;		/* could we measure	*/
+  int	so_rcvavoid;	/* could the remote avoid receive copies? */
+  int	so_sndavoid;	/* could the remote avoid send copies? */
+  int   non_blocking;   /* run the test in non-blocking mode */
+};
+
+struct sdp_rr_results_struct {
+  unsigned int  bytes_received;	/* ignored initially */
+  unsigned int	recv_calls;	/* ignored initially */
+  unsigned int	trans_received;	/* not ignored  */
+  float	        elapsed_time;	/* how long the test ran */
+  float	        cpu_util;	/* -1 if not measured */
+  float	        serv_dem;	/* -1 if not measured */
+  int           cpu_method;    /* how was cpu util measured? */
+  int           num_cpus;      /* how many CPUs had the remote? */
+};
+
+struct	sdp_maerts_request_struct {
+  int	send_buf_size;
+  int	recv_buf_size;	/* how big does the client want it - the */
+			/* receive socket buffer that is */ 
+  int	send_size;      /* how many bytes do we want netserver to send
+			   at one time? */
+  int	send_alignment; /* what is the alignment of the send */
+			/* buffer? */ 
+  int	send_offset;    /* and at what offset from that alignment? */ 
+  int	no_delay;       /* do we disable the nagle algorithm for send */
+			/* coalescing? */ 
+  int	measure_cpu;	/* does the client want server cpu utilization */
+			/* measured? */ 
+  float	cpu_rate;	/* do we know how fast the cpu is already? */ 
+  int	test_length;	/* how long is the test?		*/
+  int	so_rcvavoid;    /* do we want the remote to avoid copies on */
+			/* receives? */ 
+  int	so_sndavoid;    /* do we want the remote to avoid send copies? */
+  int   dirty_count;    /* how many integers in the send buffer */
+			/* should be made dirty before calling recv? */  
+  int   clean_count;    /* how many integers should be read from the */
+			/* recv buffer before calling recv? */ 
+  int   port;           /* the port to which the recv side should bind
+			   to allow netperf to run through those evil
+			   firewall things */
+  int   ipfamily;
+};
+
+struct	sdp_maerts_response_struct {
+  int	recv_buf_size;	/* how big does the client want it	*/
+  int	send_size;
+  int	no_delay;
+  int	measure_cpu;	/* does the client want server cpu	*/
+  int	test_length;	/* how long is the test?		*/
+  int	send_buf_size;
+  int	data_port_number;	/* connect to me here	*/
+  float	cpu_rate;		/* could we measure	*/
+  int	so_rcvavoid;	/* could the remote avoid receive copies? */ 
+  int	so_sndavoid;	/* could the remote avoid send copies? */
+};
+
+struct sdp_maerts_results_struct {
+  double         bytes_sent;
+  unsigned int	 send_calls;	
+  float	         elapsed_time;	/* how long the test ran */
+  float	         cpu_util;	/* -1 if not measured */
+  float	         serv_dem;	/* -1 if not measured */
+  int            cpu_method;    /* how was cpu util measured? */
+  int            num_cpus;      /* how many CPUs had the remote? */
+};
+
+extern void send_sdp_stream();
+extern void send_sdp_rr();
+
+extern void recv_sdp_stream();
+extern void recv_sdp_rr();
+
+extern void loc_cpu_rate();
+extern void rem_cpu_rate();