|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.