From c84d74c258d54713cadf8dfbeff10fcb4d91624f Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Tue, 10 Feb 2009 01:52:22 +0100 Subject: Imported Upstream version 3.20.4 --- ChangeLog | 10 +++ Makefile.in | 2 - configure | 68 +++++++------- configure.ac | 6 +- doc/Makefile.am | 3 +- doc/Makefile.in | 5 +- doc/manual.html | 2 +- doc/ommysql.html | 46 ++++++++++ doc/omrelp.html | 4 +- doc/status.html | 55 ------------ doc/syslog_parsing.html | 196 +++++++++++++++++++++++++++++++++++++++++ plugins/im3195/Makefile.in | 2 - plugins/imfile/Makefile.in | 2 - plugins/imgssapi/Makefile.in | 2 - plugins/imklog/Makefile.in | 2 - plugins/immark/Makefile.in | 2 - plugins/imrelp/Makefile.in | 2 - plugins/imtcp/Makefile.in | 2 - plugins/imtemplate/Makefile.in | 2 - plugins/imudp/Makefile.in | 2 - plugins/imuxsock/Makefile.in | 2 - plugins/omgssapi/Makefile.in | 2 - plugins/omlibdbi/Makefile.in | 2 - plugins/ommail/Makefile.in | 2 - plugins/ommysql/Makefile.in | 2 - plugins/ompgsql/Makefile.in | 2 - plugins/omrelp/Makefile.in | 2 - plugins/omsnmp/Makefile.in | 2 - plugins/omtesting/Makefile.in | 2 - runtime/Makefile.in | 2 - runtime/msg.c | 26 +++--- runtime/msg.h | 1 + tests/Makefile.in | 2 - tools/Makefile.in | 2 - tools/syslogd.c | 2 +- 35 files changed, 309 insertions(+), 159 deletions(-) create mode 100644 doc/ommysql.html delete mode 100644 doc/status.html create mode 100644 doc/syslog_parsing.html diff --git a/ChangeLog b/ChangeLog index bccb1f8..880f3c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,14 @@ --------------------------------------------------------------------------- +Version 3.20.4 [v3-stable] (rgerhards), 2009-02-09 +- bugfix: inconsistent use of mutex/atomic operations could cause segfault + details are too many, for full analysis see blog post at: + http://blog.gerhards.net/2009/01/rsyslog-data-race-analysis.html +- bugfix: invalid ./configure settings for RFC3195 + thanks to Michael Biebl for the patch +- bugfix: invalid mutex access in msg.c +- doc bugfix: dist tarball missed 2 files, had one extra file that no + longer belongs into it. Thanks to Michael Biebl for pointing this out. +--------------------------------------------------------------------------- Version 3.20.3 [v3-stable] (rgerhards), 2009-01-19 - doc bugfix: v3-compatiblity document had typo in config directive thanks to Andrej for reporting this diff --git a/Makefile.in b/Makefile.in index 10a7cff..60b8eb2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -211,8 +211,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/configure b/configure index ba72056..187c682 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.63 for rsyslog 3.20.3. +# Generated by GNU Autoconf 2.63 for rsyslog 3.20.4. # # Report bugs to . # @@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='rsyslog' PACKAGE_TARNAME='rsyslog' -PACKAGE_VERSION='3.20.3' -PACKAGE_STRING='rsyslog 3.20.3' +PACKAGE_VERSION='3.20.4' +PACKAGE_STRING='rsyslog 3.20.4' PACKAGE_BUGREPORT='rsyslog@lists.adiscon.com' ac_unique_file="ChangeLog" @@ -796,8 +796,6 @@ ENABLE_IMTEMPLATE_FALSE ENABLE_IMTEMPLATE_TRUE ENABLE_IMFILE_FALSE ENABLE_IMFILE_TRUE -RFC3195_LIBS -RFC3195_CFLAGS ENABLE_RFC3195_FALSE ENABLE_RFC3195_TRUE LIBLOGGING_LIBS @@ -1570,7 +1568,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures rsyslog 3.20.3 to adapt to many kinds of systems. +\`configure' configures rsyslog 3.20.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1640,7 +1638,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rsyslog 3.20.3:";; + short | recursive ) echo "Configuration of rsyslog 3.20.4:";; esac cat <<\_ACEOF @@ -1776,7 +1774,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rsyslog configure 3.20.3 +rsyslog configure 3.20.4 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1790,7 +1788,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by rsyslog $as_me 3.20.3, which was +It was created by rsyslog $as_me 3.20.4, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -2506,7 +2504,7 @@ fi # Define the identity of the package. PACKAGE='rsyslog' - VERSION='3.20.3' + VERSION='3.20.4' cat >>confdefs.h <<_ACEOF @@ -6185,7 +6183,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6188 "configure"' > conftest.$ac_ext + echo '#line 6186 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8783,11 +8781,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8786: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8784: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8790: \$? = $ac_status" >&5 + echo "$as_me:8788: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9073,11 +9071,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9076: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9074: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9080: \$? = $ac_status" >&5 + echo "$as_me:9078: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9177,11 +9175,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9180: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9178: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9184: \$? = $ac_status" >&5 + echo "$as_me:9182: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11579,7 +11577,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:14089: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14095: \$? = $ac_status" >&5 + echo "$as_me:14093: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14192,11 +14190,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14195: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14193: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14199: \$? = $ac_status" >&5 + echo "$as_me:14197: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15777,11 +15775,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15780: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15778: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15784: \$? = $ac_status" >&5 + echo "$as_me:15782: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15881,11 +15879,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15884: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15882: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15888: \$? = $ac_status" >&5 + echo "$as_me:15886: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -18098,11 +18096,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18101: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18099: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18105: \$? = $ac_status" >&5 + echo "$as_me:18103: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18388,11 +18386,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18391: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18389: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18395: \$? = $ac_status" >&5 + echo "$as_me:18393: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18492,11 +18490,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18495: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18493: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18499: \$? = $ac_status" >&5 + echo "$as_me:18497: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -29021,7 +29019,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by rsyslog $as_me 3.20.3, which was +This file was extended by rsyslog $as_me 3.20.4, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29084,7 +29082,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -rsyslog config.status 3.20.3 +rsyslog config.status 3.20.4 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.ac b/configure.ac index 7af05e4..c5bcaec 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) -AC_INIT([rsyslog],[3.20.3],[rsyslog@lists.adiscon.com]) +AC_INIT([rsyslog],[3.20.4],[rsyslog@lists.adiscon.com]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([ChangeLog]) AC_CONFIG_HEADERS([config.h]) @@ -581,8 +581,8 @@ if test "x$enable_rfc3195" = "xyes"; then PKG_CHECK_MODULES(LIBLOGGING, liblogging >= 0.7.1) fi AM_CONDITIONAL(ENABLE_RFC3195, test x$enable_rfc3195 = xyes) -AC_SUBST(RFC3195_CFLAGS) -AC_SUBST(RFC3195_LIBS) +AC_SUBST(LIBLOGGING_CFLAGS) +AC_SUBST(LIBLOGGING_LIBS) # settings for the template input module; copy and modify this code diff --git a/doc/Makefile.am b/doc/Makefile.am index 4f4aae1..e7ce18c 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -31,6 +31,7 @@ html_files = \ contributors.html \ dev_queue.html \ omsnmp.html \ + ommysql.html \ omlibdbi.html \ imfile.html \ imtcp.html \ @@ -96,7 +97,7 @@ html_files = \ licensing.html \ ommail.html \ omrelp.html \ - status.html \ + syslog_parsing.html \ troubleshoot.html \ src/classes.dia diff --git a/doc/Makefile.in b/doc/Makefile.in index 86dc3d6..d24e9ff 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -103,8 +103,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ @@ -213,6 +211,7 @@ html_files = \ contributors.html \ dev_queue.html \ omsnmp.html \ + ommysql.html \ omlibdbi.html \ imfile.html \ imtcp.html \ @@ -278,7 +277,7 @@ html_files = \ licensing.html \ ommail.html \ omrelp.html \ - status.html \ + syslog_parsing.html \ troubleshoot.html \ src/classes.dia diff --git a/doc/manual.html b/doc/manual.html index 1d6f795..aa0fdb3 100644 --- a/doc/manual.html +++ b/doc/manual.html @@ -16,7 +16,7 @@ relay chains while at the same time being very easy to setup for the novice user. And as we know what enterprise users really need, there is also professional rsyslog support available directly from the source!

