* Copyright (c) 1983, 1988 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
"@(#) Copyright (c) 1983, 1988 Regents of the University of California.\n\
static char sccsid
[] = "@(#)implogd.c 5.7 (Berkeley) %G%";
#include <netimp/if_imp.h>
* Socket address, internet style, with
* unused space taken by timestamp and packet
register int len
, log
, s
;
openlog("implogd", LOG_PID
|LOG_ODELAY
|LOG_PERROR
, LOG_DAEMON
);
log
= open(_PATH_IMPLOG
, O_CREAT
|O_WRONLY
|O_APPEND
, 0644);
syslog(LOG_ERR
, "%s: %m\n", _PATH_IMPLOG
);
from
.sin_time
= time((time_t *)NULL
);
from
.sin_len
= sizeof(time_t);
(void)write(log
, (char *)&from
, sizeof(from
));
if ((s
= socket(AF_IMPLINK
, SOCK_RAW
, 0)) < 0) {
syslog(LOG_ERR
, "socket: %m\n");
(void) open("/", O_RDONLY
, 0);
tt
= open("/dev/tty", O_RDWR
, 0);
for (fromlen
= sizeof(from
);;) {
len
= recvfrom(s
, request
, sizeof(request
), 0,
syslog(LOG_ERR
, "recvfrom: %m\n");
if (len
== 0 || len
> IMPMTU
) /* sanity */
from
.sin_time
= time((time_t *)NULL
);
(void)write(log
, (char *)&from
, sizeof(from
));
(void)write(log
, request
, len
);