Annotation of 3BSD/cmd/net/setup.c, revision 1.1.1.1

1.1       root        1: /*
                      2:        setup.c
                      3: 
                      4:        support procedures used in setting up the network
                      5: 
                      6: */
                      7: 
                      8: # include "defs.h"
                      9: 
                     10: char logfile[] =       LOGFILE;
                     11: 
                     12: /* global variables */
                     13: int datasize = SIZE;           /* best if mult of 512 */
                     14: char vaxtovax = 0;
                     15: int linkspeed = LINKS;
                     16: char local;
                     17: char device[];
                     18: int debugflg;
                     19: int maxbread,atime;
                     20: int onlyuid;
                     21: 
                     22: short masterseqno;
                     23: FILE *readtty,*writetty;
                     24: int readfd, writefd, pipesim;
                     25: /*
                     26:        called in netdaemon and debugging software
                     27:        handles parameter lists to setup
                     28:        remote machine and pipes
                     29: */
                     30: setupdaemon(argc,argv)
                     31:   char **argv; {
                     32:        remote = argc > 1 ? lookup(argv[1]) : getremote(local);
                     33:        if(argc == 4){  /* simulate using pipes */
                     34:                readfd = atoi(argv[2]);
                     35:                writefd = atoi(argv[3]);
                     36:                pipesim++;
                     37:                }
                     38:        initdaemon();
                     39:        }
                     40: /*
                     41:        set the correct mode on the link device
                     42: */
                     43: setup(str)
                     44:   char *str; {
                     45:        struct sgttyb stt;
                     46:        static char readbuf[BUFSIZ],writebuf[BUFSIZ];
                     47:        if(str == 0 || str[0] == 0){
                     48:                err("invalid net device\n");
                     49:                exit(1);
                     50:                }
                     51:        masterseqno = 1;
                     52:        readtty = pipesim ? fdopen(readfd,"r") : fopen(str,"r");
                     53:        if(readtty == NULL){
                     54:                perror(str);
                     55:                exit(1);
                     56:                }
                     57:        writetty = pipesim ? fdopen(writefd,"w") : fopen(str,"w");
                     58:        if(writetty == NULL){
                     59:                perror(str);
                     60:                exit(1);
                     61:                }
                     62:        if(!pipesim){
                     63:                /* set exclusive use for line */
                     64:                if(ioctl(fileno(readtty),TIOCEXCL,&stt) != 0 ||
                     65:                        gtty(fileno(readtty),&stt) < 0){
                     66:                        perror(str);
                     67:                        exit(1);
                     68:                        }
                     69:                stt.sg_ispeed = stt.sg_ospeed = linkspeed;  /* user-set baud */
                     70:                stt.sg_erase = stt.sg_kill = 0;         /* erase and kill off */
                     71:                stt.sg_flags = ANYP;    /* even and odd parity, off everything else */
                     72:                if(stty(fileno(readtty),&stt) < 0){
                     73:                        perror(str);
                     74:                        exit(1);
                     75:                        }
                     76:                }
                     77:        setbuf(readtty,readbuf);
                     78:        setbuf(writetty,writebuf);
                     79:        }
                     80: /*
                     81:        initialize various data structures and print banner
                     82: */
                     83: initdaemon(){
                     84:        long timev;
                     85:        int timei;
                     86:        FILE *cfile;
                     87:        cfile = fopen(INITFILE,"r");
                     88:        rdnetfile(cfile);
                     89:        fclose(cfile);
                     90:        err("remote %c local %c link %s speed %d vtov %d length %d\n",
                     91:        remote,local,device,linkspeed,vaxtovax,datasize);
                     92:        err("debug %d time %d count %d onlyuid %d\n",debugflg,atime,
                     93:                maxbread,onlyuid);
                     94:        setup(device);
                     95:        timev = gettime();
                     96:        timei = timev >> 16;
                     97:        srand(timei);
                     98: # ifdef IMAGE
                     99:        if(machtype[local - 'a'] != M_OTHER)
                    100: # endif
                    101: # ifdef EECS40
                    102:        if(machtype[local - 'a'] != M_OTHER)
                    103: # endif
                    104: # ifdef OPTVAX
                    105:        if(machtype[local - 'a'] != M_OTHER)
                    106: # endif
                    107: # ifdef CSVAX
                    108:        if(machtype[local - 'a'] != M_VAX)
                    109: # endif
                    110: # ifdef CORY
                    111:        if(machtype[local - 'a'] != M_CORY)
                    112: # endif
                    113: # ifdef INGVAX
                    114:        if(machtype[local - 'a'] != M_INGRES)
                    115: # endif
                    116: # ifdef ING70
                    117:        if(machtype[local - 'a'] != M_INGRES)
                    118: # endif
                    119: # ifdef CC
                    120:        if(machtype[local -'a'] != M_CC && machtype[local - 'a'] != M_SRC)
                    121: # endif
                    122:                err("Machine type disagrees with local machine\n");
                    123:        }
                    124: /*VARARGS0*/
                    125: error(s,a,b,c,d,e,f,g,h)
                    126: char *s; {
                    127:        char buf[10];
                    128:        if(remote != 0) sprintf(buf,"%s",longname(remote));
                    129:        else buf[0] = 0;
                    130:        fflush(stdout);
                    131:        if(debugflg){
                    132:                fprintf(stderr,s,a,b,c,d,e,f,g,h);
                    133:                putc('\n',stderr);
                    134:                }
                    135:        addtolog(remote,"Err %s: ",buf);
                    136:        addtolog(remote,s,a,b,c,d,e,f,g,h);
                    137:        addtolog(remote,"\n");
                    138:        }
                    139: /* this is really not right - we should use the rcslog format */
                    140: /* also, the user must be able to write on the
                    141:    public logfile to get error messages such as
                    142:    directory not found after he has
                    143:    setuid'd from root
                    144: */
                    145: /*VARARGS0*/
                    146: addtolog(mach,s,a,b,c,d,e,f,g,h,i,j,k,l,m,n)
                    147: char *s;
                    148: {
                    149:        static FILE *log = NULL;
                    150:        struct stat statbuf;
                    151:        logfile[strlen(logfile)-1] = mach;
                    152:        if(log == NULL){
                    153:                if(stat(logfile,&statbuf) < 0)return;
                    154:                log = fopen(logfile,"a");
                    155:                }
                    156:        if(log == NULL)return;
                    157:        fseek(log,0L,2);
                    158:        fprintf(log,s,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
                    159:        fflush(log);
                    160:        debug(s,a,b,c,d,e,f,g,h,i,h,k,l,m,n);
                    161:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.