-

This documentation is for version 3.20.3 (v3-stable branch) of rsyslog. +

This documentation is for version 3.20.4 (v3-stable branch) of rsyslog. Visit the rsyslog status page to obtain current version information and project status.

If you like rsyslog, you might diff --git a/doc/ommysql.html b/doc/ommysql.html new file mode 100644 index 0000000..79d913e --- /dev/null +++ b/doc/ommysql.html @@ -0,0 +1,46 @@ + + + +MySQL Database Output Module + + + +

MySQL Database Output Module

+

Module Name:    ommysql

+

Author: Michael Meckelein (Initial Author) / Rainer Gerhards +<rgerhards@adiscon.com>

+

Description:

+

This module provides native support for logging to MySQL databases. It offers +superior performance over the more generic omlibdbi module. +

+

Configuration Directives:

+

ommysql mostly uses the "old style" configuration, with almost everything on the +action line itself. A few newer features are being migrated to the new style-config +directive configuration system. +

    +
  • $ActionOmmysqlServerPort <port>
    Permits to select +a non-standard port for the MySQL server. The default is 0, which means the +system default port is used. There is no need to specify this directive unless +you know the server is running on a non-standard listen port. +
  • Action parameters: +
    :ommysql:database-server,database-name,database-userid,database-password +
    All parameters should be filled in for a successful connect. +
