|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)implogd.c 4.8 (Berkeley) 7/1/83";
3: #endif
4:
5: #include <sgtty.h>
6:
7: #include <sys/time.h>
8: #include <sys/param.h>
9: #include <sys/socket.h>
10: #include <sys/file.h>
11:
12: #include <netinet/in.h>
13: #include <netimp/if_imp.h>
14:
15: #define LOGFILE "/usr/adm/implog"
16:
17: u_char request[1024];
18: int marktime();
19: int options;
20: extern int errno;
21: int log;
22:
23: /*
24: * Socket address, internet style, with
25: * unused space taken by timestamp and packet
26: * size.
27: */
28: struct sockstamp {
29: short sin_family;
30: u_short sin_port;
31: struct in_addr sin_addr;
32: time_t sin_time;
33: int sin_len;
34: };
35:
36: main(argc, argv)
37: char *argv[];
38: {
39: int s;
40: time_t t;
41: struct sockstamp from;
42:
43: argc--, argv++;
44: if (argc > 0 && !strcmp(argv[0], "-d"))
45: options |= SO_DEBUG;
46: #ifndef DEBUG
47: if (fork())
48: exit(0);
49: for (s = 0; s < 10; s++)
50: (void) close(t);
51: (void) open("/", 0);
52: (void) dup2(0, 1);
53: (void) dup2(0, 2);
54: { int tt = open("/dev/tty", 2);
55: if (tt > 0) {
56: ioctl(tt, TIOCNOTTY, 0);
57: close(tt);
58: }
59: }
60: #endif
61: log = open(LOGFILE, O_CREAT|O_WRONLY|O_APPEND, 0644);
62: if (log < 0) {
63: perror("implogd: open");
64: exit(1);
65: }
66: from.sin_time = time(0);
67: from.sin_len = sizeof (time_t);
68: write(log, (char *)&from, sizeof (from));
69: while ((s = socket(AF_IMPLINK, SOCK_RAW, 0, 0)) < 0) {
70: perror("implogd: socket");
71: sleep(5);
72: }
73: for (;;) {
74: int fromlen = sizeof (from), len;
75:
76: len = recvfrom(s, request, sizeof (request), 0,
77: &from, &fromlen);
78: if (len < 0) {
79: perror("implogd: recvfrom");
80: continue;
81: }
82: if (len == 0 || len > IMPMTU) /* sanity */
83: continue;
84: from.sin_len = len;
85: from.sin_time = time(0);
86: write(log, (char *)&from, sizeof (from));
87: write(log, request, len);
88: }
89: /*NOTREACHED*/
90: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.