|
|
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.