+

Sample:

+

The following sample writes all syslog messages to the +database "syslog_db" on mysqlsever.example.com. The server is +being accessed under the account of "user" with password "pwd". +

+ +

[rsyslog.conf overview] +[manual index] [rsyslog site]

+

This documentation is part of the +rsyslog +project.
+Copyright © 2008 by Rainer Gerhards and +Adiscon. +Released under the GNU GPL version 3 or higher.

+ diff --git a/doc/omrelp.html b/doc/omrelp.html index 0952cc7..d5437a7 100644 --- a/doc/omrelp.html +++ b/doc/omrelp.html @@ -4,7 +4,7 @@ -

RELP Output Module (omlibdbi)

+

RELP Output Module (omrelp)

Module Name:    omrelp

Author: Rainer Gerhards <rgerhards@adiscon.com>

@@ -51,4 +51,4 @@ Copyright Gerhards and Adiscon. Released under the GNU GPL version 3 or higher.

- \ No newline at end of file + diff --git a/doc/status.html b/doc/status.html deleted file mode 100644 index 90932fc..0000000 --- a/doc/status.html +++ /dev/null @@ -1,55 +0,0 @@ - -rsyslog status page - -

rsyslog status page

-

This page reflects the status as of 2008-07-15.

-

Current Releases

- - - -
beta: 3.19.10 [2008-07-15] - -change log - -download

- -

v3 stable: 3.18.0 [2008-07-11] - change log - -download - -
v2 stable: 2.0.5 [2008-05-15] - change log - -download -
v0 and v1 are deprecated and no longer supported. If you absolutely do not like to -upgrade, you may consider purchasing a -commercial rsyslog support package. Just let us point -out that it is really not a good idea to still run a v0 version. - -

If you updgrade from version 2, be sure to read the rsyslog v3 -compatibility document.

-

(How are versions named?)

- -

Platforms

-

Thankfully, a number of folks have begin to build packages and -help port rsyslog to other platforms. As such, -the -platform list is now maintained inside the rsyslog wiki. -Platform maintainers perhaps have posted extra information there. If -you do platform-specific work, feel free to add information to the wiki.

