/*
Copyright (C) 1993-2012 Hewlett-Packard Company
*/
/* libraried performance include file */
/* the define NOPERFEXTERN tels us not to re-define all the */
/* defines and defaults */
#define HOSTNAMESIZE 255
#define PORTBUFSIZE 10
#define DEFAULT_SIZE 32768
#define HOST_NAME "127.0.0.1"
#define TEST_PORT "12865"
/* output controlling variables */
#define DEBUG 0 /* debugging level */
#define VERBOSITY 0 /* verbosity level */
/* the end-test conditions for the tests - either transactions, bytes, */
/* or time. different vars used for clarity - space is cheap ;-) */
#define TEST_TIME 10 /* test ends by time */
#define TEST_BYTES 0 /* test ends on byte count */
#define TEST_TRANS 0 /* test ends on tran count */
/* the alignment conditions for the tests */
#define LOC_RECV_ALIGN 4 /* alignment for local receives */
#define LOC_SEND_ALIGN 4 /* alignment for local sends */
#define REM_RECV_ALIGN 4 /* alignment for remote receive */
#define REM_SEND_ALIGN 4 /* alignment for remote sends */
/* which way are we going and what are we doing in this handbasket?-) */
#define NETPERF_XMIT 0x2
#define NETPERF_RECV 0x4
#define NETPERF_IS_RR(x) (((x & NETPERF_XMIT) && (x & NETPERF_RECV)) || \
(!((x & NETPERF_XMIT) || (x & NETPERF_RECV))))
#define NETPERF_RECV_ONLY(x) ((x & NETPERF_RECV) && !(x & NETPERF_XMIT))
#define NETPERF_XMIT_ONLY(x) ((x & NETPERF_XMIT) && !(x & NETPERF_RECV))
#define NETPERF_CC(x) (!(x & NETPERF_XMIT) && !(x & NETPERF_RECV))
/* misc defines for the hell of it */
#ifndef MAXLONG
#define MAXLONG 4294967295UL
#endif /* MAXLONG */
#ifdef WANT_DCCP
/* include netinet/in.h to see if SOCK_DCCP and IPPROTO_DCCP are there */
#include <netinet/in.h>
#ifndef SOCK_DCCP
#define DCCP_WARNING
#define SOCK_DCCP 6
#endif
#ifndef IPPROTO_DCCP
#define DCCP_WARNING
#define IPPROTO_DCCP 33 /* defined by the IANA */
#endif
#ifndef SOL_DCCP
#define DCCP_WARNING
#define SOL_DCCP 269
#endif
#ifdef DCCP_WARNING
#warning This platform is missing one of sock_dccp ipproto_dccp or sol_dccp
#endif
#endif
#ifndef NETSH
extern char *program; /* program invocation name */
extern char *command_line; /* how we were invoked */
extern char *passphrase;
/* stuff to say where this test is going */
extern char host_name[HOSTNAMESIZE];/* remote host name or ip addr */
extern char local_host_name[HOSTNAMESIZE];
extern char test_port[PORTBUFSIZE]; /* where is the test waiting */
extern char local_test_port[PORTBUFSIZE];
extern int address_family;
extern int local_address_family;
extern int parse_address_family(char family_string[]);
extern int parse_socket_type(char socket_string[]);
extern int parse_protocol(char protocol_string[]);
extern int parse_direction(char direction_string[]);
extern void set_defaults();
extern void scan_cmd_line(int argc, char *argv[]);
extern void dump_globals();
extern void break_args(char *s, char *arg1, char *arg2);
extern void break_args_explicit(char *s, char *arg1, char *arg2);
extern void break_args_explicit_sep(char *s, int sep, char *arg1, char *arg2);
extern void print_netserver_usage();
/* output controlling variables */
extern int
debug, /* debugging level */
print_headers, /* do/don't print test headers */
verbosity, /* verbosity level */
keep_histogram, /* do we keep a histogram of interesting times? */
keep_statistics; /* do we keep/calculate expensive statistics? */
/* the end-test conditions for the tests - either transactions, bytes, */
/* or time. different vars used for clarity - space is cheap ;-) */
extern int
test_time, /* test ends by time */
test_len_ticks,
test_bytes, /* test ends on byte count */
test_trans; /* test ends on tran count */
/* wait time between control/data connection establishment and start
of data traffic */
extern int wait_time_secs;
/* the alignment conditions for the tests */
extern int
local_recv_align, /* alignment for local receives */
local_send_align, /* alignment for local sends */
remote_recv_align, /* alignment for remote receives */
remote_send_align, /* alignment for remote sends */
local_send_offset,
local_recv_offset,
remote_send_offset,
remote_recv_offset,
remote_send_width,
remote_recv_width;
/* hoist these above the #if to deal with either netperf or netserver
configured for it */
extern int interval_usecs;
extern int interval_wate;
extern int interval_burst;
extern int remote_interval_usecs;
extern int remote_interval_burst;
#ifdef DIRTY
extern int rem_dirty_count;
extern int rem_clean_count;
extern int loc_dirty_count;
extern int loc_clean_count;
#endif /* DIRTY */
/* stuff for confidence intervals */
extern int confidence_level;
extern int iteration_min;
extern int iteration_max;
extern int result_confidence_only;
extern double interval;
extern double interval_pct;
extern int cpu_binding_requested;
/* stuff to control the bufferspace "width" */
extern int send_width;
extern int recv_width;
/* control the socket priority */
extern int local_socket_prio;
extern int remote_socket_prio;
extern int local_socket_tos;
extern int remote_socket_tos;
/* address family */
extern int af;
/* different options for other things */
extern int
local_cpu_usage,
remote_cpu_usage;
extern float
local_cpu_rate,
remote_cpu_rate;
extern int
shell_num_cpus;
extern char
test_name[BUFSIZ];
extern char
local_fill_file[BUFSIZ],
remote_fill_file[32];
extern char *
result_brand;
extern int
no_control;
#ifdef WANT_DLPI
extern int
loc_ppa,
rem_ppa;
extern int
dlpi_sap;
#endif /* WANT_DLPI */
#endif
extern int parse_ipqos(const char *cp);
extern const char * iptos2str(int iptos);