From 769e901f54f034c1de21323602afa38c5c1214b1 Mon Sep 17 00:00:00 2001 From: laforge Date: Tue, 30 Jul 2002 07:04:11 +0000 Subject: - if ipulog_read fails, print errno and ulog_errno - close stdin and call setsid() when we daemonize - make logfile rotate work - add comment about log levels to ulogd.conf --- TODO | 6 +++--- libipulog/include/libipulog/libipulog.h | 4 +++- libipulog/libipulog.c | 13 ++++++------- ulogd.c | 20 +++++++++++++++----- ulogd.conf | 4 ++-- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/TODO b/TODO index 55b3632..c11e2cb 100644 --- a/TODO +++ b/TODO @@ -16,13 +16,13 @@ X syslog compatibility output plugin - autoconf-detection of ipt_ULOG.h - _fini() support for plugin destructors (needed for clean shutdown and SIGHUP configfile reload -- commandline option for "to fork or not to fork" -- various command line options (we don't even have --version) +X commandline option for "to fork or not to fork" +X various command line options (we don't even have --version) - add support for capabilities to run as non-root - big endian fixes - man pages - IPv6 support (core and extensions) -- pcap output plugin (to use ethereal/tcpdump/... for the logs) +X pcap output plugin (to use ethereal/tcpdump/... for the logs) conffile: - rewrite. This stuff is a real mess. diff --git a/libipulog/include/libipulog/libipulog.h b/libipulog/include/libipulog/libipulog.h index 698c33f..78f4220 100644 --- a/libipulog/include/libipulog/libipulog.h +++ b/libipulog/include/libipulog/libipulog.h @@ -1,7 +1,7 @@ #ifndef _LIBIPULOG_H #define _LIBIPULOG_H -/* $Id: libipulog.h,v 1.3 2001/05/21 19:15:16 laforge Exp $ */ +/* $Id: libipulog.h,v 1.4 2001/07/03 14:45:16 laforge Exp $ */ #include #include @@ -35,6 +35,8 @@ ulog_packet_msg_t *ipulog_get_packet(struct ipulog_handle *h, const unsigned char *buf, size_t len); +char *ipulog_strerror(int errcode); + void ipulog_perror(const char *s); #endif /* _LIBULOG_H */ diff --git a/libipulog/libipulog.c b/libipulog/libipulog.c index 10fb833..bee0038 100644 --- a/libipulog/libipulog.c +++ b/libipulog/libipulog.c @@ -1,5 +1,5 @@ /* - * libipulog.c, $Revision: 1.8 $ + * libipulog.c, $Revision: 1.9 $ * * netfilter ULOG userspace library. * @@ -21,7 +21,7 @@ * This library is still under development, so be aware of sudden interface * changes * - * $Id: libipulog.c,v 1.8 2001/07/04 00:22:54 laforge Exp $ + * $Id: libipulog.c,v 1.9 2001/09/01 11:53:41 laforge Exp $ */ #include @@ -59,7 +59,7 @@ enum #define IPULOG_MAXERR IPULOG_ERR_INVNL -static int ipulog_errno = IPULOG_ERR_NONE; +int ipulog_errno = IPULOG_ERR_NONE; struct ipulog_errmap_t { @@ -118,16 +118,15 @@ ipulog_netlink_recvfrom(const struct ipulog_handle *h, return status; } -static char *ipulog_strerror(int errcode) +/* public */ + +char *ipulog_strerror(int errcode) { if (errcode < 0 || errcode > IPULOG_MAXERR) errcode = IPULOG_ERR_IMPL; return ipulog_errmap[errcode].message; } - -/* public */ - /* convert a netlink group (1-32) to a group_mask suitable for create_handle */ u_int32_t ipulog_group2gmask(u_int32_t group) { diff --git a/ulogd.c b/ulogd.c index 19d5d53..55ec461 100644 --- a/ulogd.c +++ b/ulogd.c @@ -1,6 +1,6 @@ -/* ulogd, Version $Revision: 1.24 $ +/* ulogd, Version $Revision: 1.25 $ * - * $Id: ulogd.c,v 1.24 2002/04/16 12:44:41 laforge Exp $ + * $Id: ulogd.c,v 1.25 2002/06/13 12:57:25 laforge Exp $ * * userspace logging daemon for the netfilter ULOG target * of the linux 2.4 netfilter subsystem. @@ -20,7 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ulogd.c,v 1.24 2002/04/16 12:44:41 laforge Exp $ + * $Id: ulogd.c,v 1.25 2002/06/13 12:57:25 laforge Exp $ * * Modifications: * 14 Jun 2001 Martin Josefsson @@ -544,6 +544,13 @@ static void sighup_handler(int signal) { ulog_output_t *p; + if (logfile != stdout) { + fclose(logfile); + logfile = fopen(logf_ce.u.string, "a"); + if (!logfile) + sigterm_handler(signal); + } + ulogd_log(ULOGD_NOTICE, "sighup received, calling plugin handlers\n"); for (p = ulogd_outputs; p; p = p->next) { @@ -639,6 +646,8 @@ int main(int argc, char* argv[]) if (logfile != stdout) fclose(stdout); fclose(stderr); + fclose(stdin); + setsid(); } signal(SIGTERM, &sigterm_handler); @@ -653,8 +662,9 @@ int main(int argc, char* argv[]) if (len <= 0) { /* this is not supposed to happen */ - ulogd_log(ULOGD_ERROR, "ipulog_read == %d!\n", - len); + ulogd_log(ULOGD_ERROR, "ipulog_read == %d! " + "ipulog_errno == %d, errno = %d\n", + len, ipulog_errno, errno); } else { while (upkt = ipulog_get_packet(libulog_h, libulog_buf, len)) { diff --git a/ulogd.conf b/ulogd.conf index a4d1fc1..a3a998a 100644 --- a/ulogd.conf +++ b/ulogd.conf @@ -1,5 +1,5 @@ # Example configuration for ulogd -# $Id: ulogd.conf,v 1.5 2001/05/20 14:44:37 laforge Exp $ +# $Id: ulogd.conf,v 1.6 2001/10/02 16:39:17 laforge Exp $ # ###################################################################### @@ -12,7 +12,7 @@ nlgroup 1 # logfile for status messages logfile /var/log/ulogd.log -# loglevel: notice, warnings, error and fatal +# loglevel: debug(1), info(3), notice(5), error(7) or fatal(8) loglevel 5 ###################################################################### -- cgit v1.2.3