-

Rsyslog is the default syslogd in Fedora 8 and above.

-

Additional information

-

Currently supported features are listed on the rsyslog features page.

- -

The project was initiated in 2003 and seriouosly begun in 2004 by -Rainer Gerhards -and is currently being maintained by him. See the history page for more -background information.

- diff --git a/doc/syslog_parsing.html b/doc/syslog_parsing.html new file mode 100644 index 0000000..57da665 --- /dev/null +++ b/doc/syslog_parsing.html @@ -0,0 +1,196 @@ + +syslog parsing in rsyslog + + +

syslog parsing in rsyslog

+

Written by Rainer Gerhards +(2008-09-23)

+

We regularly receive messages asking why rsyslog +parses this or that message incorrectly. Of course, it turns out that rsyslog does +the right thing, but the message sender does not. And also of course, this is not even +of the slightest help to the end user experiencing the problem ;). So I thought I write this +paper. It describes the problem source and shows potential solutions (aha!). +

Syslog Standardization

+The syslog protocol has not been standardized until relatively recently.The first document "smelling" a bit +like a standard is RFC 3164, which dates back +to August 2001. The problem is that this document is no real standard. It has assigned "informational" +status by the IETF which means it provides some hopefully +useful information but does not demand anything. It is impossible to "comply" to an informational +document. This, of course, doesn't stop marketing guys from telling they comply to RFC3164 and +it also does not stop some techs to tell you "this and that does not comply to RFC3164, so it is +<anybody else but them>'s fault". +

Then, there is RFC3195, which is +a real standard. In it's section 3 it makes (a somewhat questionable) reference to (informational) +RFC 3164 which may be interpreted in a way that RFC3195 standardizes the format layed out +in RFC 3164 by virtue of referencing them. So RFC3195 seems to extend its standardization +domain to the concepts layed out in RFC 3164 (which is why I tend to find that refrence +questionable). In that sense, RFC3195 standardizes the format informationally described in +RFC3164, Section 4. But it demands it only for the scope of RFC3195, which is syslog over +BEEP - and NOT syslog over UDP. So one may argue whether or not the RFC3164 format could +be considered a standard for any non-BEEP (including UDP) syslog, too. In the strict view +I tend to have, it does not. Refering to the RFC3195 context usually does not help, +because there are virtually no RFC3195 implementations available (at this time, +I would consider this RFC a failure). +

Now let's for a short moment assume that RFC3195 would somehow be able to demand +RFC3164 format for non-BEEP syslog. So we could use RFC3164 format as a standard. But does +that really help? Let's cite RFC 3164, right at the begining of section 4 (actually, this +is the first sentence): +

+
+   The payload of any IP packet that has a UDP destination port of 514
+   MUST be treated as a syslog message. 
+
+
+

Think a bit about it: this means that whatever is send to port 514 must be considered +a valid syslog message. No format at all is demanded. So if "this is junk" is sent to +UDP port 514 - voila, we have a valid message (interestingly, it is no longer a syslog +message if it is sent to port 515 ;)). You may now argue that I am overdoing. So let's +cite RFC 3164, Section 5.4, Example 2: +

+
+  Example 2
+
+        Use the BFG!
+
+   While this is a valid message, it has extraordinarily little useful
+   information.
+
+
+

As you can see, RFC3164 explicitely states that no format at all is required. +

Now a side-note is due: all of this does not mean that the RFC3164 authors +did not know what they were doing. No, right the contrary is true: RFC3164 mission +is to describe what has been seen in practice as syslog messages and the +conclusion is quite right that there is no common understanding on the +message format. This is also the reason why RFC3164 is an informational document: +it provides useful information, but does not precisely specify anything. +

After all of this bashing, I now have to admit that RFC3164 has some format +recommendations layed out in section 4. The format described has quite some +value in it and implementors recently try to follow it. This format is usually meant +when someone tells you that a software is "RFC3164 compliant" or expects "RFC3164 compliant messages". +I also have to admit that rsyslog also uses this format and, in the sense outlined here, +expects messages received to be "RFC3164 compliant" (knowingly that such a beast does not +exist - I am simply lying here ;)). +

