aboutsummaryrefslogtreecommitdiff
path: root/netlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'netlib.h')
-rw-r--r--netlib.h621
1 files changed, 0 insertions, 621 deletions
diff --git a/netlib.h b/netlib.h
deleted file mode 100644
index 5b6900e..0000000
--- a/netlib.h
+++ /dev/null
@@ -1,621 +0,0 @@
-/*
- Copyright (C) 1993-2005 Hewlett-Packard Company
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if defined(HAVE_SYS_SOCKET_H)
-# include <sys/socket.h>
-#endif
-#if defined(HAVE_NETDB_H)
-# include <netdb.h>
-#endif
-#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO)
-# include "missing/getaddrinfo.h"
-#endif
-
-#define PAD_TIME 4
-/* library routine specifc defines */
-#define MAXSPECDATA 62 /* how many ints worth of data */
- /* can tests send... */
-#define MAXTIMES 4 /* how many times may we loop */
- /* to calibrate */
-#define MAXCPUS 256 /* how many CPU's can we track */
-#define MAXMESSAGESIZE 65536
-#define MAXALIGNMENT 16384
-#define MAXOFFSET 4096
-#define DATABUFFERLEN MAXMESSAGESIZE+MAXALIGNMENT+MAXOFFSET
-
-#define DEBUG_ON 1
-#define DEBUG_OFF 2
-#define DEBUG_OK 3
-#define NODE_IDENTIFY 4
-#define CPU_CALIBRATE 5
-
-#define DO_TCP_STREAM 10
-#define TCP_STREAM_RESPONSE 11
-#define TCP_STREAM_RESULTS 12
-
-#define DO_TCP_RR 13
-#define TCP_RR_RESPONSE 14
-#define TCP_RR_RESULTS 15
-
-#define DO_UDP_STREAM 16
-#define UDP_STREAM_RESPONSE 17
-#define UDP_STREAM_RESULTS 18
-
-#define DO_UDP_RR 19
-#define UDP_RR_RESPONSE 20
-#define UDP_RR_RESULTS 21
-
-#define DO_DLPI_CO_STREAM 22
-#define DLPI_CO_STREAM_RESPONSE 23
-#define DLPI_CO_STREAM_RESULTS 24
-
-#define DO_DLPI_CO_RR 25
-#define DLPI_CO_RR_RESPONSE 26
-#define DLPI_CO_RR_RESULTS 27
-
-#define DO_DLPI_CL_STREAM 28
-#define DLPI_CL_STREAM_RESPONSE 29
-#define DLPI_CL_STREAM_RESULTS 30
-
-#define DO_DLPI_CL_RR 31
-#define DLPI_CL_RR_RESPONSE 32
-#define DLPI_CL_RR_RESULTS 33
-
-#define DO_TCP_CRR 34
-#define TCP_CRR_RESPONSE 35
-#define TCP_CRR_RESULTS 36
-
-#define DO_STREAM_STREAM 37
-#define STREAM_STREAM_RESPONSE 38
-#define STREAM_STREAM_RESULTS 39
-
-#define DO_STREAM_RR 40
-#define STREAM_RR_RESPONSE 41
-#define STREAM_RR_RESULTS 42
-
-#define DO_DG_STREAM 43
-#define DG_STREAM_RESPONSE 44
-#define DG_STREAM_RESULTS 45
-
-#define DO_DG_RR 46
-#define DG_RR_RESPONSE 47
-#define DG_RR_RESULTS 48
-
-#define DO_FORE_STREAM 49
-#define FORE_STREAM_RESPONSE 50
-#define FORE_STREAM_RESULTS 51
-
-#define DO_FORE_RR 52
-#define FORE_RR_RESPONSE 53
-#define FORE_RR_RESULTS 54
-
-#define DO_HIPPI_STREAM 55
-#define HIPPI_STREAM_RESPONSE 56
-#define HIPPI_STREAM_RESULTS 57
-
-#define DO_HIPPI_RR 52
-#define HIPPI_RR_RESPONSE 53
-#define HIPPI_RR_RESULTS 54
-
-#define DO_XTI_TCP_STREAM 55
-#define XTI_TCP_STREAM_RESPONSE 56
-#define XTI_TCP_STREAM_RESULTS 57
-
-#define DO_XTI_TCP_RR 58
-#define XTI_TCP_RR_RESPONSE 59
-#define XTI_TCP_RR_RESULTS 60
-
-#define DO_XTI_UDP_STREAM 61
-#define XTI_UDP_STREAM_RESPONSE 62
-#define XTI_UDP_STREAM_RESULTS 63
-
-#define DO_XTI_UDP_RR 64
-#define XTI_UDP_RR_RESPONSE 65
-#define XTI_UDP_RR_RESULTS 66
-
-#define DO_XTI_TCP_CRR 67
-#define XTI_TCP_CRR_RESPONSE 68
-#define XTI_TCP_CRR_RESULTS 69
-
-#define DO_TCP_TRR 70
-#define TCP_TRR_RESPONSE 71
-#define TCP_TRR_RESULTS 72
-
-#define DO_TCP_NBRR 73
-#define TCP_NBRR_RESPONSE 74
-#define TCP_NBRR_RESULTS 75
-
-#define DO_TCPIPV6_STREAM 76
-#define TCPIPV6_STREAM_RESPONSE 77
-#define TCPIPV6_STREAM_RESULTS 78
-
-#define DO_TCPIPV6_RR 79
-#define TCPIPV6_RR_RESPONSE 80
-#define TCPIPV6_RR_RESULTS 81
-
-#define DO_UDPIPV6_STREAM 82
-#define UDPIPV6_STREAM_RESPONSE 83
-#define UDPIPV6_STREAM_RESULTS 84
-
-#define DO_UDPIPV6_RR 85
-#define UDPIPV6_RR_RESPONSE 86
-#define UDPIPV6_RR_RESULTS 87
-
-#define DO_TCPIPV6_CRR 88
-#define TCPIPV6_CRR_RESPONSE 89
-#define TCPIPV6_CRR_RESULTS 90
-
-#define DO_TCPIPV6_TRR 91
-#define TCPIPV6_TRR_RESPONSE 92
-#define TCPIPV6_TRR_RESULTS 93
-
-#define DO_TCP_MAERTS 94
-#define TCP_MAERTS_RESPONSE 95
-#define TCP_MAERTS_RESULTS 96
-
-#define DO_LWPSTR_STREAM 100
-#define LWPSTR_STREAM_RESPONSE 110
-#define LWPSTR_STREAM_RESULTS 120
-
-#define DO_LWPSTR_RR 130
-#define LWPSTR_RR_RESPONSE 140
-#define LWPSTR_RR_RESULTS 150
-
-#define DO_LWPDG_STREAM 160
-#define LWPDG_STREAM_RESPONSE 170
-#define LWPDG_STREAM_RESULTS 180
-
-#define DO_LWPDG_RR 190
-#define LWPDG_RR_RESPONSE 200
-#define LWPDG_RR_RESULTS 210
-
-#define DO_TCP_CC 300
-#define TCP_CC_RESPONSE 301
-#define TCP_CC_RESULTS 302
-
-/* The DNS_RR test has been removed from netperf but we leave these
- here for historical purposes. Those wanting to do DNS_RR tests
- should use netperf4 instead. */
-#define DO_DNS_RR 400
-#define DNS_RR_RESPONSE 401
-#define DNS_RR_RESULTS 402
-
-#define DO_SCTP_STREAM 500
-#define SCTP_STREAM_RESPONSE 501
-#define SCTP_STREAM_RESULT 502
-
-#define DO_SCTP_STREAM_MANY 510
-#define SCTP_STREAM_MANY_RESPONSE 511
-#define SCTP_STREAM_MANY_RESULT 512
-
-#define DO_SCTP_RR 520
-#define SCTP_RR_RESPONSE 521
-#define SCTP_RR_RESULT 502
-
-#define DO_SCTP_RR_MANY 530
-#define SCTP_RR_MANY_RESPONSE 531
-#define SCTP_RR_MANY_RESULT 532
-
-#define DO_SDP_STREAM 540
-#define SDP_STREAM_RESPONSE 541
-#define SDP_STREAM_RESULTS 542
-
-#define DO_SDP_RR 543
-#define SDP_RR_RESPONSE 544
-#define SDP_RR_RESULTS 545
-
-#define DO_SDP_MAERTS 546
-#define SDP_MAERTS_RESPONSE 547
-#define SDP_MAERTS_RESULTS 548
-
-#define DO_SDP_CRR 549
-#define SDP_CRR_RESPONSE 550
-#define SDP_CRR_RESULTS 551
-
-#define DO_SDP_CC 552
-#define SDP_CC_RESPONSE 553
-#define SDP_CC_RESULTS 554
-
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-
-enum sock_buffer{
- SEND_BUFFER,
- RECV_BUFFER
-};
-
- /* some of the fields in these structures are going to be doubles and */
- /* such. so, we probably want to ensure that they will start on */
- /* "double" boundaries. this will break compatability to pre-2.1 */
- /* releases, but then, backwards compatability has never been a */
- /* stated goal of netperf. raj 11/95 */
-
-union netperf_request_struct {
- struct {
- int request_type;
- int dummy;
- int test_specific_data[MAXSPECDATA];
- } content;
- double dummy;
-};
-
-union netperf_response_struct {
- struct {
- int response_type;
- int serv_errno;
- int test_specific_data[MAXSPECDATA];
- } content;
- double dummy;
-};
-
-struct ring_elt {
- struct ring_elt *next; /* next element in the ring */
- char *buffer_base; /* in case we have to free it at somepoint */
- char *buffer_ptr; /* the aligned and offset pointer */
-};
-
-/* +*+ SAF Sorry about the hacks with errno; NT made me do it :(
-
- WinNT does define an errno.
- It is mostly a legacy from the XENIX days.
-
- Depending upon the version of the C run time that is linked in, it is
- either a simple variable (like UNIX code expects), but more likely it
- is the address of a procedure to return the error number. So any
- code that sets errno is likely to be overwriting the address of this
- procedure. Worse, only a tiny fraction of NT's errors get set
- through errno.
-
- So I have changed the netperf code to use a define Set_errno when
- that is it's intent. On non-windows platforms this is just an
- assignment to errno. But on NT this calls SetLastError.
-
- I also define errno (now only used on right side of assignments)
- on NT to be GetLastError.
-
- Similarly, perror is defined on NT, but it only accesses the same
- XENIX errors that errno covers. So on NT this is redefined to be
- Perror and it expands all GetLastError texts. */
-
-
-#ifdef WIN32
-/* INVALID_SOCKET == INVALID_HANDLE_VALUE == (unsigned int)(~0) */
-/* SOCKET_ERROR == -1 */
-#define ENOTSOCK WSAENOTSOCK
-#define EINTR WSAEINTR
-#define ENOBUFS WSAENOBUFS
-#define EWOULDBLOCK WSAEWOULDBLOCK
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-/* I don't use a C++ style of comment because it upsets some C
- compilers, possibly even when it is inside an ifdef WIN32... */
-/* from public\sdk\inc\crt\errno.h */
-#define ENOSPC 28
-
-#ifdef errno
-/* delete the one from stdlib.h */
-/*#define errno (*_errno()) */
-#undef errno
-#endif
-#define errno GetLastError()
-#define Set_errno(num) SetLastError((num))
-
-#define perror(text) PrintWin32Error(stderr, (text))
-#define Print_errno(stream, text) PrintWin32Error((stream), (text))
-
-extern void PrintWin32Error(FILE *stream, LPSTR text);
-
-#if !defined(NT_PERF) && !defined(USE_LOOPER)
-#define NT_PERF
-#endif
-#else
-/* Really shouldn't use manifest constants! */
-/*+*+SAF There are other examples of "== -1" and "<0" that probably */
-/*+*+SAF should be cleaned up as well. */
-#define INVALID_SOCKET -1
-#define SOCKET_ERROR -1
-
-#define SOCKET int
-#define Set_errno(num) errno = (num)
-
-#define Print_errno(stream, text) fprintf((stream), "%s errno %d\n", (text), errno)
-#endif
-
-/* Robin & Rick's kludge to try to have a timer signal EINTR by closing */
-/* the socket from another thread can also return several other errors. */
-/* Let's define a macro to hide all of this. */
-
-#ifndef WIN32
-#define SOCKET_EINTR(return_value) (errno == EINTR)
-#define SOCKET_EADDRINUSE(return_value) (errno == EADDRINUSE)
-#define SOCKET_EADDRNOTAVAIL(return_value) (errno == EADDRNOTAVAIL)
-
-#else
-
-/* not quite sure I like the extra cases for WIN32 but that is what my
- WIN32 expert sugested. I'm not sure what WSA's to put for
- EADDRINUSE */
-
-#define SOCKET_EINTR(return_value) \
- (((return_value) == SOCKET_ERROR) && \
- ((errno == EINTR) || \
- (errno == WSAECONNABORTED) || \
- (errno == WSAECONNRESET) ))
-#define SOCKET_EADDRINUSE(return_value) \
- (((return_value) == SOCKET_ERROR) && \
- ((errno == WSAEADDRINUSE) ))
-#define SOCKET_EADDRNOTAVAIL(return_value) \
- (((return_value) == SOCKET_ERROR) && \
- ((errno == WSAEADDRNOTAVAIL) ))
-#endif
-
-#ifdef HAVE_SENDFILE
-
-struct sendfile_ring_elt {
- struct sendfile_ring_elt *next; /* next element in the ring */
- int fildes; /* the file descriptor of the source
- file */
- off_t offset; /* the offset from the beginning of
- the file for this send */
- size_t length; /* the number of bytes to send -
- this is redundant with the
- send_size variable but I decided
- to include it anyway */
- struct iovec *hdtrl; /* a pointer to a header/trailer
- that we do not initially use and
- so should be set to NULL when the
- ring is setup. */
- int flags; /* the flags to pass to sendfile() -
- presently unused and should be
- set to zero when the ring is
- setup. */
-};
-
-#endif /* HAVE_SENDFILE */
-
- /* the diferent codes to denote the type of CPU utilization */
- /* methods used */
-#define CPU_UNKNOWN 0
-#define HP_IDLE_COUNTER 1
-#define PSTAT 2
-#define TIMES 3
-#define LOOPER 4
-#define GETRUSAGE 5
-#define NT_METHOD 6
-#define KSTAT 7
-#define PROC_STAT 8
-#define SYSCTL 9
-#define PERFSTAT 10
-#define KSTAT_10 11
-#define OSX 12
-
-#define BADCH ('?')
-
-#ifndef NETLIB
-#ifdef WIN32
-#ifndef _GETOPT_
-#define _GETOPT_
-
-int getopt(int argc, char **argv, char *optstring);
-
-extern char *optarg; /* returned arg to go with this option */
-extern int optind; /* index to next argv element to process */
-extern int opterr; /* should error messages be printed? */
-extern int optopt; /* */
-
-#endif /* _GETOPT_ */
-
-extern SOCKET win_kludge_socket, win_kludge_socket2;
-#endif /* WIN32 */
-
-extern int local_proc_affinity, remote_proc_affinity;
-
-/* these are to allow netperf to be run easily through those evil,
- end-to-end breaking things known as firewalls */
-extern char local_data_port[10];
-extern char remote_data_port[10];
-
-extern char *local_data_address;
-extern char *remote_data_address;
-
-extern int local_data_family;
-extern int remote_data_family;
-
-extern union netperf_request_struct netperf_request;
-extern union netperf_response_struct netperf_response;
-
-extern float lib_local_cpu_util;
-extern float lib_elapsed;
-extern float lib_local_maxrate;
-
-extern char libfmt;
-
-extern int cpu_method;
-extern int lib_num_loc_cpus;
-extern int lib_num_rem_cpus;
-extern SOCKET server_sock;
-extern int times_up;
-extern FILE *where;
-extern int loops_per_msec;
-extern float lib_local_per_cpu_util[];
-
-extern void netlib_init();
-extern int netlib_get_page_size();
-extern void install_signal_catchers();
-extern void establish_control(char hostname[],
- char port[],
- int af,
- char local_hostname[],
- char local_port[],
- int local_af);
-extern void shutdown_control();
-extern void init_stat();
-extern void send_request();
-extern void recv_response();
-extern void send_response();
-extern void recv_request();
-extern void dump_request();
-extern void dump_addrinfo(FILE *dumploc, struct addrinfo *info,
- char *host, char *port, int family);
-extern void start_timer(int time);
-extern void stop_timer();
-extern void cpu_start(int measure_cpu);
-extern void cpu_stop(int measure_cpu, float *elapsed);
-extern void calculate_confidence(int confidence_iterations,
- float time,
- double result,
- float loc_cpu,
- float rem_cpu,
- float loc_sd,
- float rem_sd);
-extern void retrieve_confident_values(float *elapsed_time,
- double *thruput,
- float *local_cpu_utilization,
- float *remote_cpu_utilization,
- float *local_service_demand,
- float *remote_service_demand);
-extern void display_confidence();
-extern void set_sock_buffer(SOCKET sd,
- enum sock_buffer which,
- int requested_size,
- int *effective_sizep);
-extern char *format_units();
-
-extern char *inet_ftos(int family);
-extern char *inet_ttos(int type);
-extern char *inet_ptos(int protocol);
-extern double ntohd(double net_double);
-extern double htond(double host_double);
-extern int inet_nton(int af, const void *src, char *dst, int cnt);
-extern void libmain();
-extern double calc_thruput(double units_received);
-extern double calc_thruput_interval(double units_received,double elapsed);
-extern double calc_thruput_omni(double units_received);
-extern double calc_thruput_interval_omni(double units_received,double elapsed);
-extern float calibrate_local_cpu(float local_cpu_rate);
-extern float calibrate_remote_cpu();
-extern void bind_to_specific_processor(int processor_affinity,int use_cpu_map);
-extern int set_nonblock (SOCKET sock);
-
-#ifndef WIN32
-
-/* WIN32 requires that at least one of the file sets to select be
- non-null. Since msec_sleep routine is only called by nettest_dlpi &
- nettest_unix, let's duck this issue. */
-
-extern int msec_sleep( int msecs );
-#endif /* WIN32 */
-extern float calc_cpu_util(float elapsed_time);
-extern float calc_service_demand(double units_sent,
- float elapsed_time,
- float cpu_utilization,
- int num_cpus);
-extern float calc_service_demand_trans(double units_sent,
- float elapsed_time,
- float cpu_utilization,
- int num_cpus);
-#if defined(__hpux)
-extern void catcher(int, siginfo_t *,void *);
-#else
-extern void catcher(int);
-#endif /* __hpux */
-extern struct ring_elt *allocate_buffer_ring();
-extern void access_buffer(char *buffer_ptr,
- int length,
- int dirty_count,
- int clean_count);
-
-#ifdef HAVE_ICSC_EXS
-extern struct ring_elt *allocate_exs_buffer_ring();
-#endif /* HAVE_ICSC_EXS */
-#ifdef HAVE_SENDFILE
-extern struct sendfile_ring_elt *alloc_sendfile_buf_ring();
-#endif /* HAVE_SENDFILE */
-#ifdef WANT_DLPI
-/* it seems that AIX in its finite wisdom has some bogus define in an
- include file which defines "rem_addr" which then screws-up this extern
- unless we change the names to protect the guilty. reported by Eric
- Jones */
-extern int dl_connect(int fd, unsigned char *remote_addr, int remote_addr_len);
-extern int dl_bind(int fd, int sap, int mode, char *dlsap_ptr, int *dlsap_len);
-extern int dl_open(char devfile[], int ppa);
-#endif /* WANT_DLPI */
-extern char format_cpu_method(int method);
-extern unsigned int convert(char *string);
-extern unsigned int convert_timespec(char *string);
-
-#ifdef WANT_INTERVALS
-extern void start_itimer(unsigned int interval_len_msec);
-#endif
- /* these are all for the confidence interval stuff */
-extern double confidence;
-
-#endif
-
-#ifdef WIN32
-#define close(x) closesocket(x)
-#define strcasecmp(a,b) _stricmp(a,b)
-#define getpid() ((int)GetCurrentProcessId())
-#endif
-
-#ifdef WIN32
-#if 0
-/* Should really use safe string functions; but not for now... */
-#include <strsafe.h>
-/* Microsoft has deprecated _snprintf; it isn't guarenteed to null terminate the result buffer. */
-/* They want us to call StringCbPrintf instead; it always null terminates the string. */
-#endif
-
-#define snprintf _snprintf
-#endif
-
-/* Define a macro to align a buffer with an offset from a power of 2
- boundary. */
-
-#ifndef WIN32
-#define ULONG_PTR unsigned long
-#endif
-
-#define ALIGN_BUFFER(BufPtr, Align, Offset) \
- (char *)(( (ULONG_PTR)(BufPtr) + \
- (ULONG_PTR) (Align) -1) & \
- ~((ULONG_PTR) (Align) - 1)) + (ULONG_PTR)(Offset)
-
- /* if your system has bcopy and bzero, include it here, otherwise, we */
- /* will try to use memcpy aand memset. fix from Bruce Barnett @ GE. */
-#if defined(hpux) || defined (__VMS)
-#define HAVE_BCOPY
-#define HAVE_BZERO
-#endif
-
-#ifdef WIN32
-#define HAVE_MIN
-#else
-#define _stdcall
-#define _cdecl
-#endif
-
-#ifndef HAVE_BCOPY
-#define bcopy(s,d,h) memcpy((d),(s),(h))
-#endif /* HAVE_BCOPY */
-
-#ifndef HAVE_BZERO
-#define bzero(p,h) memset((p),0,(h))
-#endif /* HAVE_BZERO */
-
-#ifndef HAVE_MIN
-#define min(a,b) ((a < b) ? a : b)
-#endif /* HAVE_MIN */
-
-#ifdef USE_PERFSTAT
-# include <libperfstat.h>
-#endif