Annotation of 42BSD/etc/implog/implogd.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

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