Hi all: Thanks go to whoever fixed the bug in cygwin1.dll that caused syslog to fail as soon as a udp packet was sent to it. The bug was introduced sometime around 1.3.12, but is fixed now. So here is my recipe for building syslog-ng-1.5.24.
Download syslog-ng-1.5.24 and libol-0.3.6. Patch the syslog source with the patch at the end of this message. The patch adds a -N flag to stop the syslog server from forking so that windows services mechanism and cygrunsrv will properly detect that the program/service is running. The man page is updated with this flag, but the html/sgml isn't patched. The patch also stops resolv.h from being included under __CYGWIN__, and defined the typdef uint32_t as unsigned. After applying the patch, touch src/main.c.x src/filter.c.x, then configure and make the two packages. Then run cygrunsrv as: cygrunsrv -I syslog -a '-N' -p /path/to/syslog -c /var/log and cygrunsrv -S syslog I use the syslog server with backlog to send the event log on my windows 2000 SP3 system to a file. I did most of my testing without tcp wrappers enabled, but I did finally get it to compile with the wrappers. To do this, change the lines that read: old_LDFLAGS=$LDFLAGS LDFLAGS=-lwrap to read old_LIBS=$LIBS LIBS=-lwrap and you will get checking for hosts_access in -lwrap... yes rather than checking for hosts_access in -lwrap... no Hopefully the syslog-ng people will include this patch in newer versions. -- rouilj John Rouillard =========================================================================== My employers don't acknowledge my existence much less my opinions. diff -ur syslog-ng-1.5.24/doc/syslog-ng.8 syslog-ng-1.5.24.l/doc/syslog-ng.8 --- syslog-ng-1.5.24/doc/syslog-ng.8 1999-07-10 11:58:32.000000000 -0400 +++ syslog-ng-1.5.24.l/doc/syslog-ng.8 2003-01-12 11:30:30.000000000 -0500 @@ -7,7 +7,7 @@ .B syslog-ng [ -.B \-dvV +.B \-NdvV ] [ .B \-f <\fIconfig-filename\fP> @@ -76,6 +76,15 @@ .B \-p \0<filename> Write the current PID information to the specified file. .TP +.B \-N +Non-daemon mode. Adding \fB-N\fp to the command line will make syslog +run in the foreground. This is used when starting syslog from service +monitor programs in windows platforms using cygwin's cygrunsrv, but +may also be useful for a startup/monitor wrapper that will restart +syslog if it dies for some unusual reason. This does not cause any +additional messages to be printed, so it will not fill up +log files as \fB-d\fP or \fB-v\fP can. +.TP .B \-v Enable verbose mode. Process will not become a daemon. Prints out fewer messages, compared to \fB-d\fP. diff -ur syslog-ng-1.5.24/src/filters.c syslog-ng-1.5.24.l/src/filters.c --- syslog-ng-1.5.24/src/filters.c 2002-02-04 11:07:50.000000000 -0500 +++ syslog-ng-1.5.24.l/src/filters.c 2003-01-12 11:21:57.000000000 -0500 @@ -259,6 +259,9 @@ struct log_filter *rule UNUSED, struct log_info *log) { +#if defined(__CYGWIN__) + typedef unsigned uint32_t; +#endif CAST(filter_expr_netmask, self, c); if (log->saddr) { diff -ur syslog-ng-1.5.24/src/main.c syslog-ng-1.5.24.l/src/main.c --- syslog-ng-1.5.24/src/main.c 2002-10-30 14:36:03.000000000 -0500 +++ syslog-ng-1.5.24.l/src/main.c 2003-01-12 11:31:31.000000000 -0500 @@ -46,7 +46,9 @@ #include <arpa/nameser.h> #endif -#include <resolv.h> +#if ! defined(__CYGWIN__) + #include <resolv.h> +#endif #include "main.c.x" @@ -425,7 +427,7 @@ gc_idle_threshold = 100; gc_busy_threshold = 3000; - while ((opt = getopt_long(argc, argv, "sFf:p:dvhyVC:u:g:", syslog_ng_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "sFf:p:dvhyVC:u:g:N", syslog_ng_options, +NULL)) != -1) { switch (opt) { case 'f': strncpy(cfgfilename, optarg, sizeof(cfgfilename)); @@ -464,6 +466,9 @@ yydebug = 1; break; #endif + case 'N': + do_fork = 0; + break; case 'h': default: usage(); -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/