Please note that there is some relief of the situation in reach. There is a new normative +syslog RFC series upcoming, and it specifies a standard message format. At the time of +this writing, the main documents are sitting in the RFC editor queue waiting for a transport +mapping to be completed. I personally expect them to be assigned RFC numbers in 2009. +

Practical Format Requirements

+

From a practical point of view, the message format expected (and generated by +default in legacy mode) is: +


+<PRI>TIMESTAMP SP HOST SP TAG MSG(Freetext)
+
+

SP is the ASCII "space" character and the definition of the rest of the fields +can be taken from RFC3164. Please note that there also is a lot of confusion on what +syntax and semantics the TAG actually has. This format is called "legacy syslog" because +it is not well specified (as you know by now) and has been "inherited from the real world". +

Rsyslog offers two parsers: one for the upcoming RFC series and one for legacy format. We +concentrate on the later. That parser applies some logic to detect missing hostnames, +is able to handle various ways the TIMESTAMP is typically malformed. In short it applies +a lot of guesswork in trying to figure out what a message really means. I am sure the +guessing algorithm can be improved, and I am always trying that when I see new malformed +messages (and there is an ample set of them...). However, this finds its limits where +it is not possible to differentiate between two entities which could be either. +For example, look at this message: +


+<144>Tue Sep 23 11:40:01 taghost sample message
+
+

Does it contain a hostname? Mabye. The value "taghost" is a valid hostname. Of course, it is +also a valid tag. If it is a hostname, the tag's value is "sample" and the msg value is "message". +Or is the hostname missing, the tag is "taghost" and msg is "sample message"? As a human, I tend +to say the later interpretation is correct. But that's hard to tell the message parser (and, no, I do +not intend to apply artificial intelligence just to guess what the hostname value is...). +

One approach is to configure the parser so that it never expects hostnames. This becomes problematic +if you receive messages from multiple devices. Over time, I may implement parser conditionals, +but this is not yet available and I am not really sure if it is needed comlexity... +

Things like this, happen. Even more scary formats happen in practice. Even from mainstream +vendors. For example, I was just asked about this message (which, btw, finally made me +write this article here): +


+"<130> [ERROR] iapp_socket_task.c 399: iappSocketTask: iappRecvPkt returned error"
+
+

If you compare it with the format RFC3164 "suggests", you'll quickly notice that +the message is "a bit" malformed. Actually, even my human intelligence is not sufficient +to guess if there is a TAG or not (is "[ERROR]" a tag or part of the message). I may not be +the smartest guy, but don't expect me to program a parser that is smarter than me. +

To the best of my konwledge, these vendor's device's syslog format can be configured, so it +would proabably be a good idea to include a (sufficiently well-formed) timestamp, +the sending hostname and (maybe?) a tag to make this message well parseable. +I will also once again take this sample and see if we can apply some guesswork. +For example, "[" can not be part of a well-formed TIMESTAMP, so logic can conclude +there is not TIMESTAMP. Also, "[" can not be used inside a valid hostname, so +logic can conclude that the message contains no hostname. Even if I implement this +logic (which I will probably do), this is a partial solution: it is impossible to +guess if there is a tag or not (honestly!). And, even worse, it is a solution only for +those set of messages that can be handled by the logic described. Now consider this +hypothetical message: +


+"<130> [ERROR] host.example.net 2008-09-23 11-40-22 PST iapp_socket_task.c 399: iappSocketTask: iappRecvPkt returned error"
+
+

Obviously, it requires additional guesswork. If we iterate over all the cases, we +can very quickly see that it is impossible to guess everything correct. In the example above +we can not even surely tell if PST should be a timezone or some other message property. +

A potential solution is to generate a parser-table based parser, but this requires +considerable effort and also has quite some runtime overhead. I try to avoid this for +now (but I may do it, especially if someone sponsors this work ;)). Side-note: if you want +to be a bit scared about potential formats, you may want to have a look at my paper +"On the Nature of Syslog Data". +

