1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-13 15:18:14 +00:00
Interlisp.maiko/inc/nfswatch.h
Nick Briggs a093d80fa5
Add include guards to all the include files in inc/ which were missing them. (#189)
As a prerequisite for cleaning up some other include issues, all the
include files in inc/ should have an include guard.  All the xxxdefs.h
were created with them, but most older files were not.
2021-01-07 03:06:42 +00:00

420 lines
12 KiB
C

#ifndef NFSWATCH_H
#define NFSWATCH_H 1
/* $Id: nfswatch.h,v 1.2 1999/01/03 02:06:18 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/*
* $Header: /disk/disk3/cvsroot/medley/inc/nfswatch.h,v 1.2 1999/01/03 02:06:18 sybalsky Exp $
*
* nfswatch.h - definitions for nfswatch.
*
* David A. Curry Jeffrey C. Mogul
* Purdue University Digital Equipment Corporation
* Engineering Computer Network Western Research Laboratory
* 1285 Electrical Engineering Building 250 University Avenue
* West Lafayette, IN 47907-1285 Palo Alto, CA 94301
* davy@ecn.purdue.edu mogul@decwrl.dec.com
*
* $Log: nfswatch.h,v $
* Revision 1.2 1999/01/03 02:06:18 sybalsky
* Add ID comments / static to files for CVS use
*
* Revision 1.1.1.1 1998/12/17 05:03:18 sybalsky
* Import of Medley 3.5 emulator
*
* Revision 4.8 1996/02/12 13:22:29 davy
* Updated version number.
*
* Revision 4.7 1995/03/20 01:07:34 davy
* Upped version number.
*
* Revision 4.6 1995/03/20 01:05:20 davy
* Fixed int32 declaration.
*
* Revision 4.5 1993/11/30 21:55:38 davy
* Upgraded version number.
*
* Revision 4.4 1993/10/01 14:56:51 mogul
* Bugfix to compile on SunOS
*
* Revision 4.3 93/10/01 10:45:54 mogul
* Revert to int32, u_int32 names
*
* Revision 4.2 93/09/30 20:33:44 davy
* Increased MAXCLIENTS, MAXEXPORTS, MAXAUTHS.
* Fixed the int32 and u_int32 type names for portability.
*
* Revision 4.1 1993/09/28 21:27:40 mogul
* Portable internal representation for file handle info
* explicit 32-bit data types
* explicit data type for IP addresses
*
* Revision 4.0 1993/03/01 19:59:00 davy
* NFSWATCH Version 4.0.
*
* Revision 3.9 1993/02/24 17:44:45 davy
* Added -auth mode, changes to -proc mode, -map option, -server option.
*
* Revision 3.8 1993/01/16 19:12:54 davy
* Moved cpp controls to left margin.
*
* Revision 3.7 1993/01/16 19:08:59 davy
* Corrected Jeff's address.
*
* Revision 3.6 1993/01/15 19:33:39 davy
* Miscellaneous cleanups.
*
* Revision 3.5 1993/01/15 15:43:36 davy
* Assorted changes for porting to Solaris 2.x/SVR4.
*
* Revision 3.4 1993/01/13 21:24:40 davy
* Portability change.
*
* Revision 3.3 1993/01/13 20:18:17 davy
* Put in OS-specific define scheme, and merged in Tim Hudson's code for
* SGI systems (as yet untested).
*
* Revision 3.2 1992/07/24 18:49:09 mogul
* Changed version number to 3.1
*
* Revision 3.1 1992/07/24 18:47:57 mogul
* Added FDDI support
*
* Revision 3.0 1991/01/23 08:23:13 davy
* NFSWATCH Version 3.0.
*
* Revision 1.4 91/01/17 10:12:29 davy
* New features from Jeff Mogul.
*
* Revision 1.6 91/01/07 15:34:42 mogul
* Support for client hash table
*
* Revision 1.5 91/01/07 14:10:01 mogul
* Added SHOWHELP, SHOW_MAXCODE
*
* Revision 1.4 91/01/04 14:12:11 mogul
* Support for client counters
*
* Revision 1.3 91/01/03 17:38:18 mogul
* Support for per-procedure counters
*
* Revision 1.2 90/08/17 15:47:04 davy
* NFSWATCH Version 2.0.
*
* Revision 1.1 88/11/29 11:20:28 davy
* NFSWATCH Release 1.0
*
*/
/*
* Version number.
*/
#define VERSION "4.3 of 12 February 1996"
/*
* Stuff for representing NFS file handles
*/
#include "nfsfh.h"
/*
* General definitions.
*/
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
/*
* Declarations of several data types that must be 32 bits wide,
* no matter what machine we are running on. "long" is unsafe
* because on DEC Alpha machines that means 64 bits. "int" is
* unsafe because on some machines that means 16 bits.
*
* Use int32 or u_int32 whenever you mean "32 bits" and not
* "some large number of bits".
*
* NEVER use int or int32 or u_int32 (or, for that matter, long)
* when the variable might contain a pointer value.
*/
#if defined(pdp11)
/* other 16-bit machines? */
typedef long int32;
typedef unsigned long u_int32;
#else
/* works almost everywhere */
#if !defined(SUNOS54)
/* SunOS 5.4 declares int32 in <rpc/rpc_sztypes.h> */
typedef int int32;
#endif
#if !defined(U_INT32_DECLARED_IN_AUTH) || !defined(AUTH_UNIX)
/* SunOS declares u_int32 in <rpc/auth.h> */
typedef unsigned int u_int32;
#endif
#endif
/* Define a specific type for representing IP addresses */
typedef u_int32 ipaddrt;
#ifdef SVR4
#define MOUNTTABLE "/etc/mnttab" /* mounted file systems */
#define SHARETAB "/etc/dfs/sharetab" /* shared file systems */
#endif
#define PROMPT "nfswatch>" /* prompt string */
#define LOGFILE "nfswatch.log" /* log file name */
#define MAXEXPORT 1024 /* max exported file systems */
#define CYCLETIME 10 /* screen update cycle time */
#define PACKETSIZE 4096 /* max size of a packet */
#define MAXNFSPROC 18 /* max number of NFS procedures */
#define MAXHOSTADDR 16 /* max. network addrs per host */
#define MAXCLIENTS 1024 /* max. # of client counters */
/* MUST be even number */
#define MAXAUTHS 1024 /* max. # of auth counters */
/* MUST be even number */
#define MAXINTERFACES 16 /* Max. number of interfaces */
#define SNAPSHOTFILE "nfswatch.snap" /* snapshot file name */
#define SHOWINDVFILES 1 /* show individual files */
#define SHOWFILESYSTEM 2 /* show NFS file systems */
#define SHOWNFSPROCS 3 /* show NFS procedure counts */
#define SHOWCLIENTS 4 /* show client host names */
#define SHOWAUTH 5 /* show authorizations */
#define SHOWHELP 6 /* show help text */
#define SHOW_MAXCODE 6 /* number of different displays */
/*
* Network Interface Tap (NIT) definitions.
*/
#ifdef USE_NIT
#define NIT_DEV "/dev/nit" /* network interface tap device */
#define NIT_BUF "nbuf" /* nit stream buffering module */
#define NIT_CHUNKSIZE 8192 /* chunk size for grabbing pkts */
#endif
/*
* Data Link Provider Interface (DLPI) definitions.
*/
#ifdef USE_DLPI
#define DLPI_DEVDIR "/dev/" /* path to device dir */
#define DLPI_BUFMOD "bufmod" /* streams buffering */
#define DLPI_MAXWAIT 15 /* max timeout */
#define DLPI_MAXDLBUF 8192 /* buffer size */
#define DLPI_MAXDLADDR 1024 /* max address size */
#define DLPI_CHUNKSIZE (8192 * sizeof(long)) /* buffer size */
#define DLPI_DEFAULTSAP 0x0800 /* IP protocol */
#endif /* USE_DLPI */
/*
* Packet counter definitions.
*/
#define PKT_NCOUNTERS 16 /* number of packet counters */
#define PKT_NDREAD 0 /* ND read requests */
#define PKT_NDWRITE 1 /* ND write requests */
#define PKT_NFSREAD 2 /* NFS read requests */
#define PKT_NFSWRITE 3 /* NFS write requests */
#define PKT_NFSMOUNT 4 /* NFS mount requests */
#define PKT_YELLOWPAGES 5 /* Yellow Pages requests */
#define PKT_RPCAUTH 6 /* RPC authorization requests */
#define PKT_OTHERRPC 7 /* other RPC requests */
#define PKT_TCP 8 /* TCP packets */
#define PKT_UDP 9 /* UDP packets */
#define PKT_ICMP 10 /* ICMP packets */
#define PKT_ROUTING 11 /* routing control packets */
#define PKT_ARP 12 /* address resolution packets */
#define PKT_RARP 13 /* reverse addr resol packets */
#define PKT_BROADCAST 14 /* ethernet broadcast packets */
#define PKT_OTHER 15 /* none of the above packets */
typedef unsigned long Counter;
/*
* Packet counting structure.
*/
typedef struct {
char *pc_name; /* name of counter */
Counter pc_interval; /* packets this interval */
Counter pc_total; /* packets since start */
short pc_intx, pc_inty; /* screen coords of pc_interval */
short pc_totx, pc_toty; /* screen coords of pc_total */
short pc_pctx, pc_pcty; /* screen coords of percentage */
short pc_namex, pc_namey; /* screen coords of pc_name */
} PacketCounter;
/*
* NFS request counting structure.
*/
typedef struct {
my_devt nc_dev; /* device numbers of file sys */
my_fsid nc_fsid; /* for "learning" file systems */
ipaddrt nc_ipaddr; /* keep track of server address */
char *nc_name; /* name of file system */
Counter nc_total; /* requests since start */
Counter nc_interval; /* requests this interval */
Counter nc_proc[MAXNFSPROC]; /* each nfs proc counters */
short nc_intx, nc_inty; /* screen coords of nc_interval */
short nc_totx, nc_toty; /* screen coords of nc_total */
short nc_pctx, nc_pcty; /* screen coords of percentage */
short nc_namex, nc_namey; /* screen coords of nc_name */
} NFSCounter;
/*
* Specific file request counting structure.
*/
typedef struct {
my_devt fc_dev; /* device number of file sys */
ino_t fc_ino; /* inode number of file */
char *fc_name; /* file name */
Counter fc_total; /* requests since start */
Counter fc_interval; /* requests this interval */
Counter fc_proc[MAXNFSPROC]; /* each nfs proc counters */
short fc_intx, fc_inty; /* screen coords of fc_interval */
short fc_totx, fc_toty; /* screen coords of fc_total */
short fc_pctx, fc_pcty; /* screen coords of percentage */
short fc_namex, fc_namey; /* screen coords of fc_name */
} FileCounter;
/*
* Per-procedure counting structure.
*/
typedef struct {
int pr_type; /* procedure type */
char *pr_name; /* procedure name */
Counter pr_total; /* requests since start */
Counter pr_interval; /* requests this interval */
Counter pr_complete; /* requests with replies */
double pr_response; /* sum of all response times */
double pr_respsqr; /* sum of squares of resp times */
double pr_maxresp; /* maximum response time */
short pr_intx, pr_inty; /* screen coords of pr_interval */
short pr_totx, pr_toty; /* screen coords of pr_total */
short pr_pctx, pr_pcty; /* screen coords of percentage */
short pr_namex, pr_namey; /* screen coords of pr_name */
short pr_compx, pr_compy; /* screen coords of pr_complete */
short pr_respx, pr_respy; /* screen coords of pr_response */
short pr_rsqrx, pr_rsqry; /* screen coords of pr_respsqr */
short pr_rmaxx, pr_rmaxy; /* screen coords of pr_maxresp */
} ProcCounter;
/*
* NFS client counting structure.
*/
typedef struct _cl_ {
ipaddrt cl_ipaddr; /* client IP address */
char *cl_name; /* name of client system */
Counter cl_total; /* requests since start */
Counter cl_interval; /* requests this interval */
short cl_intx, cl_inty; /* screen coords of cl_interval */
short cl_totx, cl_toty; /* screen coords of cl_total */
short cl_pctx, cl_pcty; /* screen coords of percentage */
short cl_namex, cl_namey; /* screen coords of cl_name */
struct _cl_ *cl_next; /* hash chain link */
} ClientCounter;
/*
* NFS authentication counting structure.
*/
typedef struct _ac_ {
long ac_uid; /* authorization type */
char *ac_name; /* name of user id */
Counter ac_total; /* requests since start */
Counter ac_interval; /* requests this interval */
short ac_intx, ac_inty; /* screen coords of ac_interval */
short ac_totx, ac_toty; /* screen coords of ac_total */
short ac_pctx, ac_pcty; /* screen coords of percentage */
short ac_namex, ac_namey; /* screen coords of ac_name */
struct _ac_ *ac_next; /* hash chain link */
} AuthCounter;
/*
* NFS call structure, for remembering relevant timing information.
*/
#define NFSCALLHASHSIZE 255
typedef struct _nc_ {
int used;
ipaddrt client;
u_short clientport;
u_int32 xid;
u_long proc;
u_long time_sec;
u_long time_usec;
} NFSCall;
/*
* Device type definitions (borrowed from the Berkeley Packet Filter)
*/
#ifndef DLT_NULL
#define DLT_NULL 0 /* no link-layer encapsulation */
#define DLT_EN10MB 1 /* Ethernet (10Mb) */
#define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
#define DLT_AX25 3 /* Amateur Radio AX.25 */
#define DLT_PRONET 4 /* Proteon ProNET Token Ring */
#define DLT_CHAOS 5 /* Chaos */
#define DLT_IEEE802 6 /* IEEE 802 Networks */
#define DLT_ARCNET 7 /* ARCNET */
#define DLT_SLIP 8 /* Serial Line IP */
#define DLT_PPP 9 /* Point-to-point Protocol */
#define DLT_FDDI 10 /* FDDI */
#endif
/*
* Definitions for earlier systems which don't have these from 4.3BSD.
*/
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif
#ifndef NFDBITS
typedef long fd_mask;
#define NFDBITS (sizeof(fd_mask) * NBBY)
#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p) (void) bzero((char *)(p), sizeof(*(p)))
#endif /* NFDBITS */
/*
* Maximum control/data buffer size (in long's !!) for getmsg().
*/
#define MAXDLBUF 8192
/*
* Maximum number of seconds we'll wait for any
* particular DLPI acknowledgment from the provider
* after issuing a request.
*/
#define MAXWAIT 15
/*
* Maximum address buffer length.
*/
#define MAXDLADDR 1024
/*
* Handy macro.
*/
#define OFFADDR(s, n) (u_char*)((char*)(s) + (int)(n))
#endif /* NFSWATCH_H */