Annotation of researchv10no/ipc/mgrs/tcpmgr/main.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Generic dialer routine.  Usage:
                      3:  *             dialer mount-pt [unit]
                      4:  */
                      5: #include <stdio.h>
                      6: #include <ipc.h>
                      7: #include <sys/filio.h>
                      8: #include <sys/inio.h>
                      9: #include <libc.h>
                     10: 
                     11: /* export */
                     12: char *av0;
                     13: int debug;
                     14: char *mydomain;
                     15: static int maxseg;
                     16: 
                     17: /* cheap foiegn imports */
                     18: extern void dodialout(), dodialin();
                     19: 
                     20: usage(name)
                     21:        char *name;
                     22: {
                     23:        fprintf(stderr, "usage: %s [-m mount-pt] [-n netname]\n", name);
                     24:        exit(1);
                     25: }
                     26: 
                     27: main(ac, av)
                     28:        int ac;
                     29:        char *av[];
                     30: {
                     31:        char *mtpt="tcp";
                     32:        char *cp;
                     33:        char *netname = "";
                     34:        int ai;
                     35: 
                     36:        av0 = av[0];
                     37:        chdir("/cs");
                     38:        for (ai=1; ai<ac; ai++) {
                     39:                if (av[ai][0] == '-')
                     40:                        for (cp=&av[ai][1]; *cp; cp++) {
                     41:                                switch(*cp) {
                     42:                                case 'd':
                     43:                                        debug = 1;
                     44:                                        break;
                     45:                                case 'm':
                     46:                                        if (ai+1>=ac)
                     47:                                                usage(av0);
                     48:                                        mtpt = av[++ai];
                     49:                                        break;
                     50:                                case 'n':
                     51:                                        if (ai+1>=ac)
                     52:                                                usage(av0);
                     53:                                        netname = av[++ai];
                     54:                                        break;
                     55:                                case 'M':
                     56:                                        if (ai+1>=ac)
                     57:                                                usage(av0);
                     58:                                        maxseg = atoi(av[++ai]);
                     59:                                        break;
                     60:                                case 'D':
                     61:                                        if (ai+1>=ac)
                     62:                                                usage(av0);
                     63:                                        mydomain = av[++ai];
                     64:                                        break;
                     65:                                default:
                     66:                                        usage(av0);
                     67:                                }
                     68:                        }
                     69:                else
                     70:                        usage(av[0]);
                     71:        }
                     72:        if (!debug)
                     73:                detach(mtpt);
                     74: 
                     75:        tcpconfig();
                     76: 
                     77:        /* create dialer and listener */
                     78:        switch (fork()) {
                     79:        case -1:
                     80:                perror(av0);
                     81:                exit(1);
                     82:        case 0:
                     83:                for(;;)
                     84:                        dodialout(mtpt);
                     85:                break;
                     86:        default:
                     87:                for(;;)
                     88:                        dodialin(mtpt, netname, "");
                     89:                break;
                     90:        }
                     91: }
                     92: 
                     93: #define IPDEVFORTCP "/dev/iptcp"
                     94: tcpconfig()
                     95: {
                     96:        int fd;
                     97:        extern int tcp_ld;
                     98: 
                     99:        fd = open(IPDEVFORTCP, 2);
                    100:        if(fd < 0)
                    101:                return -1;
                    102:        if(ioctl(fd, FIOPUSHLD, &tcp_ld) < 0) {
                    103:                close(fd);
                    104:                return -1;
                    105:        }
                    106:        if(maxseg>0)
                    107:                ioctl(fd, TCPIOMAXSEG, &maxseg);
                    108:        logevent("tcp active\n");
                    109:        return 0;
                    110: }

unix.superglobalmegacorp.com

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