summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaforge <laforge>2002-07-30 07:04:11 +0000
committerlaforge <laforge>2002-07-30 07:04:11 +0000
commit769e901f54f034c1de21323602afa38c5c1214b1 (patch)
tree1e2f3a714a2d990e43aac5bcdf0357b04f2f5e35
parentfe947459813bfa0b0c19ea64aa3db00dfaf3494d (diff)
- 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
-rw-r--r--TODO6
-rw-r--r--libipulog/include/libipulog/libipulog.h4
-rw-r--r--libipulog/libipulog.c13
-rw-r--r--ulogd.c20
-rw-r--r--ulogd.conf4
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 <errno.h>
#include <unistd.h>
@@ -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 <stdlib.h>
@@ -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 <gandalf@wlug.westbo.se>
@@ -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
######################################################################