Annotation of 3BSD/cmd/net/setup.c, revision 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.