Work-Around

+

The number one work-around is to configure your devices so that they emit +(sufficiently) well-formed messages. You should by now know what these look +like. +

If that cure is not available, there are some things you can do in rsyslog to +handle the situation. First of all, be sure to read about +rsyslog.conf format +and the property replacer and properties specifically. +You need to understand that everything is configured in rsyslog. And that the message is parsed +into properties. There are also properties available which do not stem back directly to parsing. +Most importantly, %fromhost% property holds the name of the system rsyslog received +the message from. In non-relay cases, this can be used instead of hostname. In relay cases, +there is no cure other than to either fix the orginal sender or at least one of the +relays in front of the rsyslog instance in question. Similarly, you can use %timegenerated% +instead of %timereported%. Timegenerated is the time the message hit rsyslog for the first +time. For non-relayed, locally connected peers, Timegenerated should be a very close approximation +of the actual time a message was formed at the sender (depending, of course, on potential +internal queueing inside the sender). +Also, you may use the +%rawmsg% property together with the several extraction modes the property replacer supports. +Rawmsg contains the message as it is received from the remote peer. In a sense, you can +implement a post-parser with this method. +

To use these properties, you need to define your own templates and assign them. Details +can be found in the above-quoted documentation. Just let's do a quick example. Let's say +you have the horrible message shown above and can not fix the sending device for +some good reason. In rsyslog.conf, you used to say: +


+*.* /var/log/somefile
+
+

Of course, things do not work out well with that ill-formed message. So you decide +to dump the rawmsg to the file and pull the remote host and time of message generation +from rsyslog's internal properties (which, btw, is clever, because otherwise there is no +indication of these two properties...). So you need to define a template for that and +make sure the template is used with your file logging action. This is how it may look: +


+$template, MalfromedMsgFormater,"%timegenerated% %fromhost% %rawmsg:::drop-last-lf%\n"
+*.* /var/log/somefile;MalformedMsgFormatter
+
+

This will make your log much nicer, but not look perfect. Experiment a bit +with the available properties and replacer extraction options to fine-tune it +to your needs. +

Wrap-Up

+

Syslog message format is not sufficiently standardized. There exists a weak +"standard" format, which is used by a good number of implementations. However, there +exist many others, including mainstream vendor implementations, which have a +(sometimes horribly) different format. Rsyslog tries to deal with anomalies but +can not guess right in all instances. If possible, the sender should be configured +to submit well-formed messages. If that is not possible, you can work around these +issues with rsyslog's property replacer and template system. +

I hope this is a useful guide. You may also have a look at the +rsyslog troubleshooting guide for further help and places where +to ask questions. +

[manual index] [rsyslog site]

+

This documentation is part of the +rsyslog project.
+Copyright © 2008 by Rainer +Gerhards and Adiscon. +Released under the GNU GPL version 3 or higher.

