|
|
1.1 ! root 1: /* @(#)defs.h 4.1 (Berkeley) 9/12/82 */ ! 2: ! 3: /* sccs id variable */ ! 4: static char *defs_h_sid = "@(#)defs.h 1.5"; ! 5: /* ! 6: get all the machine dependencies, standard I/O, and the ! 7: configuration definitions (LOCAL machine, etc.) ! 8: */ ! 9: ! 10: # include <stdio.h> ! 11: ! 12: # define min(a,b) (a > b ? b : a) ! 13: # define getremote(S) (remtable[(S)-'a']) ! 14: ! 15: /* adjustable parameters, may differ per machine */ ! 16: ! 17: # define MAXBREAD 3 ! 18: # define ATIME 20 ! 19: # define DBV 0 ! 20: # define BLOCKSIZE 500 ! 21: # define SIZE 100 ! 22: # define INITFILE "/usr/net/initfile" ! 23: # define NSEND 20 ! 24: # define SAMPL 3600 /* 1 hour = 3600 */ ! 25: # define BIGSAMPL 64800L /* 18 hours = 64800L */ ! 26: # define LINKS 9 ! 27: # define SUPERUSER 0 ! 28: /* the size of routing tables, etc. */ ! 29: # define MAXINX 26 ! 30: ! 31: /* adjustable parameters, must be same on all machines */ ! 32: ! 33: /* MAXFILELARGE is the file size limit. If changed on one machine ! 34: but not the others, files bigger than the common minimum will ! 35: be flushed with no guarantee of err msgs. Thus if one link ! 36: is to be of a different limit than the others, make sure the users ! 37: know this. ! 38: MAXDAYFILE is the largest file that will be transmitted across the ! 39: network during the day on CC machines. ! 40: */ ! 41: # define MAXFILELARGE 500000L ! 42: # define MAXDAYFILE 200000L ! 43: /* the version of the protocol the network speaks */ ! 44: # define VMAJOR 1 ! 45: # define VMINOR 0 ! 46: /* the time constant added to all time stamps sent around the net */ ! 47: # define TIMEBASE 282098011L ! 48: /* the number of mail forwarding hops allowed before looping is detected */ ! 49: # define MAXHOPS 30 ! 50: /* the buffer size used in prot.c */ ! 51: # define MAXNBUF 1024 ! 52: ! 53: /* non-adjustable constants */ ! 54: ! 55: /* PARMLIST = max size of variable length parm list used in protocol */ ! 56: # define PARMLIST 2000 ! 57: /* FNS = max length of file name string */ ! 58: # define FNS 80 ! 59: /* NS = length of UNIX user name*/ ! 60: # define NS 10 ! 61: /* returned by prot.c */ ! 62: # define BROKENREAD -2 ! 63: # define WRITEFAIL -3 ! 64: # define INCR 040 ! 65: # define MINSIZE 50 ! 66: # define TRUE 1 ! 67: # define FALSE 0 ! 68: ! 69: /* flags for packet type (pcode) */ ! 70: # define REQUEST 02 ! 71: # define ACK 04 ! 72: # define PURGE 020 ! 73: ! 74: /* flags for mach type */ ! 75: # define M_CC 2 ! 76: # define M_INGRES 4 ! 77: # define M_OTHER 6 ! 78: ! 79: /* codes for cflag, powers of two, max (8 bits - 'a'), others may be added */ ! 80: ! 81: /* F_QUIET means send back only error messages and output of programs, ! 82: don't send back confimation with no data */ ! 83: /* F_NONOTIFY means don't send back anything, ever, ! 84: even if there are errors (used for responses, etc.) */ ! 85: ! 86: # define F_QUIET 02 ! 87: # define F_NONOTIFY 04 ! 88: ! 89: ! 90: /* ! 91: at this point bring in the locally-dependent definitions. ! 92: this way the above parms may be altered. ! 93: */ ! 94: /* strings for the netsend and netrecieve logins */ ! 95: # define RESP "hello hello this is a network" ! 96: # define RESPSIZE 29 ! 97: # define QUERY "This login for network use only" ! 98: # define QSIZE 31 ! 99: # define WHOAREYOU "who are you?" ! 100: # define WHOSIZE 12 ! 101: ! 102: # include "mach.h" ! 103: # include "Paths.h" ! 104: /* bring in the exit codes */ ! 105: # include <sysexits.h> ! 106: ! 107: /* structure declarations */ ! 108: struct packet { ! 109: short seqno; ! 110: char pcode; ! 111: short len; ! 112: char chksum; ! 113: char data[1]; ! 114: }; ! 115: ! 116: struct packet *packptr; /* just used to get the sizeof to work */ ! 117: # define ACKLENGTH (sizeof *packptr - 1) ! 118: /* these are the lengths to be read and writ if using high-speed block dev. */ ! 119: /* must be bigger than ACKLENGTH */ ! 120: # define SENDLEN 256 ! 121: ! 122: /* the chksum is only on a per-perpacket level, ! 123: which is not enough. ! 124: There should be a checksum on the entire file as well. ! 125: */ ! 126: struct dumpstruc { ! 127: long longtime, elaptot; /* in secs */ ! 128: long nbytesent,nbytercv, bytetot; /* in bytes */ ! 129: long lastndays; /* in days */ ! 130: long braw, brawtot; /* raw bytes*/ ! 131: int nretrans, nabnormal, nloop; ! 132: int ncksum,npacksent,npackrcv; ! 133: int nnetcp,nnetlpr,nsmail,nnetmail,nresp,nnet; ! 134: int npass, nsend, nsendfail; ! 135: }; ! 136: ! 137: struct bstruct { ! 138: char *bname; ! 139: char bmach; ! 140: }; ! 141: /* functions */ ! 142: ! 143: char *calloc(), *crypt(), *ctime(), *getenv(), *longname(); ! 144: char *comptime(), *getpass(), *handlesp(); ! 145: FILE *fopen(), *fdopen(), *popen(), *mailopen(); ! 146: struct passwd *getpwnam(), *getpwuid(), *PwdCurrent(), *getpwent(); ! 147: struct packet *getpacket(); ! 148: long atol(); ! 149: ! 150: /* constant variables */ ! 151: extern char *sys_errlist[]; ! 152: char netcmd[],senddir[], resfile[], Bsh[]; ! 153: char machtype[], remtable[]; ! 154: char local; ! 155: ! 156: /* variables which are modified */ ! 157: extern errno; ! 158: int debugflg; ! 159: char remote; /* must be global, remote is not initialized*/ ! 160: ! 161: /* various structure types */ ! 162: ! 163: /* used to pass around info about user */ ! 164: struct userinfo { ! 165: char login[NS]; ! 166: char mpasswd[20]; ! 167: int muid; /* combines uid and gid for FUID */ ! 168: int mgid; /* unused for FUID */ ! 169: char jobno[10]; /* CC crn, length = 0 if null and not */ ! 170: /* CC machine (else MAGICCRN ) */ ! 171: char dir[FNS]; /* login directory */ ! 172: char loginshell[FNS];/* login shell */ ! 173: char localname[NS]; ! 174: char defcmd[FNS]; ! 175: char force; /* if true, always prompt for login and pass */ ! 176: char nonotify; /* if true, don't send anything back */ ! 177: char nowrite; /* if true, mail rather than write to user */ ! 178: char quiet; /* if true, only send a response back if rc !=0 ! 179: or if there is stdout or stderr */ ! 180: } ; ! 181: ! 182: /* unique message - id sent with requests */ ! 183: struct messageid { ! 184: char msg_mch; /* machine it is on */ ! 185: int msg_pid; /* process id */ ! 186: long msg_ltime; /* current time */ ! 187: }; ! 188: ! 189: /* header which describes information transferred across the link */ ! 190: struct header { ! 191: char hd_mchto; /* 1-letter code for dest. machine */ ! 192: char hd_mchfrom; /* 1-letter code for source machine */ ! 193: char hd_snto[NS]; /* login name on mchto mach */ ! 194: char hd_snfrom[NS]; /* login name on mchfrom mach */ ! 195: char hd_spasswd[20]; /* password for snto */ ! 196: char hd_code; /* request code in protocol */ ! 197: char hd_fnonotify; /* if true, don't send anything back */ ! 198: char hd_fquiet; /* if true, only send back if error */ ! 199: char hd_vmajor; /* major version number */ ! 200: char hd_vminor; /* minor version number */ ! 201: char hd_sttyname[20]; /* tty user is on,e.g. /dev/tty0 */ ! 202: char hd_scmdact[BUFSIZ]; /* the actual cmd the net will exec */ ! 203: char hd_scmdvirt[BUFSIZ]; /* the cmd the user thinks he is exec */ ! 204: long hd_lttytime; /* the time for tty login in utmp */ ! 205: long hd_ltimesent; /* the time the request was sent */ ! 206: char hd_srespfile[FNS]; /* response file name, if sepecified */ ! 207: char hd_sinfile[FNS]; /* remote input file, if sepecified */ ! 208: char hd_soutfile[FNS]; /* remote output file, if sepecified */ ! 209: /* sent but not computed (always MAGICCRN or 0 length) across the net */ ! 210: char hd_ijobno[10]; /* CC job number, if applicable */ ! 211: /* computed, not transferred across the net */ ! 212: char hd_addrto[FNS]; /* address of dest. acct */ ! 213: char hd_addrfrom[FNS]; /* address of source acct */ ! 214: /* not now being sent over, will be someday, don't use now */ ! 215: char hd_sencpasswd[20]; /* encrypted passwd with nbs 2way enc */ ! 216: int hd_ifilemode; /* file mode for netcp */ ! 217: char hd_sfndefault[FNS]; /* default filename ext, for netcp */ ! 218: int hd_uidfrom; /* userid on the from machine */ ! 219: int hd_gidfrom; /* groupid on the from machine */ ! 220: struct messageid hd_mesgid; /* message id unique to this request */ ! 221: char hd_fcompressed; /* if true, data is compressed */ ! 222: char hd_facctpair; /* if true, is an accnt pair w/o pwds */ ! 223: char hd_addrreplyto[FNS]; /* reply to this address */ ! 224: }; ! 225: ! 226: /* ! 227: this structure defines the various parameters the daemon and testing ! 228: programs use -- most of the info comes from netrc.c ! 229: NOTE-- this structure is initialized in netrc.c ! 230: don't add members without changing that structure ! 231: */ ! 232: struct daemonparms { ! 233: int dp_inspeed; /* for stty, 7=300, 9=1200, 13=9600 baud */ ! 234: int dp_outspeed; /* for stty, 7=300, 9=1200, 13=9600 baud */ ! 235: int dp_maxbread; /* number of read time outs allowed */ ! 236: int dp_atime; /* time to set alarm for timeout */ ! 237: int dp_oatime; /* default time alarm for timeout */ ! 238: char dp_device[20]; /* name of the network file, e.g. /dev/net-A*/ ! 239: int dp_datasize; /* length of data part of packet */ ! 240: int dp_trynetl; /* try to use netl, -l disables */ ! 241: int dp_onlyuid; /* if non-zero, only send this uid's things */ ! 242: int dp_linefd; /* daemon should read and write from this */ ! 243: char dp_usehispeed; /* if true, use high-speed link */ ! 244: char dp_hispeedlink[20];/* device name of high speed link */ ! 245: short dp_sndorcv; /* if <0, only send, if > 0, only recieve */ ! 246: int dp_linedis; /* line disc we use, normal is 0 */ ! 247: int dp_pipesim; /* simulate with pipes */ ! 248: FILE *dp_rdfile; /* if pipesim then should read from this */ ! 249: int dp_pwritefd; /* if pipesim then should write from this */ ! 250: int dp_use8bit; /* use 8 bit protocol */ ! 251: short dp_timeout; /* timeout deamon (dialup) if > 0 */ ! 252: }; ! 253: ! 254: /* macro implementation of harg due to bugs in Onyx C compiler */ ! 255: # define harg(str) {\ ! 256: if (argv[0][2]) \ ! 257: strcpy(str, argv[0]+2); \ ! 258: else \ ! 259: { strcpy(str, argv[1]); argc--; argv++; } \ ! 260: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.