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