Browse Source

Imported Upstream version 8.4.0

upstream upstream/8.4.0
Michael Biebl 9 years ago
parent
commit
1dfcd909d9
  1. 195
      ChangeLog
  2. 8
      INSTALL
  3. 7
      Makefile.am
  4. 530
      Makefile.in
  5. 93
      README.md
  6. 603
      aclocal.m4
  7. 124
      action.c
  8. 18
      action.h
  9. 196
      compat/Makefile.in
  10. 99
      compile
  11. 43
      config.guess
  12. 13
      config.h.in
  13. 77
      config.sub
  14. 659
      configure
  15. 40
      configure.ac
  16. 487
      depcomp
  17. 1
      dirty.h
  18. 207
      grammar/Makefile.in
  19. 463
      grammar/grammar.c
  20. 36
      grammar/grammar.h
  21. 2157
      grammar/lexer.c
  22. 6
      grammar/lexer.l
  23. 51
      grammar/rainerscript.c
  24. 2
      grammar/rainerscript.h
  25. 3
      gss-misc.c
  26. 14
      install-sh
  27. 100
      java/Makefile.in
  28. 32
      ltmain.sh
  29. 2
      m4/atomic_operations_64bit.m4
  30. 45
      m4/libtool.m4
  31. 414
      missing
  32. 4
      outchannel.c
  33. 6
      parse.c
  34. 202
      plugins/im3195/Makefile.in
  35. 202
      plugins/imdiag/Makefile.in
  36. 33
      plugins/imdiag/imdiag.c
  37. 202
      plugins/imfile/Makefile.in
  38. 1
      plugins/imfile/imfile.c
  39. 202
      plugins/imgssapi/Makefile.in
  40. 202
      plugins/imjournal/Makefile.in
  41. 8
      plugins/imjournal/imjournal.c
  42. 202
      plugins/imklog/Makefile.in
  43. 4
      plugins/imklog/bsd.c
  44. 202
      plugins/imkmsg/Makefile.in
  45. 202
      plugins/immark/Makefile.in
  46. 202
      plugins/impstats/Makefile.in
  47. 202
      plugins/imptcp/Makefile.in
  48. 78
      plugins/imptcp/imptcp.c
  49. 202
      plugins/imrelp/Makefile.in
  50. 119
      plugins/imrelp/imrelp.c
  51. 202
      plugins/imsolaris/Makefile.in
  52. 202
      plugins/imtcp/Makefile.in
  53. 202
      plugins/imttcp/Makefile.in
  54. 202
      plugins/imudp/Makefile.in
  55. 62
      plugins/imudp/imudp.c
  56. 202
      plugins/imuxsock/Makefile.in
  57. 227
      plugins/imuxsock/imuxsock.c
  58. 202
      plugins/imzmq3/Makefile.in
  59. 202
      plugins/mmanon/Makefile.in
  60. 202
      plugins/mmaudit/Makefile.in
  61. 202
      plugins/mmcount/Makefile.in
  62. 2
      plugins/mmcount/mmcount.c
  63. 8
      plugins/mmexternal/Makefile.am
  64. 637
      plugins/mmexternal/Makefile.in
  65. 708
      plugins/mmexternal/mmexternal.c
  66. 202
      plugins/mmfields/Makefile.in
  67. 202
      plugins/mmjsonparse/Makefile.in
  68. 80
      plugins/mmjsonparse/mmjsonparse.c
  69. 202
      plugins/mmnormalize/Makefile.in
  70. 202
      plugins/mmpstrucdata/Makefile.in
  71. 202
      plugins/mmrfc5424addhmac/Makefile.in
  72. 202
      plugins/mmsequence/Makefile.in
  73. 202
      plugins/mmsnmptrapd/Makefile.in
  74. 6
      plugins/mmsnmptrapd/mmsnmptrapd.c
  75. 202
      plugins/mmutf8fix/Makefile.in
  76. 206
      plugins/omelasticsearch/Makefile.in
  77. 4
      plugins/omelasticsearch/omelasticsearch.c
  78. 202
      plugins/omgssapi/Makefile.in
  79. 202
      plugins/omhdfs/Makefile.in
  80. 203
      plugins/omhiredis/Makefile.in
  81. 202
      plugins/omjournal/Makefile.in
  82. 202
      plugins/omlibdbi/Makefile.in
  83. 202
      plugins/ommail/Makefile.in
  84. 2
      plugins/ommail/ommail.c
  85. 202
      plugins/ommongodb/Makefile.in
  86. 10
      plugins/ommongodb/README
  87. 202
      plugins/ommysql/Makefile.in
  88. 3
      plugins/ommysql/ommysql.c
  89. 202
      plugins/omoracle/Makefile.in
  90. 202
      plugins/ompgsql/Makefile.in
  91. 2
      plugins/ompgsql/createDB.sql
  92. 202
      plugins/omprog/Makefile.in
  93. 3
      plugins/omprog/omprog.c
  94. 202
      plugins/omrabbitmq/Makefile.in
  95. 202
      plugins/omrelp/Makefile.in
  96. 202
      plugins/omruleset/Makefile.in
  97. 202
      plugins/omsnmp/Makefile.in
  98. 6
      plugins/omsnmp/omsnmp.c
  99. 202
      plugins/omstdout/Makefile.in
  100. 202
      plugins/omtesting/Makefile.in

195
ChangeLog