+ diff --git a/plugins/im3195/Makefile.in b/plugins/im3195/Makefile.in index 80ccbf7..06d8aaf 100644 --- a/plugins/im3195/Makefile.in +++ b/plugins/im3195/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imfile/Makefile.in b/plugins/imfile/Makefile.in index 0df3527..9039537 100644 --- a/plugins/imfile/Makefile.in +++ b/plugins/imfile/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imgssapi/Makefile.in b/plugins/imgssapi/Makefile.in index 5ab81d0..26f57f9 100644 --- a/plugins/imgssapi/Makefile.in +++ b/plugins/imgssapi/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imklog/Makefile.in b/plugins/imklog/Makefile.in index 4fc20ff..e0cd8bf 100644 --- a/plugins/imklog/Makefile.in +++ b/plugins/imklog/Makefile.in @@ -144,8 +144,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/immark/Makefile.in b/plugins/immark/Makefile.in index 8b85037..1efd6d1 100644 --- a/plugins/immark/Makefile.in +++ b/plugins/immark/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imrelp/Makefile.in b/plugins/imrelp/Makefile.in index 0c29cf5..dc3c3f3 100644 --- a/plugins/imrelp/Makefile.in +++ b/plugins/imrelp/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imtcp/Makefile.in b/plugins/imtcp/Makefile.in index edb463f..2fd148b 100644 --- a/plugins/imtcp/Makefile.in +++ b/plugins/imtcp/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imtemplate/Makefile.in b/plugins/imtemplate/Makefile.in index 22b2b91..96de010 100644 --- a/plugins/imtemplate/Makefile.in +++ b/plugins/imtemplate/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imudp/Makefile.in b/plugins/imudp/Makefile.in index 8ee7f82..4d84a07 100644 --- a/plugins/imudp/Makefile.in +++ b/plugins/imudp/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/imuxsock/Makefile.in b/plugins/imuxsock/Makefile.in index 0208a6a..072d082 100644 --- a/plugins/imuxsock/Makefile.in +++ b/plugins/imuxsock/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/omgssapi/Makefile.in b/plugins/omgssapi/Makefile.in index 49f42a7..2aab6d9 100644 --- a/plugins/omgssapi/Makefile.in +++ b/plugins/omgssapi/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/omlibdbi/Makefile.in b/plugins/omlibdbi/Makefile.in index 3d9dd04..b159267 100644 --- a/plugins/omlibdbi/Makefile.in +++ b/plugins/omlibdbi/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/ommail/Makefile.in b/plugins/ommail/Makefile.in index 0ba6fdc..e13d116 100644 --- a/plugins/ommail/Makefile.in +++ b/plugins/ommail/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/ommysql/Makefile.in b/plugins/ommysql/Makefile.in index 6da734a..797d67c 100644 --- a/plugins/ommysql/Makefile.in +++ b/plugins/ommysql/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/ompgsql/Makefile.in b/plugins/ompgsql/Makefile.in index dff4578..65e8b1b 100644 --- a/plugins/ompgsql/Makefile.in +++ b/plugins/ompgsql/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/omrelp/Makefile.in b/plugins/omrelp/Makefile.in index fbc06e7..e13fab7 100644 --- a/plugins/omrelp/Makefile.in +++ b/plugins/omrelp/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/omsnmp/Makefile.in b/plugins/omsnmp/Makefile.in index 9c0a611..461ba32 100644 --- a/plugins/omsnmp/Makefile.in +++ b/plugins/omsnmp/Makefile.in @@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/plugins/omtesting/Makefile.in b/plugins/omtesting/Makefile.in index 404692c..37516e7 100644 --- a/plugins/omtesting/Makefile.in +++ b/plugins/omtesting/Makefile.in @@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/runtime/Makefile.in b/runtime/Makefile.in index c82d6b2..b7a22f9 100644 --- a/runtime/Makefile.in +++ b/runtime/Makefile.in @@ -224,8 +224,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/runtime/msg.c b/runtime/msg.c index c8dbf2c..d02b0a0 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -188,6 +188,7 @@ static void MsgPrepareEnqueueLockingCase(msg_t *pThis) * rgerhards, 2008-07-14 */ pthread_mutexattr_destroy(&pThis->mutAttr); + pThis->bDoLock = 1; ENDfunc } @@ -197,14 +198,16 @@ static void MsgLockLockingCase(msg_t *pThis) { /* DEV debug only! dbgprintf("MsgLock(0x%lx)\n", (unsigned long) pThis); */ assert(pThis != NULL); - pthread_mutex_lock(&pThis->mut); + if(pThis->bDoLock == 1) /* TODO: this is a testing hack, we should find a way with better performance! -- rgerhards, 2009-01-27 */ + pthread_mutex_lock(&pThis->mut); } static void MsgUnlockLockingCase(msg_t *pThis) { /* DEV debug only! dbgprintf("MsgUnlock(0x%lx)\n", (unsigned long) pThis); */ assert(pThis != NULL); - pthread_mutex_unlock(&pThis->mut); + if(pThis->bDoLock == 1) /* TODO: this is a testing hack, we should find a way with better performance! -- rgerhards, 2009-01-27 */ + pthread_mutex_unlock(&pThis->mut); } /* delete the mutex object on message destruction (locking case) @@ -271,11 +274,8 @@ BEGINobjDestruct(msg) /* be sure to specify the object type also in END and CODE int currRefCount; CODESTARTobjDestruct(msg) /* DEV Debugging only ! dbgprintf("msgDestruct\t0x%lx, Ref now: %d\n", (unsigned long)pM, pM->iRefCount - 1); */ -# ifdef DO_HAVE_ATOMICS - currRefCount = ATOMIC_DEC_AND_FETCH(pThis->iRefCount); -# else - currRefCount = --pThis->iRefCount; -# endif + MsgLock(pThis); + currRefCount = --pThis->iRefCount; if(currRefCount == 0) { /* DEV Debugging Only! dbgprintf("msgDestruct\t0x%lx, RefCount now 0, doing DESTROY\n", (unsigned long)pThis); */ @@ -333,8 +333,10 @@ CODESTARTobjDestruct(msg) rsCStrDestruct(&pThis->pCSPROCID); if(pThis->pCSMSGID != NULL) rsCStrDestruct(&pThis->pCSMSGID); + MsgUnlock(pThis); funcDeleteMutex(pThis); } else { + MsgUnlock(pThis); pThis = NULL; /* tell framework not to destructing the object! */ } ENDobjDestruct(msg) @@ -478,13 +480,9 @@ finalize_it: msg_t *MsgAddRef(msg_t *pM) { assert(pM != NULL); -# ifdef DO_HAVE_ATOMICS - ATOMIC_INC(pM->iRefCount); -# else - MsgLock(pM); - pM->iRefCount++; - MsgUnlock(pM); -# endif + MsgLock(pM); + pM->iRefCount++; + MsgUnlock(pM); /* DEV debugging only! dbgprintf("MsgAddRef\t0x%x done, Ref now: %d\n", (int)pM, pM->iRefCount);*/ return(pM); } diff --git a/runtime/msg.h b/runtime/msg.h index c428237..fadbb48 100644 --- a/runtime/msg.h +++ b/runtime/msg.h @@ -51,6 +51,7 @@ struct msg { BEGINobjInstance; /* Data to implement generic object - MUST be the first data element! */ pthread_mutexattr_t mutAttr; +short bDoLock; /* use the mutex? */ pthread_mutex_t mut; int iRefCount; /* reference counter (0 = unused) */ short bParseHOSTNAME; /* should the hostname be parsed from the message? */ diff --git a/tests/Makefile.in b/tests/Makefile.in index 5fdae87..3f87fd4 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -136,8 +136,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/tools/Makefile.in b/tools/Makefile.in index 0375def..2634a53 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -139,8 +139,6 @@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ RELP_CFLAGS = @RELP_CFLAGS@ RELP_LIBS = @RELP_LIBS@ -RFC3195_CFLAGS = @RFC3195_CFLAGS@ -RFC3195_LIBS = @RFC3195_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ diff --git a/tools/syslogd.c b/tools/syslogd.c index b32ce02..2c66daa 100644 --- a/tools/syslogd.c +++ b/tools/syslogd.c @@ -1607,7 +1607,7 @@ logmsg(msg_t *pMsg, int flags) assert(pMsg != NULL); assert(pMsg->pszUxTradMsg != NULL); msg = (char*) pMsg->pszUxTradMsg; - dbgprintf("logmsg: flags %x, pri %s, from '%s', msg %s\n", flags, getPRI(pMsg), getRcvFrom(pMsg), msg); + dbgprintf("logmsg: flags %x, from '%s', msg %s\n", flags, getRcvFrom(pMsg), msg); /* rger 2005-11-24 (happy thanksgiving!): we now need to check if we have * a traditional syslog message or one formatted according to syslog-protocol. -- cgit v1.2.3