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: };

Defined variables

packptr defined in line 101; used 1 times
remtable defined in line 138; used 1 times
  • in line 9
resfile defined in line 137; used 10 times
senddir defined in line 137; used 20 times

Defined struct's

bstruct defined in line 122; used 2 times
dumpstruc defined in line 111; used 6 times
header defined in line 174; used 28 times
messageid defined in line 167; used 2 times
  • in line 204(2)
packet defined in line 93; used 36 times

Defined macros

ACK defined in line 63; used 6 times
ACKLENGTH defined in line 102; used 6 times
ATIME defined in line 14; used 2 times
BIGSAMPL defined in line 21; never used
BLOCKSIZE defined in line 16; never used
FALSE defined in line 59; used 1 times
FNS defined in line 50; used 25 times
F_NONOTIFY defined in line 79; used 2 times
F_QUIET defined in line 78; used 2 times
INCR defined in line 56; used 9 times
INITFILE defined in line 18; used 1 times
LINKS defined in line 22; used 2 times
MAXBREAD defined in line 13; used 1 times
MAXFILE defined in line 33; used 2 times
MAXFILELARGE defined in line 34; used 2 times
MAXHOPS defined in line 41; used 1 times
MAXNBUF defined in line 43; used 14 times
MINSIZE defined in line 57; used 1 times
M_CC defined in line 67; used 6 times
M_INGRES defined in line 68; used 4 times
M_OTHER defined in line 69; never used
NS defined in line 52; used 8 times
NSEND defined in line 19; never used
PURGE defined in line 64; used 3 times
REQUEST defined in line 62; used 4 times
SAMPL defined in line 20; never used
SENDLEN defined in line 105; used 5 times
SIZE defined in line 17; used 1 times
SUPERUSER defined in line 23; used 3 times
TRUE defined in line 58; used 12 times
VMAJOR defined in line 36; used 1 times
VMINOR defined in line 37; used 1 times
WRITEFAIL defined in line 55; used 4 times
min defined in line 8; used 4 times

Usage of this include

Last modified: 1980-07-16
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1454
Valid CSS Valid XHTML 1.0 Strict