@ -1,4 +1,153 @@
---------------------------------------------------------------------------
Version 8.4.0 [v8-stable] 2014-08-18
- this is the new stable branch, which incorporates all enhancements of
rsyslog 8.3.
---------------------------------------------------------------------------
Version 8.3.5 [v8-devel] 2014-08-05
- mmjsonparse: support selectable cookie and target containers
This permits to put different meanings into a json formatted syslog
message, e.g. the "traditional" cee or cim data.
- bugfix: mmjsonparse did not build with json-c < 0.10
This was a regression introduced some time in the past in order to
support API changes in json-c. Now we check for the version and use
proper code.
- omprog: emit error message via syslog() if loading binary fails
This happens after forking, so omprog has no longer access to rsyslog's
regular error reporting functions. Previously, this meant any error
message was lost. Now it is emitted via regular syslog (which may end up
in a different instance, if multiple instances run...)
- couple of patches imported from v7-stable (7.6.4)
---------------------------------------------------------------------------
Version 8.3.4 [v8-devel] 2014-07-11
- new pmciscoios parser supporting various Cisco IOS formats
- RFC3164 timestamp parser now accepts timezones and subsecond resolution
... at least for some common formats and where we could do so without
running risk of breaking proper formats (or introducing regressions)
- new parser config object -- permits to define custom parser definitions
- new tzinfo config object -- permits to define time zone offsets
This is a utility object that currently is being used by some parsers.
- bugfix: mishandling of input modules not supporting new input instances
If they did not support this, accidently the output module part of the
module union was written, leading to unpredictable results. Note: all
core modules do support this interface, but some contributed or very
old ones do not.
- bugfix: double-free when ruleset() parser parameters were used
While unlikely, this could cause stability issues even after the
config phase.
---------------------------------------------------------------------------
Version 8.3.3 [v8-devel] 2014-06-26
- unify input object naming
imudp now supports "name" paramter, as other inputs do. "inputname" has
been deprecated, but can still be used. Same applies to "appendport"
subparamter". Thanks to "Nick Syslog" for the suggestion.
- made the missing (contributed) modules build under v8 [import from 8.2.2]
Modules:
* mmrfc5424addhmac
* omrabbitmq
* omgssapi
* omhdfs
* omzmq3
- added a cleanup process (janitor); permits to close omfile files after a
timeout
- make omgssapi build under v8.3 [import vom v8.2]
note that we could do this to the stable, because there is NO regression
chance at all: only omgssapi was changed, and this module did NOT work
previously.
- removed obsolete --disable-fsstnd configure option
Thanks to Thomas D. for alerting us.
Closes: https://github.com/rsyslog/rsyslog/issues/72
---------------------------------------------------------------------------
Version 8.3.2 [v8-devel] 2014-05-02
- new template options for date extraction:
- year
- month
- day
- wday
- hour
- minute
- second
- tzoffshour
- tzoffsmin
- tzoffsdirection
- wdayname
For string templates, these are property options and they are
prefixed with "date-" (e.g. "date-year", "date-month", ...)
see also: https://github.com/rsyslog/rsyslog/issues/65
- bugfix: mmexternal remove framing char before processing JSON reply
This did not have any real bad effects, but caused unnecessary
processing, as empty replies were not properly detected. Otherwise,
the bug was not noticible from the user's PoV.
- bugfix: mmexternal segfault due to invalid free in non-json input mode
closes: https://github.com/rsyslog/rsyslog/issues/70
- bugfix: mmexternal segfault when external plugin sent invalid reply
... or no reply at all. This happened if the reply was imporper JSON.
Now, we emit an error message in those cases.
see also: https://github.com/rsyslog/rsyslog/issues/69
- bugfix: mmexternal did potentially pass incomplete data to restarted
external plugin
This could happen if EPIPE was returned "too late", in which case the
beginning of the data could be lost.
- bugfix: mmexternal did not properly process messages over 4KiB
The data to be passed to the external plugin was truncated after 4KiB.
see: https://github.com/rsyslog/rsyslog/issues/64
- imrelp: added support for per-listener ruleset and inputname
see: https://github.com/rsyslog/rsyslog/pull/63
Thanks to bobthesecurityguy github user for the patch
---------------------------------------------------------------------------
Version 8.3.1 [v8-devel] 2014-04-24
- external message modification interface now support modifying message PRI
- "jsonmesg" property will include uuid only if one was previously generated
This is primarily a performance optimization. Whenever the message uuid
is gotten, it is generated when not already present. As we used the
regular setter, this means that always the uuid was generated, which is
quite time-consuming. This has now been changed so that it only is
generated if it already exists. That also matches more closly the
semantics, as "jsonmesg" should not make modifications to the message.
Note that the same applies to "fulljson" passing mode for external
plugins.
- added plugin to rewrite message facility and/or severity
Name: fac-sever-rewrite.py
- permits to build against json-c 0.12
Unfortunately, json-c had an ABI breakage, so this is necessary. Note
that versions prior to 0.12 had security issues (CVE-2013-6370,
CVE-2013-6371) and so it is desirable to link against the new version.
Thanks to Thomas D. for the patch. Note that at least some distros
have fixed the security issue in older versions of json-c, so this
seems to apply mostly when building from sources.
- bugfix: using UUID property could cause segfault
- bugfix/mmexternal: memory leak
- bugfix: memory leak when using "jsonmesg" property
- bugfix: mmutf8fix did not detect two invalid sequences
Thanks to Axel Rau for the patch.
- bugfix: build problems with lexer.l on some platforms
For some reason, the strdup() prototype and others are missing. I admit
that I don't know why, as this happens only in 8.3.0+ and there is no
indication of changes to the affected files. In any case, we need to
fix this, and the current solution works at least as an interim one.
---------------------------------------------------------------------------
Version 8.3.0 [v8-devel] 2014-04-10
- new plugin for anonymizing credit card numbers
Thanks to Peter Slavov for providing the code.
- external message modification modules are now supported
They are bound via the new native module "mmexternal". Also, a sample
skeleton for an external python message modification module has been
added.
- new $jsonmesg property with JSON representation of whole message object
closes: https://github.com/rsyslog/rsyslog/issues/19
- improved error message for invalid field extraction in string template
see also:
http://kb.monitorware.com/problem-with-field-based-extraction-t12299.html
- fix build problems on Solaris
- NOTE: a json-c API that we begun to use requires the compiler to be in
c99 mode. By default, we select it automatically. If you modify this and
use gcc, be sure to include "-std=c99" in your compiler flags. This seems
to be necessary only for older versions of gcc.
---------------------------------------------------------------------------
Version 8.2.3 [v8-stable] 2014-??-??
- bugfix: ommysql: handle/mem leak upon termination of worker thread
This could become bad if the (instance) worker threads are often
started and terminated. But it takes quite a while to show effect.
---------------------------------------------------------------------------
Version 8.2.2 [v8-stable] 2014-06-02
- made the missing (contributed) modules build under v8
Note that we could do this to the stable, because there is NO regression
@ -61,6 +210,14 @@ This starts a new stable branch based on 8.1.6 plus the following changes:
- bugfix: ompipe did resume itself even when it was still in error
See: https://github.com/rsyslog/rsyslog/issues/35
Thanks to github user schplat for reporting
- bugfix: ompipe used invalid default template
This is a regression from an old change (didn't track it down precisely,
but over a year ago). It used the Forwarding template instead of
the file template (so we have a full syslog header). This fix corrects
it back to previous behaviour, but new scripts that used the wrong
format may now need to have the RSYSLOG_ForwardingFormat template
explicitely be applied.
closes: https://github.com/rsyslog/rsyslog/issues/50
---------------------------------------------------------------------------
Version 8.1.6 [release candidate] 2014-02-20
- omfile: permit to set global defaults for action parameters
@ -232,6 +389,12 @@ Version 8.1.0 [experimental] 2013-11-15
just explicitely be given.
---------------------------------------------------------------------------
Version 7.6.4 [v7.6-stable] 2014-03-??
- add --enable-generate-man-pages configure switch (default: enabled)
This forces generation of man pages, even if cached ones exists. This
"fixes" a typical release tarball nit. While it is hackish, the
benefit is clear given the history of failed tarball releases since
we changed the cached man page handling. It was just too easy to get
that wrong.
- removed obsolete --disable-fsstnd configure option
Thanks to Thomas D. for alerting us.
Closes: https://github.com/rsyslog/rsyslog/issues/72
@ -257,6 +420,36 @@ Version 7.6.4 [v7.6-stable] 2014-03-??
- bugfix: using UUID property could cause segfault
- bugfix: mmutf8fix did not detect two invalid sequences
Thanks to Axel Rau for the patch.
- bugfix: file descriptor leak with Guardtime signatures
When a .gtstate file is opened it is never closed. This is especially
bad when dynafiles frequently get evicted from dynafile cache and be
re-opened again.
- bugfix: busy loop in tcp listener when running out of file descriptors
Thanks to Susant Sahani for the patch.
- bugfix: mishandling of input modules not supporting new input instances
If they did not support this, accidently the output module part of the
module union was written, leading to unpredictable results. Note: all
core modules do support this interface, but some contributed or very
old ones do not.
- bugfix: double-free when ruleset() parser parameters were used
While unlikely, this could cause stability issues even after the
config phase.
- bugfix: output modules with parameters with multiple passing modes
could caused strange behaviour including aborts
This was due to the fact that the action module only preserved and
processed the last set passing mode. Note that this was not a problem
for the plugins provided by the rsyslog git: none of them uses different
passing modes.
Thanks to Tomas Heinrich for providing a very detailled bug report.
- various fixes after coverty scan
These do not address issues seen in practice but those seen by the tool.
Some of them may affect practical deployments.
Thanks to Tomas Heinrich for the patches.
- bugfix imuxsock: "Last message repeated..." was not emitted at shutdown
The "Last message repeated..." notice didn't get printed if rsyslog was
shut down before the repetition was broken.
Thanks to Tomas Heinrich for the patch.
- bugfix: make dist failed when GUARDTIME or LIBGCRYPT feature was disabled
---------------------------------------------------------------------------
Version 7.6.3 [v7.6-stable] 2014-03-27
- add capability to override GnuTLS path in build process
@ -2058,8 +2251,6 @@ Version 6.2.0 [v6-stable], 2012-01-09
- bugfix: omfile returns fatal error code for things that go really wrong
previously, RS_RET_RESUME was returned, which lead to a loop inside the
rule engine as omfile could not really recover.
- bugfix: rsyslogd -v always said 64 atomics were not present
thanks to mono_matsuko for the patch
- bugfix: potential abort after reading invalid X.509 certificate
closes: http://bugzilla.adiscon.com/show_bug.cgi?id=290
Thanks to Tomas Heinrich for the patch

8
INSTALL

@ -1,7 +1,7 @@
Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
@ -309,10 +309,9 @@ causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
an Autoconf bug. Until the bug is fixed you can use this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
@ -368,3 +367,4 @@ operates.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

7
Makefile.am

@ -58,6 +58,7 @@ CLEANFILES = \
endif
EXTRA_DIST = \
README.md \
platform/README \
platform/freebsd/rsyslogd \
platform/slackware/rc.rsyslogd \
@ -72,6 +73,8 @@ EXTRA_DIST = \
rsyslog.service.in
SUBDIRS = compat runtime grammar . plugins/immark plugins/imuxsock plugins/imtcp plugins/imudp plugins/omtesting
# external plugin driver is always enabled (core component)
SUBDIRS += plugins/mmexternal
if ENABLE_RSYSLOGD
SUBDIRS += tools
@ -129,6 +132,10 @@ if ENABLE_PMCISCONAMES
SUBDIRS += plugins/pmcisconames
endif
if ENABLE_PMCISCOIOS
SUBDIRS += plugins/pmciscoios
endif
if ENABLE_PMAIXFORWARDEDFROM
SUBDIRS += plugins/pmaixforwardedfrom
endif

530
Makefile.in

@ -1,8 +1,9 @@
# Makefile.in generated by automake 1.13.4 from Makefile.am.
# Makefile.in generated by automake 1.11.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -17,51 +18,6 @@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@ -101,48 +57,49 @@ sbin_PROGRAMS =
@ENABLE_SMCUSTBINDCDR_TRUE@am__append_14 = plugins/sm_cust_bindcdr
@ENABLE_OMSTDOUT_TRUE@am__append_15 = plugins/omstdout
@ENABLE_PMCISCONAMES_TRUE@am__append_16 = plugins/pmcisconames
@ENABLE_PMAIXFORWARDEDFROM_TRUE@am__append_17 = plugins/pmaixforwardedfrom
@ENABLE_PMSNARE_TRUE@am__append_18 = plugins/pmsnare
@ENABLE_PMLASTMSG_TRUE@am__append_19 = plugins/pmlastmsg
@ENABLE_PMRFC3164SD_TRUE@am__append_20 = plugins/pmrfc3164sd
@ENABLE_OMRULESET_TRUE@am__append_21 = plugins/omruleset
@ENABLE_OMUDPSPOOF_TRUE@am__append_22 = plugins/omudpspoof
@ENABLE_OMMONGODB_TRUE@am__append_23 = plugins/ommongodb
@ENABLE_OMHIREDIS_TRUE@am__append_24 = plugins/omhiredis
@ENABLE_OMZMQ3_TRUE@am__append_25 = plugins/omzmq3
@ENABLE_OMRABBITMQ_TRUE@am__append_26 = plugins/omrabbitmq
@ENABLE_IMZMQ3_TRUE@am__append_27 = plugins/imzmq3
@ENABLE_OMUXSOCK_TRUE@am__append_28 = plugins/omuxsock
@ENABLE_OMHDFS_TRUE@am__append_29 = plugins/omhdfs
@ENABLE_OMJOURNAL_TRUE@am__append_30 = plugins/omjournal
@ENABLE_IMJOURNAL_TRUE@am__append_31 = plugins/imjournal
@ENABLE_ELASTICSEARCH_TRUE@am__append_32 = plugins/omelasticsearch
@ENABLE_MMSNMPTRAPD_TRUE@am__append_33 = plugins/mmsnmptrapd
@ENABLE_IMFILE_TRUE@am__append_34 = plugins/imfile
@ENABLE_IMPTCP_TRUE@am__append_35 = plugins/imptcp
@ENABLE_IMTTCP_TRUE@am__append_36 = plugins/imttcp
@ENABLE_IMDIAG_TRUE@am__append_37 = plugins/imdiag
@ENABLE_MAIL_TRUE@am__append_38 = plugins/ommail
@ENABLE_OMPROG_TRUE@am__append_39 = plugins/omprog
@ENABLE_RFC3195_TRUE@am__append_40 = plugins/im3195
@ENABLE_MMNORMALIZE_TRUE@am__append_41 = plugins/mmnormalize
@ENABLE_MMJSONPARSE_TRUE@am__append_42 = plugins/mmjsonparse
@ENABLE_MMAUDIT_TRUE@am__append_43 = plugins/mmaudit
@ENABLE_MMANON_TRUE@am__append_44 = plugins/mmanon
@ENABLE_MMUTF8FIX_TRUE@am__append_45 = plugins/mmutf8fix
@ENABLE_MMCOUNT_TRUE@am__append_46 = plugins/mmcount
@ENABLE_MMSEQUENCE_TRUE@am__append_47 = plugins/mmsequence
@ENABLE_MMFIELDS_TRUE@am__append_48 = plugins/mmfields
@ENABLE_MMPSTRUCDATA_TRUE@am__append_49 = plugins/mmpstrucdata
@ENABLE_MMRFC5424ADDHMAC_TRUE@am__append_50 = plugins/mmrfc5424addhmac
@ENABLE_ORACLE_TRUE@am__append_51 = plugins/omoracle
@ENABLE_GUI_TRUE@am__append_52 = java
@ENABLE_PMCISCOIOS_TRUE@am__append_17 = plugins/pmciscoios
@ENABLE_PMAIXFORWARDEDFROM_TRUE@am__append_18 = plugins/pmaixforwardedfrom
@ENABLE_PMSNARE_TRUE@am__append_19 = plugins/pmsnare
@ENABLE_PMLASTMSG_TRUE@am__append_20 = plugins/pmlastmsg
@ENABLE_PMRFC3164SD_TRUE@am__append_21 = plugins/pmrfc3164sd
@ENABLE_OMRULESET_TRUE@am__append_22 = plugins/omruleset
@ENABLE_OMUDPSPOOF_TRUE@am__append_23 = plugins/omudpspoof
@ENABLE_OMMONGODB_TRUE@am__append_24 = plugins/ommongodb
@ENABLE_OMHIREDIS_TRUE@am__append_25 = plugins/omhiredis
@ENABLE_OMZMQ3_TRUE@am__append_26 = plugins/omzmq3
@ENABLE_OMRABBITMQ_TRUE@am__append_27 = plugins/omrabbitmq
@ENABLE_IMZMQ3_TRUE@am__append_28 = plugins/imzmq3
@ENABLE_OMUXSOCK_TRUE@am__append_29 = plugins/omuxsock
@ENABLE_OMHDFS_TRUE@am__append_30 = plugins/omhdfs
@ENABLE_OMJOURNAL_TRUE@am__append_31 = plugins/omjournal
@ENABLE_IMJOURNAL_TRUE@am__append_32 = plugins/imjournal
@ENABLE_ELASTICSEARCH_TRUE@am__append_33 = plugins/omelasticsearch
@ENABLE_MMSNMPTRAPD_TRUE@am__append_34 = plugins/mmsnmptrapd
@ENABLE_IMFILE_TRUE@am__append_35 = plugins/imfile
@ENABLE_IMPTCP_TRUE@am__append_36 = plugins/imptcp
@ENABLE_IMTTCP_TRUE@am__append_37 = plugins/imttcp
@ENABLE_IMDIAG_TRUE@am__append_38 = plugins/imdiag
@ENABLE_MAIL_TRUE@am__append_39 = plugins/ommail
@ENABLE_OMPROG_TRUE@am__append_40 = plugins/omprog
@ENABLE_RFC3195_TRUE@am__append_41 = plugins/im3195
@ENABLE_MMNORMALIZE_TRUE@am__append_42 = plugins/mmnormalize
@ENABLE_MMJSONPARSE_TRUE@am__append_43 = plugins/mmjsonparse
@ENABLE_MMAUDIT_TRUE@am__append_44 = plugins/mmaudit
@ENABLE_MMANON_TRUE@am__append_45 = plugins/mmanon
@ENABLE_MMUTF8FIX_TRUE@am__append_46 = plugins/mmutf8fix
@ENABLE_MMCOUNT_TRUE@am__append_47 = plugins/mmcount
@ENABLE_MMSEQUENCE_TRUE@am__append_48 = plugins/mmsequence
@ENABLE_MMFIELDS_TRUE@am__append_49 = plugins/mmfields
@ENABLE_MMPSTRUCDATA_TRUE@am__append_50 = plugins/mmpstrucdata
@ENABLE_MMRFC5424ADDHMAC_TRUE@am__append_51 = plugins/mmrfc5424addhmac
@ENABLE_ORACLE_TRUE@am__append_52 = plugins/omoracle
@ENABLE_GUI_TRUE@am__append_53 = java
subdir = .
DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/configure $(am__configure_deps) \
$(srcdir)/config.h.in depcomp COPYING COPYING.LESSER compile \
config.guess config.sub install-sh missing ylwrap ltmain.sh
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING COPYING.LESSER \
ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
install-sh ltmain.sh missing ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/atomic_operations.m4 \
$(top_srcdir)/m4/atomic_operations_64bit.m4 \
@ -196,7 +153,6 @@ lmgssutil_la_OBJECTS = $(am_lmgssutil_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
lmgssutil_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(lmgssutil_la_LDFLAGS) $(LDFLAGS) -o $@
@ -220,18 +176,6 @@ lmtcpsrv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(lmtcpsrv_la_LDFLAGS) $(LDFLAGS) -o $@
@ENABLE_INET_TRUE@am_lmtcpsrv_la_rpath = -rpath $(pkglibdir)
PROGRAMS = $(sbin_PROGRAMS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@ -244,83 +188,59 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
am__v_CC_0 = @echo " CC " $@;
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
am__v_CCLD_0 = @echo " CCLD " $@;
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
SOURCES = $(lmgssutil_la_SOURCES) $(lmtcpclt_la_SOURCES) \
$(lmtcpsrv_la_SOURCES)
DIST_SOURCES = $(am__lmgssutil_la_SOURCES_DIST) \
$(am__lmtcpclt_la_SOURCES_DIST) \
$(am__lmtcpsrv_la_SOURCES_DIST)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
DATA = $(nodist_systemdsystemunit_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
$(LISP)config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir dist dist-all distcheck
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = compat runtime grammar . plugins/immark \
plugins/imuxsock plugins/imtcp plugins/imudp plugins/omtesting \
tools plugins/imklog plugins/imkmsg plugins/impstats \
plugins/imsolaris plugins/omgssapi plugins/imgssapi \
plugins/omrelp plugins/imrelp plugins/ommysql plugins/omlibdbi \
plugins/ompgsql plugins/omsnmp plugins/sm_cust_bindcdr \
plugins/omstdout plugins/pmcisconames \
plugins/pmaixforwardedfrom plugins/pmsnare plugins/pmlastmsg \
plugins/pmrfc3164sd plugins/omruleset plugins/omudpspoof \
plugins/ommongodb plugins/omhiredis plugins/omzmq3 \
plugins/omrabbitmq plugins/imzmq3 plugins/omuxsock \
plugins/omhdfs plugins/omjournal plugins/imjournal \
plugins/omelasticsearch plugins/mmsnmptrapd plugins/imfile \
plugins/imptcp plugins/imttcp plugins/imdiag plugins/ommail \
plugins/omprog plugins/im3195 plugins/mmnormalize \
plugins/mmjsonparse plugins/mmaudit plugins/mmanon \
plugins/mmutf8fix plugins/mmcount plugins/mmsequence \
plugins/mmfields plugins/mmpstrucdata plugins/mmrfc5424addhmac \
plugins/omoracle java tests
plugins/mmexternal tools plugins/imklog plugins/imkmsg \
plugins/impstats plugins/imsolaris plugins/omgssapi \
plugins/imgssapi plugins/omrelp plugins/imrelp plugins/ommysql \
plugins/omlibdbi plugins/ompgsql plugins/omsnmp \
plugins/sm_cust_bindcdr plugins/omstdout plugins/pmcisconames \
plugins/pmciscoios plugins/pmaixforwardedfrom plugins/pmsnare \
plugins/pmlastmsg plugins/pmrfc3164sd plugins/omruleset \
plugins/omudpspoof plugins/ommongodb plugins/omhiredis \
plugins/omzmq3 plugins/omrabbitmq plugins/imzmq3 \
plugins/omuxsock plugins/omhdfs plugins/omjournal \
plugins/imjournal plugins/omelasticsearch plugins/mmsnmptrapd \
plugins/imfile plugins/imptcp plugins/imttcp plugins/imdiag \
plugins/ommail plugins/omprog plugins/im3195 \
plugins/mmnormalize plugins/mmjsonparse plugins/mmaudit \
plugins/mmanon plugins/mmutf8fix plugins/mmcount \
plugins/mmsequence plugins/mmfields plugins/mmpstrucdata \
plugins/mmrfc5424addhmac plugins/omoracle java tests
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@ -330,7 +250,6 @@ am__remove_distdir = \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@ -358,7 +277,6 @@ am__relativize = \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@ -593,6 +511,7 @@ pkgconfigdir = $(libdir)/pkgconfig
@HAVE_SYSTEMD_TRUE@ rsyslog.service
EXTRA_DIST = \
README.md \
platform/README \
platform/freebsd/rsyslogd \
platform/slackware/rc.rsyslogd \
@ -606,28 +525,30 @@ EXTRA_DIST = \
contrib/gnutls/key.pem \
rsyslog.service.in
# external plugin driver is always enabled (core component)
# tests are added as last element, because tests may need different
# modules that need to be generated first
SUBDIRS = compat runtime grammar . plugins/immark plugins/imuxsock \
plugins/imtcp plugins/imudp plugins/omtesting $(am__append_3) \
$(am__append_4) $(am__append_5) $(am__append_6) \
$(am__append_7) $(am__append_8) $(am__append_9) \
$(am__append_10) $(am__append_11) $(am__append_12) \
$(am__append_13) $(am__append_14) $(am__append_15) \
$(am__append_16) $(am__append_17) $(am__append_18) \
$(am__append_19) $(am__append_20) $(am__append_21) \
$(am__append_22) $(am__append_23) $(am__append_24) \
$(am__append_25) $(am__append_26) $(am__append_27) \
$(am__append_28) $(am__append_29) $(am__append_30) \
$(am__append_31) $(am__append_32) $(am__append_33) \
$(am__append_34) $(am__append_35) $(am__append_36) \
$(am__append_37) $(am__append_38) $(am__append_39) \
$(am__append_40) $(am__append_41) $(am__append_42) \
$(am__append_43) $(am__append_44) $(am__append_45) \
$(am__append_46) $(am__append_47) $(am__append_48) \
$(am__append_49) $(am__append_50) $(am__append_51) \
$(am__append_52) tests
plugins/imtcp plugins/imudp plugins/omtesting \
plugins/mmexternal $(am__append_3) $(am__append_4) \
$(am__append_5) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_9) $(am__append_10) \
$(am__append_11) $(am__append_12) $(am__append_13) \
$(am__append_14) $(am__append_15) $(am__append_16) \
$(am__append_17) $(am__append_18) $(am__append_19) \
$(am__append_20) $(am__append_21) $(am__append_22) \
$(am__append_23) $(am__append_24) $(am__append_25) \
$(am__append_26) $(am__append_27) $(am__append_28) \
$(am__append_29) $(am__append_30) $(am__append_31) \
$(am__append_32) $(am__append_33) $(am__append_34) \
$(am__append_35) $(am__append_36) $(am__append_37) \
$(am__append_38) $(am__append_39) $(am__append_40) \
$(am__append_41) $(am__append_42) $(am__append_43) \
$(am__append_44) $(am__append_45) $(am__append_46) \
$(am__append_47) $(am__append_48) $(am__append_49) \
$(am__append_50) $(am__append_51) $(am__append_52) \
$(am__append_53) tests
# make sure "make distcheck" tries to build all modules. This means that
# a developer must always have an environment where every supporting library
@ -722,9 +643,9 @@ $(srcdir)/config.h.in: $(am__configure_deps)
distclean-hdr:
-rm -f config.h stamp-h1
install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
@list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
@ -732,8 +653,6 @@ install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
else :; fi; \
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
}
@ -749,38 +668,28 @@ uninstall-pkglibLTLIBRARIES:
clean-pkglibLTLIBRARIES:
-test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
@list='$(pkglib_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
@list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
lmgssutil.la: $(lmgssutil_la_OBJECTS) $(lmgssutil_la_DEPENDENCIES) $(EXTRA_lmgssutil_la_DEPENDENCIES)
$(AM_V_CCLD)$(lmgssutil_la_LINK) $(am_lmgssutil_la_rpath) $(lmgssutil_la_OBJECTS) $(lmgssutil_la_LIBADD) $(LIBS)
lmtcpclt.la: $(lmtcpclt_la_OBJECTS) $(lmtcpclt_la_DEPENDENCIES) $(EXTRA_lmtcpclt_la_DEPENDENCIES)
$(AM_V_CCLD)$(lmtcpclt_la_LINK) $(am_lmtcpclt_la_rpath) $(lmtcpclt_la_OBJECTS) $(lmtcpclt_la_LIBADD) $(LIBS)
lmtcpsrv.la: $(lmtcpsrv_la_OBJECTS) $(lmtcpsrv_la_DEPENDENCIES) $(EXTRA_lmtcpsrv_la_DEPENDENCIES)
$(AM_V_CCLD)$(lmtcpsrv_la_LINK) $(am_lmtcpsrv_la_rpath) $(lmtcpsrv_la_OBJECTS) $(lmtcpsrv_la_LIBADD) $(LIBS)
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
while read p p1; do if test -f $$p || test -f $$p1; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@ -801,8 +710,7 @@ uninstall-sbinPROGRAMS:
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
@ -889,11 +797,8 @@ distclean-libtool:
-rm -f libtool config.lt
install-nodist_systemdsystemunitDATA: $(nodist_systemdsystemunit_DATA)
@$(NORMAL_INSTALL)
test -z "$(systemdsystemunitdir)" || $(MKDIR_P) "$(DESTDIR)$(systemdsystemunitdir)"
@list='$(nodist_systemdsystemunit_DATA)'; test -n "$(systemdsystemunitdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(systemdsystemunitdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(systemdsystemunitdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@ -910,25 +815,22 @@ uninstall-nodist_systemdsystemunitDATA:
dir='$(DESTDIR)$(systemdsystemunitdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@ -943,12 +845,57 @@ $(am__recursive_targets):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@ -964,7 +911,12 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@ -976,11 +928,15 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@ -989,31 +945,9 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
$(am__remove_distdir)
@ -1049,10 +983,13 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@ -1081,36 +1018,40 @@ distdir: $(DISTFILES)
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
$(am__remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
$(am__post_remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
@ -1121,6 +1062,8 @@ distcheck: dist
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
@ -1132,9 +1075,9 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_inst
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@ -1166,7 +1109,7 @@ distcheck: dist
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__post_remove_distdir)
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
@ -1310,26 +1253,27 @@ ps-am:
uninstall-am: uninstall-nodist_systemdsystemunitDATA \
uninstall-pkglibLTLIBRARIES uninstall-sbinPROGRAMS
.MAKE: $(am__recursive_targets) all install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
clean-libtool clean-pkglibLTLIBRARIES clean-sbinPROGRAMS \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags distcleancheck \
distdir distuninstallcheck dvi dvi-am html html-am info \
info-am install install-am install-data install-data-am \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-nodist_systemdsystemunitDATA install-pdf \
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
ctags-recursive install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool clean-pkglibLTLIBRARIES clean-sbinPROGRAMS ctags \
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzip \
dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
distclean distclean-compile distclean-generic distclean-hdr \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-nodist_systemdsystemunitDATA install-pdf \
install-pdf-am install-pkglibLTLIBRARIES install-ps \
install-ps-am install-sbinPROGRAMS install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am \
tags tags-recursive uninstall uninstall-am \
uninstall-nodist_systemdsystemunitDATA \
uninstall-pkglibLTLIBRARIES uninstall-sbinPROGRAMS

93
README.md

@ -0,0 +1,93 @@
Rsyslog - what is it?
=====================
Rsyslog is a **r**ocket-fast **sys**tem for **log** processing.
It offers high-performance, great security features and a modular design.
While it started as a regular syslogd, rsyslog has evolved into a kind of swiss
army knife of logging, being able to accept inputs from a wide variety of sources,
transform them, and output to the results to diverse destinations.
Rsyslog can deliver over one million messages per second to local destinations
when limited processing is applied (based on v7, December 2013). Even with
remote destinations and more elaborate processing the performance is usually
considered "stunning".
Mailing List
============
http://lists.adiscon.net/mailman/listinfo/rsyslog
Installing rsyslog
==================
Most distributions carry rsyslog in their repository. So you usually just need
to use the package manager to install it. Note that on non-systemd systems (most
notably Ubuntu), rsyslog usually is already installed.
Project-Provided Packages
----------------------------
Unfortunately, distributions often do not catch up with the pace of rsyslog
development and as such only offer old versions. To solve that problem, we have
created packages for current versions ourselves.
They are available for:
* RPM-based systems: http://www.rsyslog.com/rhelcentos-rpms/
* Ubuntu: http://www.rsyslog.com/ubuntu-repository/
* Debian: http://www.rsyslog.com/debian-repository/
Building from Source
--------------------
Follow the instructions at: http://www.rsyslog.com/doc/build_from_repo.html
Reporting Bugs
==============
Talk to the mailing list if you think something is a bug. Often, it's just a
matter of doing some config trickery.
File bugs at: https://github.com/rsyslog/rsyslog/issues
How to Contribute
=================
Contributions to rsyslog are very welcome. Fork and send us your Pull Requests.
For more information about contributing, see the
[CONTRIBUTING](CONTRIBUTING.md) file.
Note that it is esay to add output plugins using languages like Python or
Perl. So if you need to connect to a system which is not yet supported, you
can easily do so via an external plugin. For more information see the
[README](plugins/external/README.md) file in the external plugin directory.
Documentation
=============
The main rsyslog documentation is available in HTML format. To read
it, point your web browser to ./doc/manual.html. Alternatively,
you can view the documentation for *the most recent rsyslog version*
online at: http://www.rsyslog.com/doc
Project Philosophy
==================
We are an open source project in all aspects and very open to outside feedback
and contribution. We base our work on standards and try to solve all real-world
needs (of course, we occasionally fail tackeling actually all needs ;)). While
the project is primarily sponsored by Adiscon, technical development is
independent from company goals and most decisions are solely based on mailing
list discussion results. There is an active commuity around rsyslog.
There is no such thing like being an official member of the rsyslog team. The
closest to that is being subscribed to the mailing list:
http://lists.adiscon.net/mailman/listinfo/rsyslog
This method of open discussions is modelled after the IETF process, which is
probably the best-known and most successive collaborative standards body.
Project Funding
===============
Rsyslog's main sponsor Adiscon tries to fund rsyslog by selling custom
development and support contracts. Adiscon does NOT license rsyslog under a
commercial license (this is simply impossible for anyone due to rsyslog's
license structure).
Any third party is obviously also free to offer custom development, support
and rsyslog consulting. We gladly merge results of such third-party work into
the main repository (assuming it matches the few essential things written
down in our contribution policy).

603
aclocal.m4

File diff suppressed because it is too large

124
action.c

@ -301,12 +301,13 @@ rsRetVal actionDestruct(action_t * const pThis)
if(pThis->statsobj != NULL)
statsobj.Destruct(&pThis->statsobj);
if(pThis->pMod != NULL)
if(pThis->pModData != NULL)
pThis->pMod->freeInstance(pThis->pModData);
pthread_mutex_destroy(&pThis->mutAction);
d_free(pThis->pszName);
d_free(pThis->ppTpl);
d_free(pThis->peParamPassing);
finalize_it:
d_free(pThis);
@ -387,14 +388,21 @@ actionConstructFinalize(action_t *__restrict__ const pThis, struct nvlst *lst)
/* cache transactional attribute */
pThis->isTransactional = pThis->pMod->mod.om.supportsTX;
if(pThis->isTransactional && pThis->eParamPassing != ACT_STRING_PASSING) {
errmsg.LogError(0, RS_RET_INVLD_OMOD, "action '%s'(%d) is transactional but "
"uses invalid paramter passing mode -- disabling "
"action. This is probably caused by a pre-v7 "
"output module that needs upgrade.",
pThis->pszName, pThis->iActionNbr);
actionDisable(pThis);
ABORT_FINALIZE(RS_RET_INVLD_OMOD);
if(pThis->isTransactional) {
int i;
for(i = 0 ; i < pThis->iNumTpls ; ++i) {
if(pThis->peParamPassing[i] != ACT_STRING_PASSING) {
errmsg.LogError(0, RS_RET_INVLD_OMOD, "action '%s'(%d) is transactional but "
"parameter %d "
"uses invalid paramter passing mode -- disabling "
"action. This is probably caused by a pre-v7 "
"output module that needs upgrade.",
pThis->pszName, pThis->iActionNbr, i);
actionDisable(pThis);
ABORT_FINALIZE(RS_RET_INVLD_OMOD);
}
}
}
@ -506,7 +514,7 @@ actionConstructFinalize(action_t *__restrict__ const pThis, struct nvlst *lst)
DBGPRINTF("Action %p: queue %p created\n", pThis, pThis->pQueue);
if(pThis->eParamPassing == ACT_MSG_PASSING && pThis->pQueue->qType != QUEUETYPE_DIRECT) {
if(pThis->bUsesMsgPassingMode && pThis->pQueue->qType != QUEUETYPE_DIRECT) {
parser_warnmsg("module %s with message passing mode uses "
"non-direct queue. This most probably leads to undesired "
"results", (char*)modGetName(pThis->pMod));
@ -906,7 +914,7 @@ prepareDoActionParams(action_t * __restrict__ const pAction,
}
} else {
for(i = 0 ; i < pAction->iNumTpls ; ++i) {
switch(pAction->eParamPassing) {
switch(pAction->peParamPassing[i]) {
case ACT_STRING_PASSING:
CHKiRet(tplToString(pAction->ppTpl[i], pMsg,
&(pWrkrInfo->p.nontx.actParams[i]),
@ -923,10 +931,8 @@ prepareDoActionParams(action_t * __restrict__ const pAction,
CHKiRet(tplToJSON(pAction->ppTpl[i], pMsg, &json, ttNow));
pWrkrInfo->p.nontx.actParams[i].param = (void*) json;
break;
default:dbgprintf("software bug/error: unknown pAction->eParamPassing "
"%d in prepareDoActionParams\n",
(int) pAction->eParamPassing);
assert(0); /* software bug if this happens! */
default:dbgprintf("software bug/error: unknown pAction->peParamPassing[%d] %d in prepareDoActionParams\n",
i, (int) pAction->peParamPassing[i]);
break;
}
}
@ -945,14 +951,11 @@ releaseDoActionParams(action_t *__restrict__ const pAction, wti_t *__restrict__
actWrkrInfo_t *__restrict__ pWrkrInfo;
uchar ***ppMsgs;
if(pAction->eParamPassing == ACT_STRING_PASSING || pAction->eParamPassing == ACT_MSG_PASSING)
goto done; /* we need to do nothing with these types! */
pWrkrInfo = &(pWti->actWrkrInfo[pAction->iActionNbr]);
switch(pAction->eParamPassing) {
case ACT_ARRAY_PASSING:
ppMsgs = (uchar***) pWrkrInfo->p.nontx.actParams[0].param;
for(j = 0 ; j < pAction->iNumTpls ; ++j) {
for(j = 0 ; j < pAction->iNumTpls ; ++j) {
switch(pAction->peParamPassing[j]) {
case ACT_ARRAY_PASSING:
ppMsgs = (uchar***) pWrkrInfo->p.nontx.actParams[0].param;
if(((uchar**)ppMsgs)[j] != NULL) {
jArr = 0;
while(ppMsgs[j][jArr] != NULL) {
@ -963,23 +966,20 @@ releaseDoActionParams(action_t *__restrict__ const pAction, wti_t *__restrict__
free(((uchar**)ppMsgs)[j]);
((uchar**)ppMsgs)[j] = NULL;
}
}
break;
case ACT_JSON_PASSING:
for(j = 0 ; j < pAction->iNumTpls ; ++j) {
break;
case ACT_JSON_PASSING:
json_object_put((struct json_object*)
pWrkrInfo->p.nontx.actParams[j].param);
pWrkrInfo->p.nontx.actParams[j].param = NULL;
break;
case ACT_STRING_PASSING:
case ACT_MSG_PASSING:
/* no need to do anything with these */
break;
}
break;
case ACT_STRING_PASSING:
/* strings are destructed when the worker terminates */
case ACT_MSG_PASSING:
/* can never happen, just to keep compiler happy! */
break;
}
done: return;
return;
}
/* This is used in resume processing. We only finally know that a resume
@ -1288,7 +1288,8 @@ processMsgMain(action_t *__restrict__ const pAction,
iRet = actionProcessMessage(pAction,
pWti->actWrkrInfo[pAction->iActionNbr].p.nontx.actParams,
pWti);
releaseDoActionParams(pAction, pWti);
if(pAction->bNeedReleaseBatch)
releaseDoActionParams(pAction, pWti);
finalize_it:
if(iRet == RS_RET_OK) {
if(pWti->execState.bDoAutoCommit)
@ -1688,43 +1689,50 @@ addAction(action_t **ppAction, modInfo_t *pMod, void *pModData,
* the discard action, which does not require a string. -- rgerhards, 2007-07-30
*/
if(pAction->iNumTpls > 0) {
/* we first need to create the template pointer array */
/* we first need to create the template arrays */
CHKmalloc(pAction->ppTpl = (struct template **)calloc(pAction->iNumTpls, sizeof(struct template *)));
CHKmalloc(pAction->peParamPassing = (paramPassing_t*)calloc(pAction->iNumTpls, sizeof(paramPassing_t)));
}
pAction->bUsesMsgPassingMode = 0;
pAction->bNeedReleaseBatch = 0;
for(i = 0 ; i < pAction->iNumTpls ; ++i) {
CHKiRet(OMSRgetEntry(pOMSR, i, &pTplName, &iTplOpts));
/* Ok, we got everything, so it now is time to look up the template
* (Hint: templates MUST be defined before they are used!)
*/
if( !(iTplOpts & OMSR_TPL_AS_MSG)
&& (pAction->ppTpl[i] =
tplFind(ourConf, (char*)pTplName, strlen((char*)pTplName))) == NULL) {
snprintf(errMsg, sizeof(errMsg) / sizeof(char),
" Could not find template '%s' - action disabled",
pTplName);
errno = 0;
errmsg.LogError(0, RS_RET_NOT_FOUND, "%s", errMsg);
ABORT_FINALIZE(RS_RET_NOT_FOUND);
}
/* check required template options */
if( (iTplOpts & OMSR_RQD_TPL_OPT_SQL)
&& (pAction->ppTpl[i]->optFormatEscape == 0)) {
errno = 0;
errmsg.LogError(0, RS_RET_RQD_TPLOPT_MISSING, "Action disabled. To use this action, you have to specify "
"the SQL or stdSQL option in your template!\n");
ABORT_FINALIZE(RS_RET_RQD_TPLOPT_MISSING);
if(!(iTplOpts & OMSR_TPL_AS_MSG)) {
if((pAction->ppTpl[i] =
tplFind(ourConf, (char*)pTplName, strlen((char*)pTplName))) == NULL) {
snprintf(errMsg, sizeof(errMsg) / sizeof(char),
" Could not find template '%s' - action disabled",
pTplName);
errno = 0;
errmsg.LogError(0, RS_RET_NOT_FOUND, "%s", errMsg);
ABORT_FINALIZE(RS_RET_NOT_FOUND);
}
/* check required template options */
if( (iTplOpts & OMSR_RQD_TPL_OPT_SQL)
&& (pAction->ppTpl[i]->optFormatEscape == 0)) {
errno = 0;
errmsg.LogError(0, RS_RET_RQD_TPLOPT_MISSING, "Action disabled. To use this action, you have to specify "
"the SQL or stdSQL option in your template!\n");
ABORT_FINALIZE(RS_RET_RQD_TPLOPT_MISSING);
}
}
/* set parameter-passing mode */
if(iTplOpts & OMSR_TPL_AS_ARRAY) {
pAction->eParamPassing = ACT_ARRAY_PASSING;
pAction->peParamPassing[i] = ACT_ARRAY_PASSING;
pAction->bNeedReleaseBatch = 1;
} else if(iTplOpts & OMSR_TPL_AS_MSG) {
pAction->eParamPassing = ACT_MSG_PASSING;
pAction->peParamPassing[i] = ACT_MSG_PASSING;
pAction->bUsesMsgPassingMode = 1;
} else if(iTplOpts & OMSR_TPL_AS_JSON) {
pAction->eParamPassing = ACT_JSON_PASSING;
pAction->peParamPassing[i] = ACT_JSON_PASSING;
pAction->bNeedReleaseBatch = 1;
} else {
pAction->eParamPassing = ACT_STRING_PASSING;
pAction->peParamPassing[i] = ACT_STRING_PASSING;
}
DBGPRINTF("template: '%s' assigned\n", pTplName);
@ -1816,8 +1824,10 @@ actionNewInst(struct nvlst *lst, action_t **ppAction)
/* check if the module is compatible with select features
* (currently no such features exist) */