diff options
38 files changed, 1899 insertions, 1009 deletions
@@ -1,4 +1,31 @@ ---------------------------------------------------------------------------- +Version 7.2.6 [v7-stable] 2013-03-05 +- slightly improved config parser error messages when invalid escapes happen +- bugfix: include files got included in the wrong order + closes: http://bugzilla.adiscon.com/show_bug.cgi?id=411 + This happens if an $IncludeConfig directive was done on multiple + files (e.g. the distro default of $IncludeConfig /etc/rsyslog.d/*.conf). + In that case, the order of include file processing is reversed, which + could lead to all sorts of problems. + Thanks to Nathan Stratton Treadway for his great analysis of the problem, + which made bug fixing really easy. +- bugfix: omelasticsearch failed when authentication data was provided + ... at least in most cases it emitted an error message: + "snprintf failed when trying to build auth string" + Thanks to Joerg Heinemann for alerting us. + closes: http://bugzilla.adiscon.com/show_bug.cgi?id=404 +- bugfix: some property-based filter were incorrectly parsed + This usually lead to a syntax error on startup and rsyslogd not actually + starting up. The problem was the regex, which did not care for double + quote characters to follow in the action part - unfortunately something + that can frequently happen with v6+ format. An example: + :programname, isequal, "as" {action(type="omfile" ...) } + Here, the part + :programname, isequal, "as" {action(type="omfile" + was treated as the property filter, and the rest as action part. + Obviously, this did not work out. Unfortunately, such situations usually + resulted in very hard to understand error messages. +---------------------------------------------------------------------------- Version 7.2.5 [v7-stable] 2013-01-08 - build system cleanup (thanks to Michael Biebl for this!) - bugfix: omelasticsearch did not properly compile on some platforms @@ -1007,6 +1034,8 @@ Version 5.10.2 [V5-STABLE], 201?-??-?? Thanks to Marius Tomaschewski for the bug report and the patch idea. - bugfix: invalid DST handling under Solaris Thanks to Scott Severtson for the patch. +- bugfix: invalid decrement in pm5424 could lead to log truncation + Thanks to Tomas Heinrich for the patch. - bugfix[kind of]: omudpspoof discarded messages >1472 bytes (MTU size) it now truncates these message, but ensures they are sent. Note that 7.2.5+ will switch to fragmented UDP messages instead (up to 64K) diff --git a/Makefile.am b/Makefile.am index cd1d22b..f3e9cd7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,10 +58,11 @@ CLEANFILES = \ endif EXTRA_DIST = \ - freebsd/rsyslogd \ - slackware/rc.rsyslogd \ + platform/README \ + platform/freebsd/rsyslogd \ + platform/slackware/rc.rsyslogd \ + platform/redhat/rsyslog.conf \ contrib/README \ - rsyslog.conf \ COPYING \ COPYING.LESSER \ COPYING.ASL20 \ @@ -70,7 +71,7 @@ EXTRA_DIST = \ contrib/gnutls/key.pem \ rsyslog.service.in -SUBDIRS = doc runtime grammar . plugins/immark plugins/imuxsock plugins/imtcp plugins/imudp plugins/omtesting +SUBDIRS = doc runtime grammar compat . plugins/immark plugins/imuxsock plugins/imtcp plugins/imudp plugins/omtesting if ENABLE_RSYSLOGD SUBDIRS += tools diff --git a/Makefile.in b/Makefile.in index a67da3e..c9bc5ea 100644 --- a/Makefile.in +++ b/Makefile.in @@ -205,9 +205,9 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags -DIST_SUBDIRS = doc runtime grammar . plugins/immark plugins/imuxsock \ - plugins/imtcp plugins/imudp plugins/omtesting tools \ - plugins/imklog plugins/imkmsg plugins/impstats \ +DIST_SUBDIRS = doc runtime grammar compat . 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 \ @@ -473,10 +473,11 @@ pkgconfigdir = $(libdir)/pkgconfig @HAVE_SYSTEMD_TRUE@ rsyslog.service EXTRA_DIST = \ - freebsd/rsyslogd \ - slackware/rc.rsyslogd \ + platform/README \ + platform/freebsd/rsyslogd \ + platform/slackware/rc.rsyslogd \ + platform/redhat/rsyslog.conf \ contrib/README \ - rsyslog.conf \ COPYING \ COPYING.LESSER \ COPYING.ASL20 \ @@ -488,7 +489,7 @@ EXTRA_DIST = \ # tests are added as last element, because tests may need different # modules that need to be generated first -SUBDIRS = doc runtime grammar . plugins/immark plugins/imuxsock \ +SUBDIRS = doc runtime grammar compat . 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) \ diff --git a/compat/Makefile.am b/compat/Makefile.am new file mode 100644 index 0000000..635ad28 --- /dev/null +++ b/compat/Makefile.am @@ -0,0 +1,6 @@ +pkglib_LTLIBRARIES = compat.la + +compat_la_SOURCES = getifaddrs.c +compat_la_CPPFLAGS = -I$(top_srcdir) $(PTHREADS_CFLAGS) $(RSRT_CFLAGS) +compat_la_LDFLAGS = -module -avoid-version +compat_la_LIBADD = $(IMUDP_LIBS) diff --git a/compat/Makefile.in b/compat/Makefile.in new file mode 100644 index 0000000..aeba974 --- /dev/null +++ b/compat/Makefile.in @@ -0,0 +1,613 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = compat +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/atomic_operations.m4 \ + $(top_srcdir)/m4/atomic_operations_64bit.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(pkglibdir)" +LTLIBRARIES = $(pkglib_LTLIBRARIES) +am__DEPENDENCIES_1 = +compat_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_compat_la_OBJECTS = compat_la-getifaddrs.lo +compat_la_OBJECTS = $(am_compat_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +compat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(compat_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +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_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(compat_la_SOURCES) +DIST_SOURCES = $(compat_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURL_CFLAGS = @CURL_CFLAGS@ +CURL_LIBS = @CURL_LIBS@ +CYGPATH_W = @CYGPATH_W@ +CZMQ_CFLAGS = @CZMQ_CFLAGS@ +CZMQ_LIBS = @CZMQ_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ +GNUTLS_LIBS = @GNUTLS_LIBS@ +GREP = @GREP@ +GSS_LIBS = @GSS_LIBS@ +HAVE_MYSQL_CONFIG = @HAVE_MYSQL_CONFIG@ +HAVE_ORACLE_CONFIG = @HAVE_ORACLE_CONFIG@ +HAVE_PGSQL_CONFIG = @HAVE_PGSQL_CONFIG@ +HIREDIS_CFLAGS = @HIREDIS_CFLAGS@ +HIREDIS_LIBS = @HIREDIS_LIBS@ +IMUDP_LIBS = @IMUDP_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JSON_C_CFLAGS = @JSON_C_CFLAGS@ +JSON_C_LIBS = @JSON_C_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBDBI_CFLAGS = @LIBDBI_CFLAGS@ +LIBDBI_LIBS = @LIBDBI_LIBS@ +LIBEE_CFLAGS = @LIBEE_CFLAGS@ +LIBEE_LIBS = @LIBEE_LIBS@ +LIBESTR_CFLAGS = @LIBESTR_CFLAGS@ +LIBESTR_LIBS = @LIBESTR_LIBS@ +LIBLOGGING_CFLAGS = @LIBLOGGING_CFLAGS@ +LIBLOGGING_LIBS = @LIBLOGGING_LIBS@ +LIBLOGNORM_CFLAGS = @LIBLOGNORM_CFLAGS@ +LIBLOGNORM_LIBS = @LIBLOGNORM_LIBS@ +LIBM = @LIBM@ +LIBMONGO_CLIENT_CFLAGS = @LIBMONGO_CLIENT_CFLAGS@ +LIBMONGO_CLIENT_LIBS = @LIBMONGO_CLIENT_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUUID_CFLAGS = @LIBUUID_CFLAGS@ +LIBUUID_LIBS = @LIBUUID_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MYSQL_CFLAGS = @MYSQL_CFLAGS@ +MYSQL_LIBS = @MYSQL_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +ORACLE_CFLAGS = @ORACLE_CFLAGS@ +ORACLE_LIBS = @ORACLE_LIBS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PGSQL_CFLAGS = @PGSQL_CFLAGS@ +PGSQL_LIBS = @PGSQL_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PTHREADS_CFLAGS = @PTHREADS_CFLAGS@ +PTHREADS_LIBS = @PTHREADS_LIBS@ +RANLIB = @RANLIB@ +RELP_CFLAGS = @RELP_CFLAGS@ +RELP_LIBS = @RELP_LIBS@ +RSRT_CFLAGS = @RSRT_CFLAGS@ +RSRT_CFLAGS1 = @RSRT_CFLAGS1@ +RSRT_LIBS = @RSRT_LIBS@ +RSRT_LIBS1 = @RSRT_LIBS1@ +RT_LIBS = @RT_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNMP_CFLAGS = @SNMP_CFLAGS@ +SNMP_LIBS = @SNMP_LIBS@ +SOL_LIBS = @SOL_LIBS@ +STRIP = @STRIP@ +UDPSPOOF_CFLAGS = @UDPSPOOF_CFLAGS@ +UDPSPOOF_LIBS = @UDPSPOOF_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +have_valgrind = @have_valgrind@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +moddirs = @moddirs@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +systemdsystemunitdir = @systemdsystemunitdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +pkglib_LTLIBRARIES = compat.la +compat_la_SOURCES = getifaddrs.c +compat_la_CPPFLAGS = -I$(top_srcdir) $(PTHREADS_CFLAGS) $(RSRT_CFLAGS) +compat_la_LDFLAGS = -module -avoid-version +compat_la_LIBADD = $(IMUDP_LIBS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu compat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu compat/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +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 \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + 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)"; \ + } + +uninstall-pkglibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ + done + +clean-pkglibLTLIBRARIES: + -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) + @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 +compat.la: $(compat_la_OBJECTS) $(compat_la_DEPENDENCIES) + $(AM_V_CCLD)$(compat_la_LINK) -rpath $(pkglibdir) $(compat_la_OBJECTS) $(compat_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compat_la-getifaddrs.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +compat_la-getifaddrs.lo: getifaddrs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(compat_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT compat_la-getifaddrs.lo -MD -MP -MF $(DEPDIR)/compat_la-getifaddrs.Tpo -c -o compat_la-getifaddrs.lo `test -f 'getifaddrs.c' || echo '$(srcdir)/'`getifaddrs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/compat_la-getifaddrs.Tpo $(DEPDIR)/compat_la-getifaddrs.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='getifaddrs.c' object='compat_la-getifaddrs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(compat_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o compat_la-getifaddrs.lo `test -f 'getifaddrs.c' || echo '$(srcdir)/'`getifaddrs.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + 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; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(pkglibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-pkglibLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkglibLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pkglibLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir 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-pdf install-pdf-am install-pkglibLTLIBRARIES \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-pkglibLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/compat/getifaddrs.c b/compat/getifaddrs.c new file mode 100755 index 0000000..8acd484 --- /dev/null +++ b/compat/getifaddrs.c @@ -0,0 +1,275 @@ +#include "config.h" +#ifndef HAVE_GETIFADDRS +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + */ + +#include <netdb.h> +#include <nss_dbdefs.h> +#include <netinet/in.h> +#include <sys/socket.h> +#include <string.h> +#include <stdio.h> +#include <sys/sockio.h> +#include <sys/types.h> +#include <stdlib.h> +#include <net/if.h> +#include <ifaddrs.h> +#include <libsocket_priv.h> + +/* + * Create a linked list of `struct ifaddrs' structures, one for each + * address that is UP. If successful, store the list in *ifap and + * return 0. On errors, return -1 and set `errno'. + * + * The storage returned in *ifap is allocated dynamically and can + * only be properly freed by passing it to `freeifaddrs'. + */ +int +getifaddrs(struct ifaddrs **ifap) +{ + int err; + char *cp; + struct ifaddrs *curr; + + if (ifap == NULL) { + errno = EINVAL; + return (-1); + } + *ifap = NULL; + err = getallifaddrs(AF_UNSPEC, ifap, LIFC_ENABLED); + if (err == 0) { + for (curr = *ifap; curr != NULL; curr = curr->ifa_next) { + if ((cp = strchr(curr->ifa_name, ':')) != NULL) + *cp = '\0'; + } + } + return (err); +} + +void +freeifaddrs(struct ifaddrs *ifa) +{ + struct ifaddrs *curr; + + while (ifa != NULL) { + curr = ifa; + ifa = ifa->ifa_next; + free(curr->ifa_name); + free(curr->ifa_addr); + free(curr->ifa_netmask); + free(curr->ifa_dstaddr); + free(curr); + } +} + +/* + * Returns all addresses configured on the system. If flags contain + * LIFC_ENABLED, only the addresses that are UP are returned. + * Address list that is returned by this function must be freed + * using freeifaddrs(). + */ +int +getallifaddrs(sa_family_t af, struct ifaddrs **ifap, int64_t flags) +{ + struct lifreq *buf = NULL; + struct lifreq *lifrp; + struct lifreq lifrl; + int ret; + int s, n, numifs; + struct ifaddrs *curr, *prev; + sa_family_t lifr_af; + int sock4; + int sock6; + int err; + + if ((sock4 = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + return (-1); + if ((sock6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { + err = errno; + close(sock4); + errno = err; + return (-1); + } + +retry: + /* Get all interfaces from SIOCGLIFCONF */ + ret = getallifs(sock4, af, &buf, &numifs, (flags & ~LIFC_ENABLED)); + if (ret != 0) + goto fail; + + /* + * Loop through the interfaces obtained from SIOCGLIFCOMF + * and retrieve the addresses, netmask and flags. + */ + prev = NULL; + lifrp = buf; + *ifap = NULL; + for (n = 0; n < numifs; n++, lifrp++) { + + /* Prepare for the ioctl call */ + (void) strncpy(lifrl.lifr_name, lifrp->lifr_name, + sizeof (lifrl.lifr_name)); + lifr_af = lifrp->lifr_addr.ss_family; + if (af != AF_UNSPEC && lifr_af != af) + continue; + + s = (lifr_af == AF_INET ? sock4 : sock6); + + if (ioctl(s, SIOCGLIFFLAGS, (caddr_t)&lifrl) < 0) + goto fail; + if ((flags & LIFC_ENABLED) && !(lifrl.lifr_flags & IFF_UP)) + continue; + + /* + * Allocate the current list node. Each node contains data + * for one ifaddrs structure. + */ + curr = calloc(1, sizeof (struct ifaddrs)); + if (curr == NULL) + goto fail; + + if (prev != NULL) { + prev->ifa_next = curr; + } else { + /* First node in the linked list */ + *ifap = curr; + } + prev = curr; + + curr->ifa_flags = lifrl.lifr_flags; + if ((curr->ifa_name = strdup(lifrp->lifr_name)) == NULL) + goto fail; + + curr->ifa_addr = malloc(sizeof (struct sockaddr_storage)); + if (curr->ifa_addr == NULL) + goto fail; + (void) memcpy(curr->ifa_addr, &lifrp->lifr_addr, + sizeof (struct sockaddr_storage)); + + /* Get the netmask */ + if (ioctl(s, SIOCGLIFNETMASK, (caddr_t)&lifrl) < 0) + goto fail; + curr->ifa_netmask = malloc(sizeof (struct sockaddr_storage)); + if (curr->ifa_netmask == NULL) + goto fail; + (void) memcpy(curr->ifa_netmask, &lifrl.lifr_addr, + sizeof (struct sockaddr_storage)); + + /* Get the destination for a pt-pt interface */ + if (curr->ifa_flags & IFF_POINTOPOINT) { + if (ioctl(s, SIOCGLIFDSTADDR, (caddr_t)&lifrl) < 0) + goto fail; + curr->ifa_dstaddr = malloc( + sizeof (struct sockaddr_storage)); + if (curr->ifa_dstaddr == NULL) + goto fail; + (void) memcpy(curr->ifa_dstaddr, &lifrl.lifr_addr, + sizeof (struct sockaddr_storage)); + } else if (curr->ifa_flags & IFF_BROADCAST) { + if (ioctl(s, SIOCGLIFBRDADDR, (caddr_t)&lifrl) < 0) + goto fail; + curr->ifa_broadaddr = malloc( + sizeof (struct sockaddr_storage)); + if (curr->ifa_broadaddr == NULL) + goto fail; + (void) memcpy(curr->ifa_broadaddr, &lifrl.lifr_addr, + sizeof (struct sockaddr_storage)); + } + + } + free(buf); + close(sock4); + close(sock6); + return (0); +fail: + err = errno; + free(buf); + freeifaddrs(*ifap); + *ifap = NULL; + if (err == ENXIO) + goto retry; + close(sock4); + close(sock6); + errno = err; + return (-1); +} + +/* + * Do a SIOCGLIFCONF and store all the interfaces in `buf'. + */ +int +getallifs(int s, sa_family_t af, struct lifreq **lifr, int *numifs, + int64_t lifc_flags) +{ + struct lifnum lifn; + struct lifconf lifc; + size_t bufsize; + char *tmp; + caddr_t *buf = (caddr_t *)lifr; + + lifn.lifn_family = af; + lifn.lifn_flags = lifc_flags; + + *buf = NULL; +retry: + if (ioctl(s, SIOCGLIFNUM, &lifn) < 0) + goto fail; + + /* + * When calculating the buffer size needed, add a small number + * of interfaces to those we counted. We do this to capture + * the interface status of potential interfaces which may have + * been plumbed between the SIOCGLIFNUM and the SIOCGLIFCONF. + */ + bufsize = (lifn.lifn_count + 4) * sizeof (struct lifreq); + + if ((tmp = realloc(*buf, bufsize)) == NULL) + goto fail; + + *buf = tmp; + lifc.lifc_family = af; + lifc.lifc_flags = lifc_flags; + lifc.lifc_len = bufsize; + lifc.lifc_buf = *buf; + if (ioctl(s, SIOCGLIFCONF, (char *)&lifc) < 0) + goto fail; + + *numifs = lifc.lifc_len / sizeof (struct lifreq); + if (*numifs >= (lifn.lifn_count + 4)) { + /* + * If every entry was filled, there are probably + * more interfaces than (lifn.lifn_count + 4). + * Redo the ioctls SIOCGLIFNUM and SIOCGLIFCONF to + * get all the interfaces. + */ + goto retry; + } + return (0); +fail: + free(*buf); + *buf = NULL; + return (-1); +} +#endif /* HAVE_GETIFADDRS */ diff --git a/config.h.in b/config.h.in index fa305e7..0e9ecf0 100644 --- a/config.h.in +++ b/config.h.in @@ -79,6 +79,9 @@ /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME +/* Define to 1 if you have the `getifaddrs' function. */ +#undef HAVE_GETIFADDRS + /* Define to 1 if you have the `getline' function. */ #undef HAVE_GETLINE @@ -235,8 +238,8 @@ /* Define to 1 if `sa_len' is a member of `struct sockaddr'. */ #undef HAVE_STRUCT_SOCKADDR_SA_LEN -/* Define to 1 if you have the `sysinfo' function. */ -#undef HAVE_SYSINFO +/* set define */ +#undef HAVE_SYSINFO_UPTIME /* Define to 1 if you have the <syslog.h> header file. */ #undef HAVE_SYSLOG_H @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for rsyslog 7.2.5. +# Generated by GNU Autoconf 2.67 for rsyslog 7.2.6. # # Report bugs to <rsyslog@lists.adiscon.com>. # @@ -701,8 +701,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='rsyslog' PACKAGE_TARNAME='rsyslog' -PACKAGE_VERSION='7.2.5' -PACKAGE_STRING='rsyslog 7.2.5' +PACKAGE_VERSION='7.2.6' +PACKAGE_STRING='rsyslog 7.2.6' PACKAGE_BUGREPORT='rsyslog@lists.adiscon.com' PACKAGE_URL='' @@ -1684,7 +1684,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 7.2.5 to adapt to many kinds of systems. +\`configure' configures rsyslog 7.2.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1754,7 +1754,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rsyslog 7.2.5:";; + short | recursive ) echo "Configuration of rsyslog 7.2.6:";; esac cat <<\_ACEOF @@ -1973,7 +1973,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rsyslog configure 7.2.5 +rsyslog configure 7.2.6 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2552,7 +2552,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 7.2.5, which was +It was created by rsyslog $as_me 7.2.6, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -3367,7 +3367,7 @@ fi # Define the identity of the package. PACKAGE='rsyslog' - VERSION='7.2.5' + VERSION='7.2.6' cat >>confdefs.h <<_ACEOF @@ -14066,7 +14066,7 @@ fi done -for ac_func in flock basename alarm clock_gettime gethostbyname gethostname gettimeofday localtime_r memset mkdir regcomp select setid socket strcasecmp strchr strdup strerror strndup strnlen strrchr strstr strtol strtoul sysinfo uname ttyname_r getline malloc_trim prctl epoll_create epoll_create1 fdatasync lseek64 +for ac_func in flock basename alarm clock_gettime getifaddrs gethostbyname gethostname gettimeofday localtime_r memset mkdir regcomp select setid socket strcasecmp strchr strdup strerror strndup strnlen strrchr strstr strtol strtoul uname ttyname_r getline malloc_trim prctl epoll_create epoll_create1 fdatasync lseek64 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -14099,6 +14099,14 @@ $as_echo "#define HAVE_SO_TIMESTAMP 1" >>confdefs.h fi +ac_fn_c_check_member "$LINENO" "struct sysinfo" "uptime" "ac_cv_member_struct_sysinfo_uptime" "#include <sys/sysinfo.h> +" +if test "x$ac_cv_member_struct_sysinfo_uptime" = x""yes; then : + +$as_echo "#define HAVE_SYSINFO_UPTIME 1" >>confdefs.h + +fi + # Check for MAXHOSTNAMELEN { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAXHOSTNAMELEN" >&5 @@ -18162,7 +18170,7 @@ fi # END HIREDIS SUPPORT -ac_config_files="$ac_config_files Makefile runtime/Makefile grammar/Makefile tools/Makefile doc/Makefile plugins/imudp/Makefile plugins/imtcp/Makefile plugins/im3195/Makefile plugins/imgssapi/Makefile plugins/imuxsock/Makefile plugins/immark/Makefile plugins/imklog/Makefile plugins/imkmsg/Makefile plugins/omhdfs/Makefile plugins/omprog/Makefile plugins/omstdout/Makefile plugins/pmrfc3164sd/Makefile plugins/pmlastmsg/Makefile plugins/pmcisconames/Makefile plugins/pmsnare/Makefile plugins/pmaixforwardedfrom/Makefile plugins/omruleset/Makefile plugins/omuxsock/Makefile plugins/imfile/Makefile plugins/imsolaris/Makefile plugins/imptcp/Makefile plugins/imttcp/Makefile plugins/impstats/Makefile plugins/imrelp/Makefile plugins/imdiag/Makefile plugins/imzmq3/Makefile plugins/omtesting/Makefile plugins/omgssapi/Makefile plugins/ommysql/Makefile plugins/ompgsql/Makefile plugins/omrelp/Makefile plugins/omlibdbi/Makefile plugins/ommail/Makefile plugins/omsnmp/Makefile plugins/omoracle/Makefile plugins/omudpspoof/Makefile plugins/ommongodb/Makefile plugins/omhiredis/Makefile plugins/omzmq3/Makefile plugins/mmnormalize/Makefile plugins/mmjsonparse/Makefile plugins/mmaudit/Makefile plugins/omelasticsearch/Makefile plugins/sm_cust_bindcdr/Makefile plugins/mmsnmptrapd/Makefile java/Makefile tests/Makefile" +ac_config_files="$ac_config_files Makefile runtime/Makefile compat/Makefile grammar/Makefile tools/Makefile doc/Makefile plugins/imudp/Makefile plugins/imtcp/Makefile plugins/im3195/Makefile plugins/imgssapi/Makefile plugins/imuxsock/Makefile plugins/immark/Makefile plugins/imklog/Makefile plugins/imkmsg/Makefile plugins/omhdfs/Makefile plugins/omprog/Makefile plugins/omstdout/Makefile plugins/pmrfc3164sd/Makefile plugins/pmlastmsg/Makefile plugins/pmcisconames/Makefile plugins/pmsnare/Makefile plugins/pmaixforwardedfrom/Makefile plugins/omruleset/Makefile plugins/omuxsock/Makefile plugins/imfile/Makefile plugins/imsolaris/Makefile plugins/imptcp/Makefile plugins/imttcp/Makefile plugins/impstats/Makefile plugins/imrelp/Makefile plugins/imdiag/Makefile plugins/imzmq3/Makefile plugins/omtesting/Makefile plugins/omgssapi/Makefile plugins/ommysql/Makefile plugins/ompgsql/Makefile plugins/omrelp/Makefile plugins/omlibdbi/Makefile plugins/ommail/Makefile plugins/omsnmp/Makefile plugins/omoracle/Makefile plugins/omudpspoof/Makefile plugins/ommongodb/Makefile plugins/omhiredis/Makefile plugins/omzmq3/Makefile plugins/mmnormalize/Makefile plugins/mmjsonparse/Makefile plugins/mmaudit/Makefile plugins/omelasticsearch/Makefile plugins/sm_cust_bindcdr/Makefile plugins/mmsnmptrapd/Makefile java/Makefile tests/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -18918,7 +18926,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=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 7.2.5, which was +This file was extended by rsyslog $as_me 7.2.6, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18984,7 +18992,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -rsyslog config.status 7.2.5 +rsyslog config.status 7.2.6 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" @@ -19373,6 +19381,7 @@ do "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "runtime/Makefile") CONFIG_FILES="$CONFIG_FILES runtime/Makefile" ;; + "compat/Makefile") CONFIG_FILES="$CONFIG_FILES compat/Makefile" ;; "grammar/Makefile") CONFIG_FILES="$CONFIG_FILES grammar/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; diff --git a/configure.ac b/configure.ac index 14a33c6..ac6fd43 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],[7.2.5],[rsyslog@lists.adiscon.com]) +AC_INIT([rsyslog],[7.2.6],[rsyslog@lists.adiscon.com]) AM_INIT_AUTOMAKE m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) @@ -114,7 +114,7 @@ AC_TYPE_SIGNAL AC_FUNC_STAT AC_FUNC_STRERROR_R AC_FUNC_VPRINTF -AC_CHECK_FUNCS([flock basename alarm clock_gettime gethostbyname gethostname gettimeofday localtime_r memset mkdir regcomp select setid socket strcasecmp strchr strdup strerror strndup strnlen strrchr strstr strtol strtoul sysinfo uname ttyname_r getline malloc_trim prctl epoll_create epoll_create1 fdatasync lseek64]) +AC_CHECK_FUNCS([flock basename alarm clock_gettime getifaddrs gethostbyname gethostname gettimeofday localtime_r memset mkdir regcomp select setid socket strcasecmp strchr strdup strerror strndup strnlen strrchr strstr strtol strtoul uname ttyname_r getline malloc_trim prctl epoll_create epoll_create1 fdatasync lseek64]) # the check below is probably ugly. If someone knows how to do it in a better way, please # let me know! -- rgerhards, 2010-10-06 @@ -122,6 +122,7 @@ AC_CHECK_DECL([SCM_CREDENTIALS], [AC_DEFINE(HAVE_SCM_CREDENTIALS, [1], [set defi #include <sys/socket.h>]) AC_CHECK_DECL([SO_TIMESTAMP], [AC_DEFINE(HAVE_SO_TIMESTAMP, [1], [set define])], [], [#include <sys/types.h> #include <sys/socket.h>]) +AC_CHECK_MEMBER([struct sysinfo.uptime], [AC_DEFINE(HAVE_SYSINFO_UPTIME, [1], [set define])], [], [#include <sys/sysinfo.h>]) # Check for MAXHOSTNAMELEN AC_MSG_CHECKING(for MAXHOSTNAMELEN) @@ -1282,6 +1283,7 @@ AM_CONDITIONAL(ENABLE_OMHIREDIS, test x$enable_omhiredis = xyes) AC_CONFIG_FILES([Makefile \ runtime/Makefile \ + compat/Makefile \ grammar/Makefile \ tools/Makefile \ doc/Makefile \ diff --git a/doc/Makefile.am b/doc/Makefile.am index 8bf463f..e8cdba5 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -121,7 +121,6 @@ html_files = \ syslog_parsing.html \ troubleshoot.html \ rsyslog_conf_actions.html \ - rsyslog_conf_examples.html \ rsyslog_conf_filter.html \ rsyslog_conf_global.html \ rsyslog_conf_modules.html \ @@ -141,13 +140,12 @@ html_files = \ rsconf1_abortonuncleanconfig.html \ rsconf1_maxopenfiles.html \ rsconf1_omfileforcechown.html \ - rsyslog_conf_file_syntax_differences.html \ - rsyslog_conf_lines.html \ rsyslog_queue_pointers.jpeg \ rsyslog_queue_pointers2.jpeg \ v6compatibility.html \ v7compatibility.html \ rsyslog_conf_basic_structure.html \ + rsyslog_conf_sysklogd_compatibility.html \ imkmsg.html \ src/classes.dia diff --git a/doc/Makefile.in b/doc/Makefile.in index 21c8110..6305680 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -354,7 +354,6 @@ html_files = \ syslog_parsing.html \ troubleshoot.html \ rsyslog_conf_actions.html \ - rsyslog_conf_examples.html \ rsyslog_conf_filter.html \ rsyslog_conf_global.html \ rsyslog_conf_modules.html \ @@ -374,13 +373,12 @@ html_files = \ rsconf1_abortonuncleanconfig.html \ rsconf1_maxopenfiles.html \ rsconf1_omfileforcechown.html \ - rsyslog_conf_file_syntax_differences.html \ - rsyslog_conf_lines.html \ rsyslog_queue_pointers.jpeg \ rsyslog_queue_pointers2.jpeg \ v6compatibility.html \ v7compatibility.html \ rsyslog_conf_basic_structure.html \ + rsyslog_conf_sysklogd_compatibility.html \ imkmsg.html \ src/classes.dia diff --git a/doc/imtcp.html b/doc/imtcp.html index 01ea280..feb0bdd 100644 --- a/doc/imtcp.html +++ b/doc/imtcp.html @@ -110,7 +110,7 @@ is not used and some senders emit multi-line messages into the message stream. <p><b>Example:</b></p> <p>This sets up a TCP server on port 514 and permits it to accept up to 500 connections:<br> </p> -<textarea rows="15" cols="60">module(load="/folder/to/rsyslog/plugins/imtcp/.libs/imtcp" MaxSessions="500") # needs to be done just once +<textarea rows="15" cols="60">module(load="imtcp" MaxSessions="500") input(type="imtcp" port="514") </textarea> <p>Note that the global parameters (here: max sessions) need to be set when the module is loaded. Otherwise, the parameters will not apply. diff --git a/doc/imudp.html b/doc/imudp.html index b1a3ecc..1ebce4d 100644 --- a/doc/imudp.html +++ b/doc/imudp.html @@ -55,7 +55,7 @@ Binds the listener to a specific <a href="multi_ruleset.html">ruleset</a>.</li> <p><b>Sample:</b></p> <p>This sets up an UPD server on port 514:<br> </p> -<textarea rows="15" cols="60">module(load="/folder/to/rsyslog/plugins/imudp/.libs/imudp") # needs to be done just once +<textarea rows="15" cols="60">module(load="imudp") # needs to be done just once input(type="imudp" port="514") </textarea> diff --git a/doc/manual.html b/doc/manual.html index 1bf537f..8b54bd0 100644 --- a/doc/manual.html +++ b/doc/manual.html @@ -19,7 +19,7 @@ rsyslog support</a> available directly from the source!</p> <p><b>Please visit the <a href="http://www.rsyslog.com/sponsors">rsyslog sponsor's page</a> to honor the project sponsors or become one yourself!</b> We are very grateful for any help towards the project goals.</p> -<p><b>This documentation is for version 7.2.5 (v7-stable branch) of rsyslog.</b> +<p><b>This documentation is for version 7.2.6 (v7.2-stable branch) of rsyslog.</b> Visit the <i><a href="http://www.rsyslog.com/status">rsyslog status page</a></i></b> to obtain current version information and project status. </p><p><b>If you like rsyslog, you might @@ -42,7 +42,6 @@ if you do not read the doc, but doing so will definitely improve your experience <p><b>Follow the links below for the</b></p> <ul> <li><a href="troubleshoot.html">troubleshooting rsyslog problems</a></li> -<li><a href="http://www.rsyslog.com/doc/node1.html">rsyslog.conf, new RainerScript-based format (v6+)</a></li> <li><a href="rsyslog_conf.html">configuration file format (rsyslog.conf)</a></li> <li><a href="http://www.rsyslog.com/tool-regex">a regular expression checker/generator tool for rsyslog</a></li> <li> <a href="property_replacer.html">property replacer, an important core component</a></li> diff --git a/doc/property_replacer.html b/doc/property_replacer.html index dc09d33..c7624b2 100644 --- a/doc/property_replacer.html +++ b/doc/property_replacer.html @@ -228,7 +228,15 @@ for filtering in a generic way)</td> <td>This is the "bridge" to syslog message normalization (via <a href="mmnormalize.html">mmnormalize</a>): name is a name defined inside the normalization rule. It has the value selected by the rule -or none if no rule with this field did match. +or none if no rule with this field did match. You can also use these +properties to specify JSON fields from the CEE-enhanced syslog +message, once you parse it with <a href="mmjsonparse.html">mmjsonparse</a> +</td> +</tr> +<tr> +<td><b>$!all-json</b></td> +<td>This is the JSON part of the CEE-enhanced syslog message, which +can be parsed with <a href="mmjsonparse.html">mmjsonparse</a> </td> </tr> </tbody> diff --git a/doc/rsyslog_conf.html b/doc/rsyslog_conf.html index 6aa2e46..c5f4d2e 100644 --- a/doc/rsyslog_conf.html +++ b/doc/rsyslog_conf.html @@ -21,16 +21,15 @@ especially useful while you are migrating from syslogd to rsyslogd.</p> <p><b>Follow the links below to learn more about specific topics:</b></p> <ul> -<li><a href="rsyslog_conf_modules.html">Modules</a></li> -<li><a href="rsyslog_conf_lines.html">Lines</a></li> -<li><a href="rsyslog_conf_global.html">Configuration Directives</a></li> <li><a href="rsyslog_conf_basic_structure.html">Basic Structure</a></li> +<li><a href="rsyslog_conf_modules.html">Modules</a></li> <li><a href="rsyslog_conf_templates.html">Templates</a></li> -<li><a href="rsyslog_conf_output.html">Output Channels</a></li> <li><a href="rsyslog_conf_filter.html">Filter Conditions</a></li> -<li><a href="rsyslog_conf_actions.html">Actions</a></li> -<li><a href="rsyslog_conf_file_syntax_differences.html">Configuration File Syntax Differences</a></li> -<li><a href="rsyslog_conf_examples.html">Examples</a></li> +<li><a href="rsyslog_conf_actions.html">Actions (legacy format)</a></li> +<li><a href="rsyslog_conf_output.html">Output Channels</a></li> +<!--<li><a href="rsyslog_conf_examples.html">Examples</a></li>--> +<li><a href="rsyslog_conf_global.html">Legacy Configuration Directives</a></li> +<li><a href="rsyslog_conf_sysklogd_compatibility.html">sysklogd compatibility</a></li> </ul> <p>[<a href="rsyslog_conf.html">back to top</a>] @@ -38,7 +37,7 @@ especially useful while you are migrating from syslogd to rsyslogd.</p> [<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> <p><font size="2">This documentation is part of the <a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2008-2011 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and +Copyright © 2008-2013 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and <a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL version 3 or higher.</font></p> </body> diff --git a/doc/rsyslog_conf_actions.html b/doc/rsyslog_conf_actions.html index 2e2293c..0c7705f 100644 --- a/doc/rsyslog_conf_actions.html +++ b/doc/rsyslog_conf_actions.html @@ -3,7 +3,7 @@ <body> <p>This is a part of the rsyslog.conf documentation.</p> <a href="rsyslog_conf.html">back</a> -<h2>Actions</h2> +<h2>Actions (legacy format)</h2> <p>The action field of a rule describes what to do with the message. In general, message content is written to a kind of "logfile". But also other actions might be done, like writing to a database table diff --git a/doc/rsyslog_conf_basic_structure.html b/doc/rsyslog_conf_basic_structure.html index 4ce78de..00a700d 100644 --- a/doc/rsyslog_conf_basic_structure.html +++ b/doc/rsyslog_conf_basic_structure.html @@ -1,33 +1,101 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Basic Structure - rsyslog.conf</title></head> <body> +<h1>Basic rsyslog.conf Structure</h1> <p>This is a part of the rsyslog.conf documentation.</p> <a href="rsyslog_conf.html">Back to rsyslog.conf manual</a> -<h1>Basic Structure</h1> -<p>Rsyslog supports standard sysklogd's configuration file format -and extends it. So in general, you can take a "normal" syslog.conf and -use it together with rsyslogd. It will understand everything. However, -to use most of rsyslogd's unique features, you need to add extended -configuration directives.</p> -<p>Rsyslogd supports the classical, selector-based rule lines. -They are still at the heart of it and all actions are initiated via -rule lines. A rule lines is any line not starting with a $ or the -comment sign (#). Lines starting with $ carry rsyslog-specific -directives.</p> -<p>Every rule line consists of two fields, a selector field and -an action field. These two fields are separated by one or more spaces -or tabs. The selector field specifies a pattern of facilities and -priorities belonging to the specified action.<br> -<br> -Lines starting with a hash mark ("#'') and empty lines are ignored. -</p> +<p>Rsyslog supports three different types of configuration statements +concurrently: +<ul> +<li><b>sysklogd</b> - this is the plain old format, thaught everywhere +and still pretty useful for simple use cases. Note that some very +few constructs are no longer supported because they are incompatible +with newer features. These are mentioned in the compatibility docs. +<li><b>legacy rsyslog</b> - these are statements that begin with a dollar +sign. They set some configuration parameters and modify e.g. the way +actions operate. This is the only format supported in pre-v6 versions of +rsyslog. It is still fully supported in v6 and above. Note that some +plugins and features may still only be available through legacy format +(because plugins need to be explicitely upgraded to use the new style +format, and this hasn't happened to all plugins). +<li><b>RainerScript</b> - the new style format. This is the best and most +precise format to be used for more complex cases. The rest of this page +assumes RainerScript based rsyslog.conf. +</ul> +<p>The rsyslog.conf files consists of statements. For old style (sysklogd & legacy +rsyslog), lines do matter. For new style (RainerScript) line spacing is irrelevant. +Most importantly, this means with new style actions and all other objects can split +across lines as users want to. +<h2>Comments</h2> +<p>There are two types of comments: +<ul> +<li><b>#-Comments</b> - start with a hash sign (#) and run to the end of the line +<li><b>C-style Comments</b> - start with /* and end with */, just like in the C +programming language. They can be used to comment out multiple lines at one. Comment +nesting is not supported, but #-Comments can be contained inside a C-style comment. +</ul> + +<h2>Processing Order</h2> +<p>Directives are processed from the top of rsyslog.conf to the bottom. Sequence +matters. For example, if you stop processing of a message, obviously all statements +after the stop statement are never evaluated. + +<h3>Flow Control Statements</h3> +<ul> +<li><b>if expr then ... else ...</b> - conditional execution +<li><b>stop</b> - stops processing the current message +<li><b>call</b> - calls a ruleset (just like a subroutine call) +<li><b>continue</b> - a NOP, useful e.g. inside the then part of an if +</ul> + +<h3>Data Manipulation Statements</h3> +<ul> +<li><b>set</b> - <a href="http://www.rsyslog.com/how-to-set-variables-in-rsyslog-v7/">sets</a> +a user variable +<li><b>unset</b> - deletes a previously set user variable +</ul> + +<h2>Inputs</h2> +<p>Every input requires an input module to be loaded and a listener defined for it. +Full details can be found inside the <a href="rsyslog_conf_modules.html">rsyslog +modules</a> documentation. Once loaded, inputs are defined via the +<b>input()</b> object. + +<h2>Outputs</h2> +<p>Outputs are also called "actions". A small set of actions is pre-loaded (like +the output file writer, which is used in almost every rsyslog.conf), others must +be loaded just like inputs. +<p>An action is invoked via the <b>action(type="type" ...)</b> object. Type is +mandatory and must contain the name of the plugin to be called (e.g. "omfile" or +"ommongodb"). Other paramters may be present. Their type and use depends on +the output plugin in question. + +<h2>Rulesets and Rules</h2> +<p>Rulesets and rules form the basis of rsyslog processing. In short, a rule +is a way how rsyslog shall process a specific message. Usually, there is a type +of filter (if-statement) in front of the rule. Complex nesting of rules is possible, +much like in a programming language. +<p>Rulesets are containers for rules. A single ruleset can contain many rules. In +the programming language analogy, one may think of a ruleset like being a program. +A ruleset can be "bound" (assigned) to a specific input. In the analogy, this means that when +a message comes in via that input, the "program" (ruleset) bound to it will be executed +(but not any other!). +<p>There is detail documentation available for +<a href="multi_ruleset">rsyslog rulesets</a>. +<p>For quick reference, rulesets are defined as follows: +<pre> +ruleset(name="rulesetname") { + action(type="omfile" file="/path/to/file") + action(type="..." ...) + /* and so on... */ +} +</pre> <p>[<a href="manual.html">manual index</a>] [<a href="rsyslog_conf.html">rsyslog.conf</a>] [<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> <p><font size="2">This documentation is part of the <a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2008-2010 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and +Copyright © 2008-2013 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and <a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL version 3 or higher.</font></p> </body> diff --git a/doc/rsyslog_conf_examples.html b/doc/rsyslog_conf_examples.html deleted file mode 100644 index b46460e..0000000 --- a/doc/rsyslog_conf_examples.html +++ /dev/null @@ -1,209 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>Examples - rsyslog.conf</title></head> -<body> -<p>This is a part of the rsyslog.conf documentation.</p> -<a href="rsyslog_conf.html">back</a> -<h2>Examples</h2> -<p>Below are example for templates and selector lines. I hope -they are self-explanatory. If not, please see -www.monitorware.com/rsyslog/ for advise.</p> -<h3>TEMPLATES</h3> -<p>Please note that the samples are split across multiple lines. -A template MUST NOT actually be split across multiple lines.<br> -<br> -A template that resembles traditional syslogd file output:<br> -$template TraditionalFormat,"%timegenerated% %HOSTNAME%<br> -%syslogtag%%msg:::drop-last-lf%\n"<br> -<br> -A template that tells you a little more about the message:<br> -$template -precise,"%syslogpriority%,%syslogfacility%,%timegenerated%,%HOSTNAME%,<br> -%syslogtag%,%msg%\n"<br> -<br> -A template for RFC 3164 format:<br> -$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% -%syslogtag%%msg%"<br> -<br> -A template for the format traditonally used for user messages:<br> -$template usermsg," XXXX%syslogtag%%msg%\n\r"<br> -<br> -And a template with the traditonal wall-message format:<br> -$template wallmsg,"\r\n\7Message from syslogd@%HOSTNAME% at -%timegenerated%<br> -<br> -A template that can be used for the database write (please note the SQL<br> -template option)<br> -$template MySQLInsert,"insert iut, message, receivedat values<br> -('%iut%', '%msg:::UPPERCASE%', '%timegenerated:::date-mysql%')<br> -into systemevents\r\n", SQL<br> -<br> -The following template emulates <a href="http://www.winsyslog.com/en/">WinSyslog</a> -format (it's an <a href="http://www.adiscon.com/en/">Adiscon</a> -format, you do not feel bad if you don't know it ;)). It's interesting -to see how it takes different parts out of the date stamps. What -happens is that the date stamp is split into the actual date and time -and the these two are combined with just a comma in between them.<br> -<br> -$template WinSyslogFmt,"%HOSTNAME%,%timegenerated:1:10:date-rfc3339%,<br> -%timegenerated:12:19:date-rfc3339%,%timegenerated:1:10:date-rfc3339%,<br> -%timegenerated:12:19:date-rfc3339%,%syslogfacility%,%syslogpriority%,<br> -%syslogtag%%msg%\n"</p> -<h3>SELECTOR LINES</h3> -<p># Store critical stuff in critical<br> -#<br> -*.=crit;kern.none /var/adm/critical<br> -<br> -This will store all messages with the priority crit in the file -/var/adm/critical, except for any kernel message.<br> -<br> -<br> -# Kernel messages are first, stored in the kernel<br> -# file, critical messages and higher ones also go<br> -# to another host and to the console. Messages to<br> -# the host finlandia are forwarded in RFC 3164<br> -# format (using the template defined above).<br> -#<br> -kern.* /var/adm/kernel<br> -kern.crit @finlandia;RFC3164fmt<br> -kern.crit /dev/console<br> -kern.info;kern.!err /var/adm/kernel-info<br> -<br> -The first rule direct any message that has the kernel facility to the -file /var/adm/kernel.<br> -<br> -The second statement directs all kernel messages of the priority crit -and higher to the remote host finlandia. This is useful, because if the -host crashes and the disks get irreparable errors you might not be able -to read the stored messages. If they're on a remote host, too, you -still can try to find out the reason for the crash.<br> -<br> -The third rule directs these messages to the actual console, so the -person who works on the machine will get them, too.<br> -<br> -The fourth line tells rsyslogd to save all kernel messages that come -with priorities from info up to warning in the file -/var/adm/kernel-info. Everything from err and higher is excluded.<br> -<br> -<br> -# The tcp wrapper loggs with mail.info, we display<br> -# all the connections on tty12<br> -#<br> -mail.=info /dev/tty12<br> -<br> -This directs all messages that uses mail.info (in source LOG_MAIL | -LOG_INFO) to /dev/tty12, the 12th console. For example the tcpwrapper -tcpd(8) uses this as it's default.<br> -<br> -<br> -# Store all mail concerning stuff in a file<br> -#<br> -mail.*;mail.!=info /var/adm/mail<br> -<br> -This pattern matches all messages that come with the mail facility, -except for the info priority. These will be stored in the file -/var/adm/mail.<br> -<br> -<br> -# Log all mail.info and news.info messages to info<br> -#<br> -mail,news.=info /var/adm/info<br> -<br> -This will extract all messages that come either with mail.info or with -news.info and store them in the file /var/adm/info.<br> -<br> -<br> -# Log info and notice messages to messages file<br> -#<br> -*.=info;*.=notice;\<br> -mail.none /var/log/messages<br> -<br> -This lets rsyslogd log all messages that come with either the info or -the notice facility into the file /var/log/messages, except for all<br> -messages that use the mail facility.<br> -<br> -<br> -# Log info messages to messages file<br> -#<br> -*.=info;\<br> -mail,news.none /var/log/messages<br> -<br> -This statement causes rsyslogd to log all messages that come with the -info priority to the file /var/log/messages. But any message coming -either with the mail or the news facility will not be stored.<br> -<br> -<br> -# Emergency messages will be displayed using wall<br> -#<br> -*.=emerg *<br> -<br> -This rule tells rsyslogd to write all emergency messages to all -currently logged in users. This is the wall action.<br> -<br> -<br> -# Messages of the priority alert will be directed<br> -# to the operator<br> -#<br> -*.alert root,rgerhards<br> -<br> -This rule directs all messages with a priority of alert or higher to -the terminals of the operator, i.e. of the users "root'' and -"rgerhards'' if they're logged in.<br> -<br> -<br> -*.* @finlandia<br> -<br> -This rule would redirect all messages to a remote host called -finlandia. This is useful especially in a cluster of machines where all -syslog messages will be stored on only one machine.<br> -<br> -In the format shown above, UDP is used for transmitting the message. -The destination port is set to the default auf 514. Rsyslog is also -capable of using much more secure and reliable TCP sessions for message -forwarding. Also, the destination port can be specified. To select TCP, -simply add one additional @ in front of the host name (that is, @host -is UPD, @@host is TCP). For example:<br> -<br> -<br> -*.* @@finlandia<br> -<br> -To specify the destination port on the remote machine, use a colon -followed by the port number after the machine name. The following -forwards to port 1514 on finlandia:<br> -<br> -<br> -*.* @@finlandia:1514<br> -<br> -This syntax works both with TCP and UDP based syslog. However, you will -probably primarily need it for TCP, as there is no well-accepted port -for this transport (it is non-standard). For UDP, you can usually stick -with the default auf 514, but might want to modify it for security rea-<br> -sons. If you would like to do that, it's quite easy:<br> -<br> -<br> -*.* @finlandia:1514<br> -<br> -<br> -<br> -*.* >dbhost,dbname,dbuser,dbpassword;dbtemplate<br> -<br> -This rule writes all message to the database "dbname" hosted on -"dbhost". The login is done with user "dbuser" and password -"dbpassword". The actual table that is updated is specified within the -template (which contains the insert statement). The template is called -"dbtemplate" in this case.</p> -<p>:msg,contains,"error" @errorServer</p> -<p>This rule forwards all messages that contain the word "error" -in the msg part to the server "errorServer". Forwarding is via UDP. -Please note the colon in fron</p> - -<p>[<a href="manual.html">manual index</a>] -[<a href="rsyslog_conf.html">rsyslog.conf</a>] -[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> -<p><font size="2">This documentation is part of the -<a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2008 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and -<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL -version 2 or higher.</font></p> -</body> -</html> - diff --git a/doc/rsyslog_conf_file_syntax_differences.html b/doc/rsyslog_conf_file_syntax_differences.html deleted file mode 100644 index bfac892..0000000 --- a/doc/rsyslog_conf_file_syntax_differences.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>Configuration File Syntax Differences - rsyslog.conf</title></head> -<body> -<p>This is a part of the rsyslog.conf documentation.</p> -<a href="rsyslog_conf.html">Back to rsyslog.conf manual</a> -<h1>Configuration File Syntax Differences</h1> -<p>Rsyslogd uses a slightly different syntax for its -configuration file than the original BSD sources. Originally all -messages of a specific priority and above were forwarded to the log -file. The modifiers "='', "!'' and "!-'' were added to make rsyslogd -more flexible and to use it in a more intuitive manner.<br> -<br> -The original BSD syslogd doesn't understand spaces as separators -between the selector and the action field.<br> -<br> -When compared to syslogd from sysklogd package, rsyslogd offers -additional -<a href="features.html">features</a> (like template -and database support). For obvious reasons, the syntax for defining -such features is available in rsyslogd, only.</p> - -<p>[<a href="manual.html">manual index</a>] -[<a href="rsyslog_conf.html">rsyslog.conf</a>] -[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> -<p><font size="2">This documentation is part of the -<a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2008-2010 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and -<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL -version 3 or higher.</font></p> -</body> -</html> - diff --git a/doc/rsyslog_conf_lines.html b/doc/rsyslog_conf_lines.html deleted file mode 100644 index 0e6cc0d..0000000 --- a/doc/rsyslog_conf_lines.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>Lines - rsyslog.conf</title></head> -<body> -<p>This is a part of the rsyslog.conf documentation.</p> -<a href="rsyslog_conf.html">Back to rsyslog.conf manual</a> -<h1>Lines</h1> -<p>Lines can be continued by specifying a backslash ("\") as the last -character of the line. There is a hard-coded maximum line length of 4K.<br> -If you need lines larger than that, you need to change compile-time -settings inside rsyslog and recompile. -</p> - -<p>[<a href="manual.html">manual index</a>] -[<a href="rsyslog_conf.html">rsyslog.conf</a>] -[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> -<p><font size="2">This documentation is part of the -<a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2008-2010 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and -<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL -version 3 or higher.</font></p> -</body> -</html> - diff --git a/doc/rsyslog_conf_modules.html b/doc/rsyslog_conf_modules.html index cbd60fa..4186dac 100644 --- a/doc/rsyslog_conf_modules.html +++ b/doc/rsyslog_conf_modules.html @@ -35,7 +35,7 @@ to message generators. <ul> <li><a href="imfile.html">imfile</a> - input module for text files</li> <li><a href="imrelp.html">imrelp</a> - RELP input module</li> -<li>imudp - udp syslog message input</li> +<li><a href="imudp.html">imudp</a> - udp syslog message input</li> <li><a href="imtcp.html">imtcp</a> - input plugin for tcp syslog</li> <li><a href="imptcp.html">imptcp</a> - input plugin for plain tcp syslog (no TLS but faster)</li> <li><a href="imgssapi.html">imgssapi</a> - input plugin for plain tcp and GSS-enabled syslog</li> diff --git a/doc/rsyslog_conf_sysklogd_compatibility.html b/doc/rsyslog_conf_sysklogd_compatibility.html new file mode 100644 index 0000000..c95d6fd --- /dev/null +++ b/doc/rsyslog_conf_sysklogd_compatibility.html @@ -0,0 +1,31 @@ +<html><head><title>sysklogdcompatibility - rsyslog.conf</title></head> +<body> +<h1>sysklogd compatibility</h1> +<p>This is a part of the rsyslog.conf documentation.</p> +<a href="rsyslog_conf.html">Back to rsyslog.conf manual</a> +<p>Rsyslog supports standard sysklogd's configuration file format +and extends it. So in general, you can take a "normal" syslog.conf and +use it together with rsyslogd. It will understand everything. However, +to use most of rsyslogd's unique features, you need to add extended +configuration directives.</p> +<p>Rsyslogd supports the classical, selector-based rule lines. +They are still at the heart of it and all actions are initiated via +rule lines. +However, there are ample new directives, either in rsyslog traditional +format (starting with a dollar sign) or in RainerScript format. These +work together with sysklogd statements. A few select statements are +no longer supported and may generate error messages. They are mentioned +in the compatibility notes. +</p> + +<p>[<a href="manual.html">manual index</a>] +[<a href="rsyslog_conf.html">rsyslog.conf</a>] +[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p> +<p><font size="2">This documentation is part of the +<a href="http://www.rsyslog.com/">rsyslog</a> project.<br> +Copyright © 2008-2013 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and +<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL +version 3 or higher.</font></p> +</body> +</html> + diff --git a/doc/v7compatibility.html b/doc/v7compatibility.html index 8834cd5..01faaca 100644 --- a/doc/v7compatibility.html +++ b/doc/v7compatibility.html @@ -25,6 +25,37 @@ has been implemented. Consequently, situations where the previous behaviour were desired need now to be solved differently. We do not think that this will cause any problems to anyone, especially as in v6 this was announced as a missing feature. +<h2>omusrmsg: using just a username or "*" is deprecated</h2> +<p>In legacy config format, the asterisk denotes writing the message to all users. +This is usually used for emergency messages and configured like this: +<pre> +*.emerg * +</pre> +<p>Unfortunately, the use of this single character conflicts with other uses, for +example with the multiplication operator. While rsyslog up to versions v7.4 preserves the meaning of +asterisk as an action, it is deprecated and will probably be removed in future versions. +Consequently, a warning message is emitted. To make this warning go away, the action must +be explicitly given, as follows: +<pre> +*.emerg :omusrmsg:* +</pre> +<p>The same holds true for user names. For example +<pre> +*.emerg john +</pre> +<p>at a minimum should be rewritten as +<pre> +*.emerg :omusrmsg:john +</pre> +<p>Of course, for even more clarity the new RainerScript style of action can +also be used: +<pre> +*.emerg action(type="omusrmsg" users="john") +</pre> +<p>In Rainer's blog, there is more +<a href="http://blog.gerhards.net/2011/07/why-omusrmsg-is-evil-and-how-it-is.html">background +information on why omusrmsg needed to be changed</a> available. + <h2>omruleset and discard (~) action are deprecated</h2> <p>Both continue to work, but have been replaced by better alternatives. <p>The discard action (tilde character) has been replaced by the "stop" @@ -54,7 +85,7 @@ In practice, we do NOT expect that. <p><font size="2">This documentation is part of the <a href="http://www.rsyslog.com/">rsyslog</a> project.<br> -Copyright © 2011-2012 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and +Copyright © 2011-2013 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and <a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL version 2 or higher.</font></p> </body></html> diff --git a/grammar/lexer.c b/grammar/lexer.c index f2323ca..b1af617 100644 --- a/grammar/lexer.c +++ b/grammar/lexer.c @@ -393,7 +393,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[441] = +static yyconst flex_int16_t yy_accept[443] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 96, 95, 95, 96, 96, @@ -435,14 +435,15 @@ static yyconst flex_int16_t yy_accept[441] = 73, 73, 73, 73, 0, 62, 73, 73, 73, 73, 73, 0, 0, 73, 73, 73, 73, 73, 73, 73, 73, 73, 37, 37, 0, 64, 73, 73, 0, 57, - 0, 63, 73, 73, 73, 73, 0, 65, 73, 73, - 73, 73, 73, 73, 37, 37, 73, 50, 73, 73, - 0, 59, 73, 73, 50, 73, 73, 73, 26, 37, + 0, 63, 73, 73, 73, 73, 0, 65, 0, 73, + 73, 73, 73, 73, 73, 37, 37, 73, 50, 73, + 73, 0, 59, 73, 65, 73, 50, 73, 73, 73, - 0, 61, 73, 0, 60, 0, 58, 73, 37, 37, - 73, 73, 27, 28, 73, 73, 37, 73, 73, 29, + 26, 37, 0, 61, 73, 0, 60, 0, 58, 73, + 37, 37, 73, 73, 27, 28, 73, 73, 37, 73, + 73, 29, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 51, 0 + 51, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -489,38 +490,38 @@ static yyconst flex_int32_t yy_meta[81] = 23, 22, 23, 22, 22, 25, 22, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[513] = +static yyconst flex_int16_t yy_base[515] = { 0, 0, 80, 160, 0, 238, 239, 241, 244, 236, 241, - 263, 0, 343, 0, 1101, 3197, 3197, 3197, 0, 1078, - 0, 3197, 3197, 1065, 236, 0, 1054, 0, 0, 392, + 263, 0, 343, 0, 1068, 3182, 3182, 3182, 0, 1059, + 0, 3182, 3182, 953, 236, 0, 942, 0, 0, 392, 395, 387, 388, 394, 388, 387, 385, 400, 405, 395, - 3197, 3197, 0, 463, 424, 1048, 486, 462, 502, 529, + 3182, 3182, 0, 463, 424, 932, 486, 462, 502, 529, 572, 538, 540, 568, 505, 569, 570, 612, 613, 592, - 3197, 3197, 3197, 420, 964, 3197, 3197, 942, 3197, 0, - 3197, 3197, 943, 933, 899, 0, 3197, 3197, 3197, 428, - 3197, 3197, 3197, 0, 3197, 3197, 3197, 881, 435, 438, - 3197, 3197, 449, 3197, 3197, 3197, 3197, 3197, 3197, 888, - - 455, 487, 3197, 233, 856, 852, 413, 0, 461, 485, - 484, 486, 488, 3197, 3197, 534, 841, 3197, 685, 569, - 0, 617, 518, 0, 3197, 0, 801, 509, 535, 537, + 3182, 3182, 3182, 420, 933, 3182, 3182, 904, 3182, 0, + 3182, 3182, 904, 899, 863, 0, 3182, 3182, 3182, 428, + 3182, 3182, 3182, 0, 3182, 3182, 3182, 852, 435, 438, + 3182, 3182, 449, 3182, 3182, 3182, 3182, 3182, 3182, 830, + + 455, 487, 3182, 233, 798, 783, 413, 0, 461, 485, + 484, 486, 488, 3182, 3182, 534, 778, 3182, 685, 569, + 0, 617, 518, 0, 3182, 0, 754, 509, 535, 537, 545, 588, 0, 588, 524, 611, 610, 604, 609, 612, - 720, 765, 646, 0, 801, 752, 0, 758, 781, 792, - 773, 667, 806, 835, 814, 859, 872, 796, 791, 740, + 720, 765, 646, 0, 767, 752, 0, 758, 781, 792, + 676, 667, 806, 835, 814, 859, 872, 796, 791, 740, 794, 742, 795, 851, 861, 859, 778, 854, 862, 866, - 554, 3197, 448, 774, 3197, 3197, 0, 772, 681, 3197, - 0, 834, 0, 3197, 860, 3197, 896, 0, 0, 760, - 3197, 900, 3197, 451, 0, 920, 3197, 3197, 3197, 3197, + 554, 3182, 448, 665, 3182, 3182, 0, 630, 613, 3182, + 0, 834, 0, 3182, 860, 3182, 896, 0, 0, 760, + 3182, 900, 3182, 451, 0, 920, 3182, 3182, 3182, 3182, - 0, 798, 858, 858, 0, 880, 899, 946, 3197, 665, - 3197, 976, 950, 959, 630, 966, 613, 0, 0, 0, + 0, 798, 858, 858, 0, 880, 899, 946, 3182, 574, + 3182, 976, 950, 959, 560, 966, 524, 0, 0, 0, 0, 906, 1017, 1012, 1026, 1030, 1015, 1016, 1021, 1022, - 1033, 0, 1025, 1026, 1037, 0, 1070, 3197, 1073, 939, + 1033, 0, 1025, 1026, 1037, 0, 1070, 3182, 1073, 939, 786, 1088, 1101, 1112, 1101, 1046, 1080, 1095, 1097, 1038, 1109, 1116, 1114, 1115, 1118, 1130, 1166, 938, 0, 0, - 944, 0, 3197, 0, 1129, 0, 1138, 1147, 574, 3197, - 560, 0, 0, 0, 1147, 0, 1145, 1059, 0, 1083, + 944, 0, 3182, 0, 1129, 0, 1138, 1147, 482, 3182, + 474, 0, 0, 0, 1147, 0, 1145, 1059, 0, 1083, 1146, 1155, 1152, 1164, 1154, 0, 1161, 1156, 970, 1095, 1201, 1164, 1168, 1184, 1172, 1173, 1192, 1188, 1174, 1196, @@ -528,90 +529,90 @@ static yyconst flex_int16_t yy_base[513] = 1230, 1200, 0, 1224, 1238, 1233, 1236, 1279, 1250, 1243, 1243, 1255, 1260, 0, 1195, 563, 1254, 1267, 1263, 1253, 1296, 1281, 1266, 1278, 1294, 1297, 1264, 1304, 1287, 1292, - 1363, 1301, 1297, 1370, 1374, 3197, 1377, 1294, 1310, 1312, - 1314, 659, 521, 1388, 1328, 1353, 1395, 1400, 1373, 1348, - 1368, 1370, 1369, 573, 1421, 3197, 1369, 1384, 1444, 3197, - 1447, 3197, 1391, 808, 1460, 1396, 479, 471, 1418, 1433, - 1420, 1429, 1473, 1449, 1398, 1414, 1499, 0, 1433, 1505, - 1516, 3197, 1519, 1522, 1434, 1476, 1533, 1544, 379, 1431, - - 1547, 3197, 1472, 1551, 3197, 1562, 3197, 1492, 1492, 1496, - 1506, 1535, 0, 374, 1504, 1512, 1530, 1533, 1539, 0, - 1519, 1540, 1542, 1551, 1539, 1550, 1535, 1549, 1552, 1573, - 1563, 1571, 1566, 1586, 1577, 1585, 239, 1619, 3197, 3197, - 1685, 1711, 1737, 1763, 1789, 1797, 1822, 1848, 1866, 1880, - 1904, 1922, 1940, 1965, 1985, 2003, 2029, 2055, 2070, 2096, - 2122, 2137, 2163, 2185, 2210, 2224, 2250, 2276, 2290, 2314, - 2332, 2347, 2366, 2387, 2412, 2435, 2456, 2475, 2501, 2522, - 2546, 2561, 2587, 2613, 2628, 2654, 2675, 2682, 2703, 2729, - 2750, 2763, 2772, 2798, 2824, 2850, 2876, 2902, 2928, 2954, - - 2980, 2998, 3020, 3042, 3063, 3082, 3108, 3122, 3131, 3140, - 3149, 3170 + 1363, 1301, 1297, 1370, 1374, 3182, 1377, 1294, 1310, 1312, + 1314, 659, 1334, 1388, 1328, 1353, 1395, 1400, 1373, 1368, + 1370, 1371, 1353, 573, 1421, 3182, 1369, 1386, 1446, 3182, + 1453, 3182, 1391, 808, 1460, 1412, 1416, 3182, 1423, 1405, + 1434, 1440, 1427, 1479, 1450, 1413, 1422, 1495, 0, 1431, + 1506, 1510, 3182, 1521, 1432, 1524, 1449, 1465, 1535, 1538, + + 379, 1447, 1549, 3182, 1477, 1553, 3182, 1556, 3182, 1504, + 1483, 1498, 1512, 1532, 0, 374, 1514, 1523, 1511, 1529, + 1531, 0, 1532, 1537, 1547, 1548, 1542, 1545, 1538, 1551, + 1551, 1566, 1564, 1584, 1568, 1586, 1574, 1583, 239, 1604, + 3182, 3182, 1670, 1696, 1722, 1748, 1774, 1782, 1807, 1833, + 1851, 1865, 1889, 1907, 1925, 1950, 1970, 1988, 2014, 2040, + 2055, 2081, 2107, 2122, 2148, 2170, 2195, 2209, 2235, 2261, + 2275, 2299, 2317, 2332, 2351, 2372, 2397, 2420, 2441, 2460, + 2486, 2507, 2531, 2546, 2572, 2598, 2613, 2639, 2660, 2667, + 2688, 2714, 2735, 2748, 2757, 2783, 2809, 2835, 2861, 2887, + + 2913, 2939, 2965, 2983, 3005, 3027, 3048, 3067, 3093, 3107, + 3116, 3125, 3134, 3155 } ; -static yyconst flex_int16_t yy_def[513] = +static yyconst flex_int16_t yy_def[515] = { 0, - 440, 440, 440, 3, 441, 441, 442, 442, 443, 443, - 440, 11, 440, 13, 440, 440, 440, 440, 444, 445, - 446, 440, 440, 440, 447, 447, 448, 449, 450, 449, - 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, - 440, 440, 447, 451, 452, 453, 454, 455, 456, 456, - 456, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 440, 440, 440, 457, 458, 440, 440, 440, 440, 459, - 440, 440, 460, 460, 440, 461, 440, 440, 440, 440, - 440, 440, 440, 462, 440, 440, 440, 440, 463, 464, - 440, 440, 465, 440, 440, 440, 440, 440, 440, 440, - - 440, 440, 440, 440, 440, 440, 466, 466, 466, 466, - 466, 466, 466, 440, 440, 444, 445, 440, 440, 440, - 447, 447, 467, 468, 440, 449, 469, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, - 449, 470, 471, 472, 473, 471, 474, 440, 472, 475, - 473, 473, 476, 477, 449, 478, 478, 157, 157, 157, + 442, 442, 442, 3, 443, 443, 444, 444, 445, 445, + 442, 11, 442, 13, 442, 442, 442, 442, 446, 447, + 448, 442, 442, 442, 449, 449, 450, 451, 452, 451, + 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, + 442, 442, 449, 453, 454, 455, 456, 457, 458, 458, + 458, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 442, 442, 442, 459, 460, 442, 442, 442, 442, 461, + 442, 442, 462, 462, 442, 463, 442, 442, 442, 442, + 442, 442, 442, 464, 442, 442, 442, 442, 465, 466, + 442, 442, 467, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 442, 442, 468, 468, 468, 468, + 468, 468, 468, 442, 442, 446, 447, 442, 442, 442, + 449, 449, 469, 470, 442, 451, 471, 451, 451, 451, + 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, + 451, 472, 473, 474, 475, 473, 476, 442, 474, 477, + 475, 475, 478, 479, 451, 480, 480, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 479, 440, 480, 481, 440, 440, 482, 483, 483, 440, - 484, 440, 485, 440, 486, 440, 487, 488, 489, 490, - 440, 491, 440, 440, 492, 440, 440, 440, 440, 440, - - 493, 493, 493, 493, 493, 493, 493, 440, 440, 494, - 440, 440, 440, 440, 495, 496, 497, 498, 499, 500, - 501, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 503, 440, 440, 496, 440, - 504, 505, 506, 506, 244, 244, 244, 244, 244, 244, - 244, 244, 244, 244, 244, 244, 507, 440, 508, 489, - 440, 509, 440, 493, 493, 493, 493, 493, 495, 440, - 497, 498, 499, 501, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 504, 504, - 504, 244, 244, 244, 244, 244, 244, 244, 244, 244, - - 244, 244, 244, 244, 244, 507, 440, 510, 440, 511, - 493, 493, 493, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 440, 440, 244, 244, 244, 244, - 244, 244, 244, 244, 244, 244, 244, 507, 493, 493, - 502, 502, 502, 502, 440, 440, 502, 502, 502, 502, - 502, 440, 512, 244, 244, 244, 244, 244, 244, 244, - 244, 244, 493, 493, 440, 440, 502, 502, 440, 440, - 440, 440, 502, 502, 502, 502, 512, 512, 244, 244, - 244, 244, 244, 244, 493, 493, 502, 502, 502, 502, - 440, 440, 502, 244, 244, 244, 244, 244, 493, 493, - - 440, 440, 502, 440, 440, 440, 440, 244, 493, 493, - 502, 244, 493, 493, 502, 244, 493, 502, 244, 493, - 502, 244, 502, 244, 502, 244, 502, 244, 502, 244, - 502, 244, 502, 244, 502, 244, 502, 244, 440, 0, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440 + 481, 442, 482, 483, 442, 442, 484, 485, 485, 442, + 486, 442, 487, 442, 488, 442, 489, 490, 491, 492, + 442, 493, 442, 442, 494, 442, 442, 442, 442, 442, + + 495, 495, 495, 495, 495, 495, 495, 442, 442, 496, + 442, 442, 442, 442, 497, 498, 499, 500, 501, 502, + 503, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 505, 442, 442, 498, 442, + 506, 507, 508, 508, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 509, 442, 510, 491, + 442, 511, 442, 495, 495, 495, 495, 495, 497, 442, + 499, 500, 501, 503, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 506, 506, + 506, 244, 244, 244, 244, 244, 244, 244, 244, 244, + + 244, 244, 244, 244, 244, 509, 442, 512, 442, 513, + 495, 495, 495, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 442, 442, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 509, 495, 495, + 504, 504, 504, 504, 442, 442, 504, 504, 504, 504, + 504, 442, 514, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 495, 495, 442, 442, 504, 504, 442, 442, + 442, 442, 504, 504, 504, 504, 514, 442, 514, 244, + 244, 244, 244, 244, 244, 495, 495, 504, 504, 504, + 504, 442, 442, 504, 514, 244, 244, 244, 244, 244, + + 495, 495, 442, 442, 504, 442, 442, 442, 442, 244, + 495, 495, 504, 244, 495, 495, 504, 244, 495, 504, + 244, 495, 504, 244, 504, 244, 504, 244, 504, 244, + 504, 244, 504, 244, 504, 244, 504, 244, 504, 244, + 442, 0, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442 } ; -static yyconst flex_int16_t yy_nxt[3278] = +static yyconst flex_int16_t yy_nxt[3263] = { 0, 16, 17, 18, 17, 19, 16, 20, 21, 16, 22, 16, 16, 16, 23, 24, 16, 25, 26, 27, 28, @@ -640,7 +641,7 @@ static yyconst flex_int16_t yy_nxt[3278] = 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 61, 61, 61, 74, 74, 77, 77, 77, 77, 77, 77, 79, 122, - 439, 75, 75, 79, 123, 80, 80, 80, 197, 198, + 441, 75, 75, 79, 123, 80, 80, 80, 197, 198, 80, 80, 80, 81, 82, 83, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, @@ -659,35 +660,35 @@ static yyconst flex_int16_t yy_nxt[3278] = 108, 109, 108, 108, 108, 108, 108, 108, 108, 108, 110, 111, 108, 108, 112, 113, 108, 108, 108, 108, - 85, 85, 85, 128, 129, 172, 131, 132, 133, 417, - 135, 136, 137, 138, 409, 134, 141, 130, 140, 147, + 85, 85, 85, 128, 129, 172, 131, 132, 133, 419, + 135, 136, 137, 138, 411, 134, 141, 130, 140, 147, 186, 147, 188, 148, 148, 188, 139, 182, 182, 182, 128, 129, 131, 132, 202, 133, 135, 136, 137, 191, 138, 134, 141, 130, 142, 140, 142, 257, 257, 151, - 194, 194, 139, 173, 194, 194, 378, 144, 152, 144, - 202, 127, 127, 127, 378, 145, 121, 121, 187, 121, + 194, 194, 139, 173, 194, 194, 270, 144, 152, 144, + 202, 127, 127, 127, 270, 145, 121, 121, 187, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 121, 121, 192, 203, 123, 195, 196, 196, 196, 121, 121, 121, 121, 121, 121, 146, 126, 154, 126, 147, - 219, 155, 155, 126, 207, 126, 378, 204, 205, 203, + 219, 155, 155, 126, 207, 126, 270, 204, 205, 203, 195, 121, 206, 157, 156, 208, 209, 208, 121, 121, 121, 121, 146, 126, 154, 126, 147, 164, 155, 155, 126, 207, 126, 204, 205, 222, 228, 126, 206, 172, 157, 156, 270, 121, 121, 121, 352, 156, 353, 156, - 213, 214, 213, 164, 223, 215, 270, 160, 224, 161, + 213, 214, 213, 164, 223, 215, 211, 160, 224, 161, 156, 222, 156, 228, 126, 146, 126, 154, 126, 147, 225, 155, 155, 126, 156, 126, 156, 156, 156, 156, 223, 158, 162, 160, 224, 161, 156, 173, 156, 163, - 156, 156, 156, 165, 159, 270, 225, 166, 216, 214, - 216, 156, 386, 217, 156, 156, 156, 126, 158, 162, - 226, 227, 270, 170, 156, 163, 156, 156, 156, 165, - 159, 156, 156, 166, 229, 167, 169, 386, 156, 231, + 156, 156, 156, 165, 159, 179, 225, 166, 216, 214, + 216, 156, 387, 217, 156, 156, 156, 126, 158, 162, + 226, 227, 179, 170, 156, 163, 156, 156, 156, 165, + 159, 156, 156, 166, 229, 167, 169, 387, 156, 231, 232, 233, 234, 230, 156, 156, 226, 227, 168, 170, - 156, 147, 352, 147, 353, 148, 148, 211, 156, 156, - 240, 229, 167, 169, 440, 231, 232, 233, 234, 230, - 156, 156, 241, 179, 168, 210, 210, 211, 210, 210, + 156, 147, 352, 147, 353, 148, 148, 175, 156, 156, + 240, 229, 167, 169, 442, 231, 232, 233, 234, 230, + 156, 156, 241, 442, 168, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, @@ -697,28 +698,28 @@ static yyconst flex_int16_t yy_nxt[3278] = 210, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 210, 210, 210, 235, 142, 147, 142, 147, - 191, 148, 148, 147, 179, 147, 175, 148, 148, 144, - 440, 144, 237, 238, 237, 246, 156, 145, 156, 289, + 191, 148, 148, 147, 151, 147, 221, 148, 148, 144, + 118, 144, 237, 238, 237, 246, 156, 145, 156, 289, 290, 235, 121, 239, 238, 239, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 151, 240, + 121, 121, 121, 121, 121, 121, 121, 121, 200, 240, 121, 246, 156, 192, 156, 121, 121, 121, 121, 121, - 121, 241, 152, 221, 253, 127, 127, 127, 221, 154, + 121, 241, 152, 199, 253, 127, 127, 127, 221, 154, 264, 147, 245, 155, 155, 244, 247, 156, 248, 236, - 156, 156, 156, 118, 121, 121, 121, 121, 236, 126, - 253, 126, 236, 182, 182, 182, 126, 264, 245, 390, + 156, 156, 156, 193, 121, 121, 121, 121, 236, 126, + 253, 126, 236, 182, 182, 182, 126, 264, 245, 391, 236, 244, 247, 156, 248, 186, 156, 156, 156, 121, - 121, 121, 146, 126, 154, 126, 147, 200, 155, 155, - 126, 199, 126, 249, 390, 146, 126, 154, 126, 147, + 121, 121, 146, 126, 154, 126, 147, 184, 155, 155, + 126, 180, 126, 249, 391, 146, 126, 154, 126, 147, 126, 155, 155, 126, 250, 126, 254, 156, 252, 265, - 156, 193, 255, 251, 266, 156, 184, 156, 156, 267, - 249, 256, 156, 187, 126, 258, 258, 180, 243, 261, + 156, 179, 255, 251, 266, 156, 179, 156, 156, 267, + 249, 256, 156, 187, 126, 258, 258, 176, 243, 261, 261, 250, 254, 156, 252, 265, 156, 126, 255, 251, - 266, 156, 268, 156, 156, 179, 267, 256, 156, 196, - 196, 196, 240, 275, 243, 179, 259, 208, 209, 208, - 262, 213, 214, 213, 241, 176, 215, 307, 307, 268, - 213, 214, 213, 309, 309, 215, 175, 216, 214, 216, + 266, 156, 268, 156, 156, 175, 267, 256, 156, 196, + 196, 196, 240, 275, 243, 120, 259, 208, 209, 208, + 262, 213, 214, 213, 241, 125, 215, 307, 307, 268, + 213, 214, 213, 309, 309, 215, 120, 216, 214, 216, 275, 259, 217, 289, 290, 262, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, @@ -729,28 +730,28 @@ static yyconst flex_int16_t yy_nxt[3278] = 210, 210, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 210, 210, 210, 276, 277, 278, 279, - 280, 120, 281, 282, 283, 284, 285, 125, 286, 287, - 288, 237, 238, 237, 239, 238, 239, 156, 120, 296, - 118, 300, 276, 277, 278, 156, 279, 280, 281, 282, - 283, 284, 236, 285, 286, 287, 316, 288, 440, 440, + 280, 118, 281, 282, 283, 284, 285, 442, 286, 287, + 288, 237, 238, 237, 239, 238, 239, 156, 442, 296, + 442, 300, 276, 277, 278, 156, 279, 280, 281, 282, + 283, 284, 236, 285, 286, 287, 316, 288, 442, 442, - 440, 236, 126, 156, 126, 236, 296, 300, 440, 126, + 442, 236, 126, 156, 126, 236, 296, 300, 442, 126, 297, 156, 317, 236, 146, 126, 154, 126, 147, 156, 155, 155, 126, 316, 126, 146, 126, 154, 126, 147, - 440, 155, 155, 126, 156, 126, 156, 297, 292, 317, - 156, 440, 298, 126, 299, 156, 294, 295, 156, 302, - 440, 293, 301, 156, 156, 156, 126, 156, 303, 440, - 156, 304, 156, 305, 440, 292, 156, 126, 298, 156, + 442, 155, 155, 126, 156, 126, 156, 297, 292, 317, + 156, 442, 298, 126, 299, 156, 294, 295, 156, 302, + 442, 293, 301, 156, 156, 156, 126, 156, 303, 442, + 156, 304, 156, 305, 442, 292, 156, 126, 298, 156, 299, 172, 294, 295, 156, 311, 302, 293, 301, 156, 156, 156, 312, 156, 303, 306, 306, 304, 313, 314, - 305, 315, 318, 440, 319, 156, 320, 321, 325, 322, + 305, 315, 318, 442, 319, 156, 320, 321, 325, 322, - 323, 311, 324, 156, 325, 440, 327, 156, 312, 329, + 323, 311, 324, 156, 325, 442, 327, 156, 312, 329, 326, 156, 156, 332, 313, 314, 326, 315, 318, 173, 319, 330, 320, 156, 321, 322, 323, 156, 324, 156, 328, 156, 327, 156, 331, 156, 329, 156, 156, 332, - 333, 334, 440, 156, 156, 336, 340, 156, 330, 156, - 335, 156, 440, 156, 185, 185, 328, 156, 337, 339, + 333, 334, 442, 156, 156, 336, 340, 156, 330, 156, + 335, 156, 442, 156, 185, 185, 328, 156, 337, 339, 331, 156, 190, 190, 172, 341, 333, 342, 334, 156, 156, 336, 340, 156, 343, 344, 335, 156, 338, 338, 345, 345, 345, 347, 337, 348, 339, 349, 350, 351, @@ -759,223 +760,222 @@ static yyconst flex_int16_t yy_nxt[3278] = 343, 344, 156, 156, 356, 156, 156, 346, 359, 172, 347, 348, 173, 349, 358, 350, 351, 156, 357, 156, 156, 354, 360, 355, 363, 373, 362, 361, 156, 156, - 356, 156, 156, 156, 359, 156, 156, 364, 440, 440, - 440, 358, 367, 156, 368, 440, 156, 440, 360, 440, - 440, 363, 373, 362, 361, 440, 374, 173, 375, 156, - 376, 156, 156, 364, 365, 365, 365, 156, 367, 379, + 356, 156, 156, 156, 359, 156, 156, 364, 442, 378, + 442, 358, 367, 156, 368, 442, 156, 442, 360, 442, + 442, 363, 373, 362, 361, 442, 374, 173, 375, 156, + 376, 156, 156, 364, 365, 365, 365, 156, 367, 380, 368, 369, 369, 369, 366, 345, 345, 345, 371, 371, - 371, 370, 374, 440, 375, 346, 376, 156, 372, 365, - 365, 365, 156, 156, 382, 379, 369, 369, 369, 366, - - 380, 371, 371, 371, 381, 440, 370, 156, 440, 156, - 385, 372, 156, 156, 383, 387, 384, 388, 156, 440, - 382, 440, 365, 365, 365, 389, 380, 156, 440, 393, - 440, 381, 366, 156, 156, 156, 385, 440, 156, 156, - 383, 387, 384, 399, 388, 369, 369, 369, 371, 371, - 371, 400, 389, 156, 396, 370, 393, 156, 372, 156, - 156, 391, 391, 391, 394, 156, 395, 440, 156, 399, - 403, 392, 156, 156, 391, 391, 391, 410, 400, 440, - 397, 396, 398, 156, 392, 156, 440, 440, 156, 440, - 394, 440, 440, 395, 156, 440, 440, 403, 156, 156, - - 401, 401, 401, 410, 440, 397, 404, 404, 404, 398, - 402, 411, 156, 408, 156, 156, 405, 391, 391, 391, - 406, 406, 406, 401, 401, 401, 440, 392, 440, 413, - 407, 412, 414, 402, 404, 404, 404, 411, 156, 415, - 408, 156, 440, 418, 405, 406, 406, 406, 401, 401, - 401, 419, 404, 404, 404, 407, 413, 412, 402, 414, - 423, 156, 405, 406, 406, 406, 415, 420, 416, 418, - 421, 440, 156, 407, 156, 425, 422, 419, 156, 156, - 427, 424, 429, 156, 426, 440, 423, 156, 156, 156, - 156, 428, 431, 433, 420, 416, 430, 421, 156, 435, - - 156, 434, 425, 422, 156, 156, 427, 424, 429, 156, - 156, 426, 156, 432, 156, 156, 156, 428, 431, 436, - 433, 437, 430, 440, 156, 156, 435, 440, 434, 438, - 439, 440, 440, 440, 440, 440, 156, 440, 156, 432, - 440, 440, 440, 440, 440, 440, 436, 437, 440, 440, - 156, 156, 440, 440, 440, 438, 440, 440, 156, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 156, 73, 73, 73, 73, 73, + 371, 370, 374, 442, 375, 346, 376, 379, 372, 365, + 365, 365, 156, 156, 386, 380, 369, 369, 369, 366, + + 381, 371, 371, 371, 382, 442, 370, 156, 442, 156, + 156, 372, 156, 442, 383, 388, 384, 385, 156, 389, + 386, 378, 365, 365, 365, 390, 381, 156, 395, 442, + 442, 382, 366, 156, 156, 156, 156, 378, 156, 156, + 383, 388, 384, 385, 156, 394, 389, 369, 369, 369, + 442, 396, 390, 156, 371, 371, 371, 370, 401, 402, + 156, 392, 392, 392, 372, 156, 156, 397, 405, 379, + 156, 393, 394, 156, 398, 442, 379, 396, 399, 156, + 392, 392, 392, 400, 401, 379, 402, 442, 156, 156, + 393, 442, 156, 412, 397, 405, 403, 403, 403, 156, + + 442, 398, 410, 399, 156, 156, 404, 406, 406, 406, + 400, 392, 392, 392, 156, 156, 413, 407, 156, 412, + 415, 393, 408, 408, 408, 403, 403, 403, 442, 410, + 156, 442, 409, 442, 416, 404, 406, 406, 406, 408, + 408, 408, 413, 414, 156, 417, 407, 415, 422, 409, + 403, 403, 403, 420, 406, 406, 406, 408, 408, 408, + 404, 416, 421, 156, 407, 418, 423, 409, 424, 414, + 156, 156, 417, 425, 156, 422, 156, 156, 426, 420, + 427, 428, 442, 429, 156, 431, 430, 156, 421, 156, + 156, 433, 418, 423, 435, 424, 156, 156, 432, 425, + + 156, 437, 156, 156, 426, 156, 434, 427, 428, 429, + 156, 431, 430, 156, 436, 441, 156, 433, 439, 438, + 442, 435, 156, 156, 432, 156, 442, 440, 437, 442, + 442, 156, 434, 442, 442, 442, 442, 442, 442, 442, + 442, 436, 442, 156, 439, 442, 438, 442, 156, 156, + 442, 156, 442, 440, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 156, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 73, 73, 73, 73, 73, 73, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 116, 440, 440, 440, 116, 116, 116, + 78, 78, 78, 78, 78, 78, 78, 78, 116, 442, + 442, 442, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, + 116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 119, 119, 119, 119, 119, - 119, 119, 121, 121, 440, 121, 121, 121, 121, 121, + + 119, 119, 119, 119, 119, 119, 119, 121, 121, 442, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 126, 126, 126, 440, 126, 126, - 440, 126, 440, 440, 126, 126, 126, 126, 126, 126, - 126, 126, 127, 127, 440, 440, 440, 440, 127, 127, - - 127, 127, 127, 127, 127, 143, 440, 143, 440, 440, - 440, 143, 143, 440, 143, 440, 440, 440, 143, 440, - 440, 440, 143, 143, 143, 143, 143, 143, 143, 146, - 440, 146, 440, 146, 146, 440, 440, 440, 440, 440, - 146, 146, 146, 146, 146, 146, 146, 149, 440, 440, - 149, 149, 149, 149, 149, 440, 440, 440, 149, 149, - 149, 149, 149, 149, 149, 150, 150, 440, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 126, + 126, 126, 442, 126, 126, 442, 126, 442, 442, 126, + 126, 126, 126, 126, 126, 126, 126, 127, 127, 442, + 442, 442, 442, 127, 127, 127, 127, 127, 127, 127, + 143, 442, 143, 442, 442, 442, 143, 143, 442, 143, + + 442, 442, 442, 143, 442, 442, 442, 143, 143, 143, + 143, 143, 143, 143, 146, 442, 146, 442, 146, 146, + 442, 442, 442, 442, 442, 146, 146, 146, 146, 146, + 146, 146, 149, 442, 442, 149, 149, 149, 149, 149, + 442, 442, 442, 149, 149, 149, 149, 149, 149, 149, + 150, 150, 442, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 153, 440, 440, 440, 153, 440, 153, 153, 440, + 150, 150, 150, 150, 150, 150, 153, 442, 442, 442, + 153, 442, 153, 153, 442, 442, 442, 442, 153, 153, + 153, 153, 153, 153, 153, 156, 156, 156, 156, 156, - 440, 440, 440, 153, 153, 153, 153, 153, 153, 153, - 156, 156, 156, 156, 156, 156, 156, 440, 156, 440, - 440, 156, 156, 156, 156, 156, 156, 156, 156, 171, + 156, 156, 442, 156, 442, 442, 156, 156, 156, 156, + 156, 156, 156, 156, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 177, 177, 177, 440, 440, 440, 440, 177, 177, - 177, 177, 177, 177, 177, 177, 178, 178, 178, 178, - - 178, 178, 178, 440, 178, 178, 178, 178, 178, 178, + 174, 174, 174, 174, 174, 174, 177, 177, 177, 442, + 442, 442, 442, 177, 177, 177, 177, 177, 177, 177, + 177, 178, 178, 178, 178, 178, 178, 178, 442, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 181, 440, 440, 440, 181, 181, 181, 181, + + 178, 178, 178, 178, 178, 178, 178, 181, 442, 442, + 442, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 183, 183, - 183, 440, 440, 440, 440, 183, 183, 183, 183, 183, - 183, 183, 183, 185, 185, 185, 185, 185, 185, 440, + 181, 181, 181, 183, 183, 183, 442, 442, 442, 442, + 183, 183, 183, 183, 183, 183, 183, 183, 185, 185, + 185, 185, 185, 185, 442, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 189, - 440, 189, 440, 440, 440, 440, 440, 440, 440, 440, + 185, 185, 185, 185, 189, 442, 189, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 189, 189, + 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, - 440, 440, 440, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 201, 201, 440, 440, - 440, 440, 201, 201, 201, 201, 201, 201, 201, 201, + 190, 201, 201, 442, 442, 442, 442, 201, 201, 201, + 201, 201, 201, 201, 201, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 220, 220, 440, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 218, 220, 220, 442, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 127, 127, 127, + 442, 442, 442, 127, 127, 127, 127, 127, 127, 127, + + 143, 442, 143, 442, 442, 442, 143, 143, 442, 143, + 442, 442, 442, 143, 442, 442, 442, 143, 143, 143, + 143, 143, 143, 143, 146, 442, 146, 442, 146, 146, + 442, 442, 442, 442, 442, 146, 146, 146, 146, 146, + 146, 146, 149, 149, 149, 149, 149, 442, 442, 442, + 149, 149, 149, 149, 149, 149, 149, 152, 442, 442, + 442, 152, 442, 442, 442, 442, 442, 442, 442, 152, + 152, 152, 152, 152, 152, 152, 236, 442, 442, 236, + 442, 236, 442, 236, 236, 442, 442, 236, 236, 442, + 236, 236, 236, 236, 236, 236, 236, 150, 150, 150, - 220, 220, 127, 127, 127, 440, 440, 440, 127, 127, - 127, 127, 127, 127, 127, 143, 440, 143, 440, 440, - 440, 143, 143, 440, 143, 440, 440, 440, 143, 440, - 440, 440, 143, 143, 143, 143, 143, 143, 143, 146, - 440, 146, 440, 146, 146, 440, 440, 440, 440, 440, - 146, 146, 146, 146, 146, 146, 146, 149, 149, 149, - 149, 149, 440, 440, 440, 149, 149, 149, 149, 149, - 149, 149, 152, 440, 440, 440, 152, 440, 440, 440, - 440, 440, 440, 440, 152, 152, 152, 152, 152, 152, - 152, 236, 440, 440, 236, 440, 236, 440, 236, 236, - - 440, 440, 236, 236, 440, 236, 236, 236, 236, 236, - 236, 236, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 153, 440, - 440, 440, 440, 440, 153, 153, 440, 153, 153, 153, - 440, 440, 440, 153, 153, 153, 153, 153, 153, 153, - 242, 440, 440, 242, 242, 242, 242, 242, 242, 242, - 440, 242, 242, 440, 242, 242, 242, 242, 242, 242, - 242, 242, 156, 156, 156, 156, 156, 156, 156, 440, - 156, 440, 440, 156, 156, 156, 156, 156, 156, 156, - - 156, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 153, 442, 442, 442, 442, 442, 153, + 153, 442, 153, 153, 153, 442, 442, 442, 153, 153, + 153, 153, 153, 153, 153, 242, 442, 442, 242, 242, + 242, 242, 242, 242, 242, 442, 242, 242, 442, 242, + 242, 242, 242, 242, 242, 242, 242, 156, 156, 156, + 156, 156, 156, 156, 442, 156, 442, 442, 156, 156, + 156, 156, 156, 156, 156, 156, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 440, 440, - 440, 440, 440, 440, 171, 440, 440, 440, 440, 171, - 171, 171, 440, 440, 171, 171, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 177, 177, 177, 440, 440, 440, 440, 177, - 177, 177, 177, 177, 177, 177, 177, 178, 178, 178, - 178, 178, 178, 178, 440, 178, 178, 178, 178, 178, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 171, 442, 442, 442, 442, 442, 442, 171, + 442, 442, 442, 442, 171, 171, 171, 442, 442, 171, + 171, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 177, 177, 177, + 442, 442, 442, 442, 177, 177, 177, 177, 177, 177, + 177, 177, 178, 178, 178, 178, 178, 178, 178, 442, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 181, 440, 440, 440, 181, 181, 181, + 178, 178, 178, 178, 178, 178, 178, 178, 181, 442, + + 442, 442, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 183, - 183, 183, 440, 440, 440, 440, 183, 183, 183, 183, - 183, 183, 183, 183, 185, 185, 185, 185, 185, 185, - 440, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 181, 181, 181, 181, 183, 183, 183, 442, 442, 442, + 442, 183, 183, 183, 183, 183, 183, 183, 183, 185, + 185, 185, 185, 185, 185, 442, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 440, 440, 440, 440, 440, 185, 440, 440, - 440, 440, 440, 440, 185, 440, 440, 185, 440, 185, + 185, 185, 185, 185, 185, 185, 185, 442, 442, 442, + 442, 442, 185, 442, 442, 442, 442, 442, 442, 185, + 442, 442, 185, 442, 185, 189, 189, 189, 189, 189, + 189, 189, 260, 442, 442, 442, 442, 442, 260, 260, - 189, 189, 189, 189, 189, 189, 189, 260, 440, 440, - 440, 440, 440, 260, 260, 260, 260, 440, 440, 440, - 440, 260, 260, 260, 260, 260, 260, 260, 260, 190, + 260, 260, 442, 442, 442, 442, 260, 260, 260, 260, + 260, 260, 260, 260, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 440, 440, 440, - 440, 440, 190, 440, 440, 440, 440, 440, 440, 190, - 440, 440, 190, 440, 190, 263, 440, 440, 440, 440, - 440, 263, 263, 263, 201, 201, 440, 440, 440, 440, - 201, 201, 201, 201, 201, 201, 201, 201, 210, 210, - - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 190, 190, 442, 442, 442, 442, 442, 190, 442, 442, + 442, 442, 442, 442, 190, 442, 442, 190, 442, 190, + 263, 442, 442, 442, 442, 442, 263, 263, 263, 201, + 201, 442, 442, 442, 442, 201, 201, 201, 201, 201, + 201, 201, 201, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 269, 269, 269, 269, 269, 269, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 121, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 272, 272, 442, + 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 271, 271, 272, 272, 440, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 273, 273, - 440, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 272, 272, 272, 273, 273, 442, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 220, 220, 440, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 220, + 220, 442, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 274, 274, 440, 274, 274, 274, 274, 274, 274, 274, + 220, 220, 220, 220, 220, 274, 274, 442, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 126, 126, 126, 442, 126, 126, 442, 126, 442, + + 442, 126, 126, 126, 126, 126, 126, 126, 126, 236, + 442, 442, 236, 442, 236, 442, 236, 236, 442, 442, + 236, 236, 442, 236, 236, 236, 236, 236, 236, 236, + 291, 291, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 291, 291, 291, 291, 291, + 291, 291, 242, 442, 442, 242, 242, 242, 242, 242, + 242, 242, 442, 242, 242, 442, 242, 242, 242, 242, + 242, 242, 242, 242, 156, 156, 156, 156, 156, 156, + 156, 442, 156, 442, 442, 156, 156, 156, 156, 156, + 156, 156, 156, 171, 171, 171, 171, 171, 171, 171, - 274, 274, 274, 274, 274, 274, 126, 126, 126, 440, - 126, 126, 440, 126, 440, 440, 126, 126, 126, 126, - 126, 126, 126, 126, 236, 440, 440, 236, 440, 236, - 440, 236, 236, 440, 440, 236, 236, 440, 236, 236, - 236, 236, 236, 236, 236, 291, 291, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 291, 291, 291, 291, 291, 291, 291, 242, 440, 440, - 242, 242, 242, 242, 242, 242, 242, 440, 242, 242, - 440, 242, 242, 242, 242, 242, 242, 242, 242, 156, - 156, 156, 156, 156, 156, 156, 440, 156, 440, 440, - - 156, 156, 156, 156, 156, 156, 156, 156, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 308, 308, 440, 440, 440, 440, - 308, 308, 308, 310, 310, 440, 440, 440, 440, 310, - 310, 310, 185, 185, 440, 440, 440, 440, 185, 185, - 185, 190, 190, 440, 440, 440, 440, 190, 190, 190, - 377, 377, 440, 377, 377, 377, 377, 377, 377, 377, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 308, + 308, 442, 442, 442, 442, 308, 308, 308, 310, 310, + 442, 442, 442, 442, 310, 310, 310, 185, 185, 442, + 442, 442, 442, 185, 185, 185, 190, 190, 442, 442, + 442, 442, 190, 190, 190, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, - 377, 377, 377, 377, 377, 377, 15, 440, 440, 440, - - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440 + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + 377, 15, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442 } ; -static yyconst flex_int16_t yy_chk[3278] = +static yyconst flex_int16_t yy_chk[3263] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1004,7 +1004,7 @@ static yyconst flex_int16_t yy_chk[3278] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 6, 7, 7, 7, 8, 8, 8, 9, 25, - 437, 5, 6, 10, 25, 9, 9, 9, 104, 104, + 439, 5, 6, 10, 25, 9, 9, 9, 104, 104, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, @@ -1023,35 +1023,35 @@ static yyconst flex_int16_t yy_chk[3278] = 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 30, 31, 64, 32, 33, 34, 414, - 35, 36, 37, 38, 399, 34, 40, 31, 39, 45, + 13, 13, 13, 30, 31, 64, 32, 33, 34, 416, + 35, 36, 37, 38, 401, 34, 40, 31, 39, 45, 89, 45, 90, 45, 45, 90, 38, 80, 80, 80, 30, 31, 32, 33, 107, 34, 35, 36, 37, 93, 38, 34, 40, 31, 44, 39, 44, 173, 173, 48, - 194, 194, 38, 64, 101, 101, 378, 44, 48, 44, - 107, 48, 48, 48, 377, 44, 47, 47, 89, 47, + 194, 194, 38, 64, 101, 101, 271, 44, 48, 44, + 107, 48, 48, 48, 269, 44, 47, 47, 89, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 93, 109, 47, 101, 102, 102, 102, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, - 123, 49, 49, 49, 113, 49, 353, 110, 111, 109, + 123, 49, 49, 49, 113, 49, 217, 110, 111, 109, 101, 123, 112, 49, 55, 116, 116, 116, 47, 47, 47, 47, 50, 50, 50, 50, 50, 55, 50, 50, 50, 113, 50, 110, 111, 128, 135, 49, 112, 171, - 49, 55, 271, 47, 47, 47, 326, 52, 326, 53, - 120, 120, 120, 55, 129, 120, 269, 52, 130, 53, + 49, 55, 215, 47, 47, 47, 326, 52, 326, 53, + 120, 120, 120, 55, 129, 120, 210, 52, 130, 53, 52, 128, 53, 135, 50, 51, 51, 51, 51, 51, 131, 51, 51, 51, 52, 51, 53, 54, 56, 57, 129, 51, 54, 52, 130, 53, 52, 171, 53, 54, - 54, 56, 57, 56, 51, 217, 131, 57, 122, 122, + 54, 56, 57, 56, 51, 179, 131, 57, 122, 122, 122, 60, 364, 122, 54, 56, 57, 51, 51, 54, - 132, 134, 215, 60, 60, 54, 54, 56, 57, 56, + 132, 134, 178, 60, 60, 54, 54, 56, 57, 56, 51, 58, 59, 57, 136, 58, 59, 364, 60, 137, 138, 139, 140, 136, 58, 59, 132, 134, 58, 60, - 60, 143, 352, 143, 352, 143, 143, 210, 58, 59, + 60, 143, 352, 143, 352, 143, 143, 174, 58, 59, 152, 136, 58, 59, 152, 137, 138, 139, 140, 136, - 58, 59, 152, 179, 58, 119, 119, 119, 119, 119, + 58, 59, 152, 151, 58, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, @@ -1061,28 +1061,28 @@ static yyconst flex_int16_t yy_chk[3278] = 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 141, 142, 146, 142, 146, - 190, 146, 146, 148, 178, 148, 174, 148, 148, 142, - 151, 142, 149, 149, 149, 160, 160, 142, 162, 241, + 190, 146, 146, 148, 145, 148, 127, 148, 148, 142, + 117, 142, 149, 149, 149, 160, 160, 142, 162, 241, 241, 141, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 145, 153, + 150, 150, 150, 150, 150, 150, 150, 150, 106, 153, 150, 160, 160, 190, 162, 150, 150, 150, 150, 150, - 150, 153, 153, 127, 167, 153, 153, 153, 153, 155, + 150, 153, 153, 105, 167, 153, 153, 153, 153, 155, 202, 155, 159, 155, 155, 158, 161, 159, 163, 154, - 161, 163, 158, 117, 150, 150, 150, 150, 154, 154, + 161, 163, 158, 100, 150, 150, 150, 150, 154, 154, 167, 154, 154, 182, 182, 182, 154, 202, 159, 374, 154, 158, 161, 159, 163, 185, 161, 163, 158, 150, - 150, 150, 156, 156, 156, 156, 156, 106, 156, 156, - 156, 105, 156, 164, 374, 157, 157, 157, 157, 157, + 150, 150, 156, 156, 156, 156, 156, 88, 156, 156, + 156, 75, 156, 164, 374, 157, 157, 157, 157, 157, 154, 157, 157, 157, 165, 157, 168, 164, 166, 203, - 168, 100, 169, 165, 204, 166, 88, 165, 169, 206, - 164, 170, 170, 185, 156, 187, 187, 75, 157, 192, + 168, 74, 169, 165, 204, 166, 73, 165, 169, 206, + 164, 170, 170, 185, 156, 187, 187, 68, 157, 192, 192, 165, 168, 164, 166, 203, 168, 157, 169, 165, - 204, 166, 207, 165, 169, 74, 206, 170, 170, 196, - 196, 196, 240, 222, 157, 73, 187, 208, 208, 208, - 192, 213, 213, 213, 240, 68, 213, 258, 258, 207, - 214, 214, 214, 261, 261, 214, 65, 216, 216, 216, + 204, 166, 207, 165, 169, 65, 206, 170, 170, 196, + 196, 196, 240, 222, 157, 46, 187, 208, 208, 208, + 192, 213, 213, 213, 240, 27, 213, 258, 258, 207, + 214, 214, 214, 261, 261, 214, 24, 216, 216, 216, 222, 187, 216, 289, 289, 192, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, @@ -1093,12 +1093,12 @@ static yyconst flex_int16_t yy_chk[3278] = 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 223, 224, 224, 225, - 226, 46, 227, 228, 229, 230, 231, 27, 233, 234, - 235, 237, 237, 237, 239, 239, 239, 250, 24, 246, - 20, 250, 223, 224, 224, 246, 225, 226, 227, 228, + 226, 20, 227, 228, 229, 230, 231, 15, 233, 234, + 235, 237, 237, 237, 239, 239, 239, 250, 0, 246, + 0, 250, 223, 224, 224, 246, 225, 226, 227, 228, 229, 230, 242, 231, 233, 234, 278, 235, 290, 290, - 15, 242, 242, 250, 242, 242, 246, 250, 0, 242, + 0, 242, 242, 250, 242, 242, 246, 250, 0, 242, 247, 246, 280, 242, 243, 243, 243, 243, 243, 247, 243, 243, 243, 278, 243, 244, 244, 244, 244, 244, 0, 244, 244, 244, 248, 244, 249, 247, 243, 280, @@ -1123,220 +1123,219 @@ static yyconst flex_int16_t yy_chk[3278] = 316, 317, 329, 337, 329, 333, 328, 331, 333, 338, 319, 320, 306, 321, 332, 322, 323, 334, 330, 327, 332, 327, 334, 328, 339, 348, 336, 335, 329, 337, - 329, 333, 328, 335, 333, 331, 336, 340, 0, 0, + 329, 333, 328, 335, 333, 331, 336, 340, 0, 353, 0, 332, 342, 334, 343, 0, 332, 0, 334, 0, 0, 339, 348, 336, 335, 0, 349, 338, 350, 335, 351, 331, 336, 340, 341, 341, 341, 355, 342, 355, 343, 344, 344, 344, 341, 345, 345, 345, 347, 347, - 347, 344, 349, 0, 350, 345, 351, 360, 347, 354, - 354, 354, 356, 355, 360, 355, 357, 357, 357, 354, - - 356, 358, 358, 358, 359, 0, 357, 361, 0, 362, - 363, 358, 359, 360, 361, 367, 362, 368, 356, 0, - 360, 0, 365, 365, 365, 373, 356, 354, 0, 376, - 0, 359, 365, 361, 357, 362, 363, 0, 359, 358, - 361, 367, 362, 385, 368, 369, 369, 369, 371, 371, - 371, 386, 373, 354, 381, 369, 376, 379, 371, 381, - 357, 375, 375, 375, 379, 358, 380, 0, 382, 385, - 389, 375, 380, 395, 383, 383, 383, 400, 386, 0, - 382, 381, 384, 379, 383, 381, 0, 0, 384, 0, - 379, 0, 0, 380, 382, 0, 0, 389, 380, 395, - - 387, 387, 387, 400, 0, 382, 390, 390, 390, 384, - 387, 403, 383, 396, 384, 396, 390, 391, 391, 391, - 393, 393, 393, 394, 394, 394, 0, 391, 0, 409, - 393, 408, 410, 394, 397, 397, 397, 403, 383, 411, - 396, 396, 0, 415, 397, 398, 398, 398, 401, 401, - 401, 416, 404, 404, 404, 398, 409, 408, 401, 410, - 421, 394, 404, 406, 406, 406, 411, 417, 412, 415, - 418, 0, 397, 406, 412, 423, 419, 416, 419, 422, - 425, 422, 427, 398, 424, 0, 421, 394, 428, 426, - 424, 426, 429, 431, 417, 412, 428, 418, 397, 433, - - 412, 432, 423, 419, 419, 422, 425, 422, 427, 398, - 432, 424, 430, 430, 428, 426, 424, 426, 429, 434, - 431, 435, 428, 0, 436, 434, 433, 0, 432, 436, - 438, 0, 0, 0, 0, 0, 432, 0, 430, 430, - 0, 0, 0, 0, 0, 0, 434, 435, 0, 0, - 436, 434, 0, 0, 0, 436, 0, 0, 438, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 438, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, - - 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, - 441, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 443, 443, 443, + 347, 344, 349, 0, 350, 345, 351, 353, 347, 354, + 354, 354, 356, 355, 363, 355, 357, 357, 357, 354, + + 356, 358, 358, 358, 359, 0, 357, 360, 0, 361, + 362, 358, 359, 0, 360, 367, 361, 362, 356, 368, + 363, 377, 365, 365, 365, 373, 356, 354, 379, 0, + 0, 359, 365, 360, 357, 361, 362, 395, 359, 358, + 360, 367, 361, 362, 380, 376, 368, 369, 369, 369, + 0, 380, 373, 354, 371, 371, 371, 369, 386, 387, + 357, 375, 375, 375, 371, 358, 383, 381, 390, 377, + 380, 375, 376, 381, 382, 0, 379, 380, 383, 382, + 384, 384, 384, 385, 386, 395, 387, 0, 397, 385, + 384, 0, 383, 402, 381, 390, 388, 388, 388, 381, + + 0, 382, 398, 383, 398, 382, 388, 391, 391, 391, + 385, 392, 392, 392, 397, 385, 405, 391, 384, 402, + 411, 392, 394, 394, 394, 396, 396, 396, 0, 398, + 398, 0, 394, 0, 412, 396, 399, 399, 399, 400, + 400, 400, 405, 410, 384, 413, 399, 411, 419, 400, + 403, 403, 403, 417, 406, 406, 406, 408, 408, 408, + 403, 412, 418, 396, 406, 414, 420, 408, 421, 410, + 421, 414, 413, 423, 399, 419, 424, 400, 424, 417, + 425, 426, 0, 427, 428, 429, 428, 426, 418, 396, + 430, 431, 414, 420, 433, 421, 421, 414, 430, 423, + + 399, 435, 424, 400, 424, 432, 432, 425, 426, 427, + 428, 429, 428, 426, 434, 440, 430, 431, 437, 436, + 0, 433, 438, 434, 430, 436, 0, 438, 435, 0, + 0, 432, 432, 0, 0, 0, 0, 0, 0, 0, + 0, 434, 0, 440, 437, 0, 436, 0, 438, 434, + 0, 436, 0, 438, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, - 443, 443, 443, 444, 0, 0, 0, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 444, 444, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, + 444, 444, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 445, 445, 446, 446, 446, 446, 446, - 446, 446, 447, 447, 0, 447, 447, 447, 447, 447, + 445, 445, 445, 445, 445, 445, 445, 445, 446, 0, + 0, 0, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 449, 449, 449, 0, 449, 449, - 0, 449, 0, 0, 449, 449, 449, 449, 449, 449, - 449, 449, 450, 450, 0, 0, 0, 0, 450, 450, - - 450, 450, 450, 450, 450, 451, 0, 451, 0, 0, - 0, 451, 451, 0, 451, 0, 0, 0, 451, 0, - 0, 0, 451, 451, 451, 451, 451, 451, 451, 452, - 0, 452, 0, 452, 452, 0, 0, 0, 0, 0, - 452, 452, 452, 452, 452, 452, 452, 453, 0, 0, - 453, 453, 453, 453, 453, 0, 0, 0, 453, 453, - 453, 453, 453, 453, 453, 454, 454, 0, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 455, 0, 0, 0, 455, 0, 455, 455, 0, + 448, 448, 448, 448, 448, 448, 448, 449, 449, 0, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, + 451, 451, 0, 451, 451, 0, 451, 0, 0, 451, + 451, 451, 451, 451, 451, 451, 451, 452, 452, 0, + 0, 0, 0, 452, 452, 452, 452, 452, 452, 452, + 453, 0, 453, 0, 0, 0, 453, 453, 0, 453, + + 0, 0, 0, 453, 0, 0, 0, 453, 453, 453, + 453, 453, 453, 453, 454, 0, 454, 0, 454, 454, + 0, 0, 0, 0, 0, 454, 454, 454, 454, 454, + 454, 454, 455, 0, 0, 455, 455, 455, 455, 455, 0, 0, 0, 455, 455, 455, 455, 455, 455, 455, - 456, 456, 456, 456, 456, 456, 456, 0, 456, 0, - 0, 456, 456, 456, 456, 456, 456, 456, 456, 457, - 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 456, 456, 0, 456, 456, 456, 456, 456, 456, 456, + 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, + 456, 456, 456, 456, 456, 456, 457, 0, 0, 0, + 457, 0, 457, 457, 0, 0, 0, 0, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 458, 459, 459, 459, 0, 0, 0, 0, 459, 459, - 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, - 460, 460, 460, 0, 460, 460, 460, 460, 460, 460, + 458, 458, 0, 458, 0, 0, 458, 458, 458, 458, + 458, 458, 458, 458, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 461, 0, 0, 0, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 462, 462, - 462, 0, 0, 0, 0, 462, 462, 462, 462, 462, - 462, 462, 462, 463, 463, 463, 463, 463, 463, 0, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 464, - 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, + 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 460, 460, 460, 460, 461, 461, 461, 0, + 0, 0, 0, 461, 461, 461, 461, 461, 461, 461, + 461, 462, 462, 462, 462, 462, 462, 462, 0, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 0, 0, 0, 464, 464, 464, 464, 464, 464, 464, - 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, + 462, 462, 462, 462, 462, 462, 462, 463, 0, 0, + 0, 463, 463, 463, 463, 463, 463, 463, 463, 463, + 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, + 463, 463, 463, 464, 464, 464, 0, 0, 0, 0, + 464, 464, 464, 464, 464, 464, 464, 464, 465, 465, + 465, 465, 465, 465, 0, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 466, 466, 0, 0, - 0, 0, 466, 466, 466, 466, 466, 466, 466, 466, + 465, 465, 465, 465, 466, 0, 466, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 466, 466, + 466, 466, 466, 466, 466, 467, 467, 467, 467, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, - 467, 467, 467, 467, 467, 467, 468, 468, 0, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, - - 468, 468, 469, 469, 469, 0, 0, 0, 469, 469, - 469, 469, 469, 469, 469, 470, 0, 470, 0, 0, - 0, 470, 470, 0, 470, 0, 0, 0, 470, 0, - 0, 0, 470, 470, 470, 470, 470, 470, 470, 471, - 0, 471, 0, 471, 471, 0, 0, 0, 0, 0, - 471, 471, 471, 471, 471, 471, 471, 472, 472, 472, - 472, 472, 0, 0, 0, 472, 472, 472, 472, 472, - 472, 472, 473, 0, 0, 0, 473, 0, 0, 0, - 0, 0, 0, 0, 473, 473, 473, 473, 473, 473, - 473, 474, 0, 0, 474, 0, 474, 0, 474, 474, - - 0, 0, 474, 474, 0, 474, 474, 474, 474, 474, - 474, 474, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 476, 0, - 0, 0, 0, 0, 476, 476, 0, 476, 476, 476, - 0, 0, 0, 476, 476, 476, 476, 476, 476, 476, - 477, 0, 0, 477, 477, 477, 477, 477, 477, 477, - 0, 477, 477, 0, 477, 477, 477, 477, 477, 477, - 477, 477, 478, 478, 478, 478, 478, 478, 478, 0, - 478, 0, 0, 478, 478, 478, 478, 478, 478, 478, - - 478, 479, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 480, 0, 0, - 0, 0, 0, 0, 480, 0, 0, 0, 0, 480, - 480, 480, 0, 0, 480, 480, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 467, 468, 468, 0, 0, 0, 0, 468, 468, 468, + 468, 468, 468, 468, 468, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 470, 470, 0, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, + 0, 0, 0, 471, 471, 471, 471, 471, 471, 471, + + 472, 0, 472, 0, 0, 0, 472, 472, 0, 472, + 0, 0, 0, 472, 0, 0, 0, 472, 472, 472, + 472, 472, 472, 472, 473, 0, 473, 0, 473, 473, + 0, 0, 0, 0, 0, 473, 473, 473, 473, 473, + 473, 473, 474, 474, 474, 474, 474, 0, 0, 0, + 474, 474, 474, 474, 474, 474, 474, 475, 0, 0, + 0, 475, 0, 0, 0, 0, 0, 0, 0, 475, + 475, 475, 475, 475, 475, 475, 476, 0, 0, 476, + 0, 476, 0, 476, 476, 0, 0, 476, 476, 0, + 476, 476, 476, 476, 476, 476, 476, 477, 477, 477, + + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, + 477, 477, 477, 478, 0, 0, 0, 0, 0, 478, + 478, 0, 478, 478, 478, 0, 0, 0, 478, 478, + 478, 478, 478, 478, 478, 479, 0, 0, 479, 479, + 479, 479, 479, 479, 479, 0, 479, 479, 0, 479, + 479, 479, 479, 479, 479, 479, 479, 480, 480, 480, + 480, 480, 480, 480, 0, 480, 0, 0, 480, 480, + 480, 480, 480, 480, 480, 480, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 482, 482, 482, 0, 0, 0, 0, 482, - 482, 482, 482, 482, 482, 482, 482, 483, 483, 483, - 483, 483, 483, 483, 0, 483, 483, 483, 483, 483, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 482, 0, 0, 0, 0, 0, 0, 482, + 0, 0, 0, 0, 482, 482, 482, 0, 0, 482, + 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, - 483, 483, 483, 484, 0, 0, 0, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, - 485, 485, 0, 0, 0, 0, 485, 485, 485, 485, - 485, 485, 485, 485, 486, 486, 486, 486, 486, 486, - 0, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 483, 483, 483, 483, 483, 483, 483, 484, 484, 484, + 0, 0, 0, 0, 484, 484, 484, 484, 484, 484, + 484, 484, 485, 485, 485, 485, 485, 485, 485, 0, + 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 486, 0, + + 0, 0, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 487, 487, 0, 0, 0, 0, 0, 487, 0, 0, - 0, 0, 0, 0, 487, 0, 0, 487, 0, 487, - - 488, 488, 488, 488, 488, 488, 488, 489, 0, 0, - 0, 0, 0, 489, 489, 489, 489, 0, 0, 0, - 0, 489, 489, 489, 489, 489, 489, 489, 489, 490, - 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 491, 491, 0, 0, 0, - 0, 0, 491, 0, 0, 0, 0, 0, 0, 491, - 0, 0, 491, 0, 491, 492, 0, 0, 0, 0, - 0, 492, 492, 492, 493, 493, 0, 0, 0, 0, - 493, 493, 493, 493, 493, 493, 493, 493, 494, 494, - - 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, - 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, - 494, 494, 494, 494, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 486, 486, 486, 486, 487, 487, 487, 0, 0, 0, + 0, 487, 487, 487, 487, 487, 487, 487, 487, 488, + 488, 488, 488, 488, 488, 0, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 489, 489, 0, 0, 0, + 0, 0, 489, 0, 0, 0, 0, 0, 0, 489, + 0, 0, 489, 0, 489, 490, 490, 490, 490, 490, + 490, 490, 491, 0, 0, 0, 0, 0, 491, 491, + + 491, 491, 0, 0, 0, 0, 491, 491, 491, 491, + 491, 491, 491, 491, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 493, 493, 0, 0, 0, 0, 0, 493, 0, 0, + 0, 0, 0, 0, 493, 0, 0, 493, 0, 493, + 494, 0, 0, 0, 0, 0, 494, 494, 494, 495, + 495, 0, 0, 0, 0, 495, 495, 495, 495, 495, + 495, 495, 495, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, + + 496, 496, 496, 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - - 497, 497, 498, 498, 0, 498, 498, 498, 498, 498, + 497, 497, 497, 497, 497, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 498, 499, 499, - 0, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 498, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 500, 500, 0, 500, 500, 500, + 499, 499, 499, 499, 499, 499, 499, 500, 500, 0, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 501, 501, 0, 501, 501, 501, 501, 501, 501, 501, + 500, 500, 500, 501, 501, 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, + 502, 0, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 503, 503, 0, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 504, 504, 504, 0, 504, 504, 0, 504, 0, + + 0, 504, 504, 504, 504, 504, 504, 504, 504, 505, + 0, 0, 505, 0, 505, 0, 505, 505, 0, 0, + 505, 505, 0, 505, 505, 505, 505, 505, 505, 505, + 506, 506, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 506, 506, 506, 506, 506, + 506, 506, 507, 0, 0, 507, 507, 507, 507, 507, + 507, 507, 0, 507, 507, 0, 507, 507, 507, 507, + 507, 507, 507, 507, 508, 508, 508, 508, 508, 508, + 508, 0, 508, 0, 0, 508, 508, 508, 508, 508, + 508, 508, 508, 509, 509, 509, 509, 509, 509, 509, + + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 510, + 510, 0, 0, 0, 0, 510, 510, 510, 511, 511, + 0, 0, 0, 0, 511, 511, 511, 512, 512, 0, + 0, 0, 0, 512, 512, 512, 513, 513, 0, 0, + 0, 0, 513, 513, 513, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 501, 501, 501, 501, 501, 501, 502, 502, 502, 0, - 502, 502, 0, 502, 0, 0, 502, 502, 502, 502, - 502, 502, 502, 502, 503, 0, 0, 503, 0, 503, - 0, 503, 503, 0, 0, 503, 503, 0, 503, 503, - 503, 503, 503, 503, 503, 504, 504, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 504, 504, 504, 504, 504, 504, 504, 505, 0, 0, - 505, 505, 505, 505, 505, 505, 505, 0, 505, 505, - 0, 505, 505, 505, 505, 505, 505, 505, 505, 506, - 506, 506, 506, 506, 506, 506, 0, 506, 0, 0, - - 506, 506, 506, 506, 506, 506, 506, 506, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 508, 508, 0, 0, 0, 0, - 508, 508, 508, 509, 509, 0, 0, 0, 0, 509, - 509, 509, 510, 510, 0, 0, 0, 0, 510, 510, - 510, 511, 511, 0, 0, 0, 0, 511, 511, 511, - 512, 512, 0, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 440, 440, 440, 440, - - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 440, 440, 440, 440 + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442 } ; /* Table of booleans, true if rule could match eol. */ @@ -1345,7 +1344,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[98] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, }; static yy_state_type yy_last_accepting_state; @@ -1450,7 +1449,7 @@ extern int yydebug; */ int fileno(FILE *stream); -#line 1454 "lexer.c" +#line 1453 "lexer.c" #define INITIAL 0 #define INOBJ 1 @@ -1648,7 +1647,7 @@ YY_DECL /* keywords */ -#line 1652 "lexer.c" +#line 1651 "lexer.c" if ( !(yy_init) ) { @@ -1702,13 +1701,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 441 ) + if ( yy_current_state >= 443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3197 ); + while ( yy_base[yy_current_state] != 3182 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1900,69 +1899,73 @@ YY_RULE_SETUP case 38: YY_RULE_SETUP #line 144 "lexer.l" -{ dbgprintf("invalid char in expr: %s\n", yytext); } +{ parser_errmsg("invalid character '%s' in expression " + "- is there an invalid escape sequence somewhere?", + yytext); } YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP -#line 145 "lexer.l" +#line 147 "lexer.l" YY_BREAK case 40: YY_RULE_SETUP -#line 146 "lexer.l" -{ dbgprintf("invalid char in CALL stmt: %s\n", yytext); } +#line 148 "lexer.l" +{ parser_errmsg("invalid character '%s' in 'call' statement" + "- is there an invalid escape sequence somewhere?", + yytext); } YY_BREAK case 41: YY_RULE_SETUP -#line 147 "lexer.l" +#line 151 "lexer.l" { yylval.estr = es_newStrFromCStr(yytext, yyleng); BEGIN INITIAL; return NAME; } YY_BREAK case 42: YY_RULE_SETUP -#line 150 "lexer.l" +#line 154 "lexer.l" { return '&'; } YY_BREAK case 43: YY_RULE_SETUP -#line 151 "lexer.l" +#line 155 "lexer.l" { return '{'; } YY_BREAK case 44: YY_RULE_SETUP -#line 152 "lexer.l" +#line 156 "lexer.l" { return '}'; } YY_BREAK case 45: YY_RULE_SETUP -#line 153 "lexer.l" +#line 157 "lexer.l" { return STOP; } YY_BREAK case 46: YY_RULE_SETUP -#line 154 "lexer.l" +#line 158 "lexer.l" { return ELSE; } YY_BREAK case 47: YY_RULE_SETUP -#line 155 "lexer.l" +#line 159 "lexer.l" { BEGIN INCALL; return CALL; } YY_BREAK case 48: YY_RULE_SETUP -#line 156 "lexer.l" +#line 160 "lexer.l" { BEGIN EXPR; return SET; } YY_BREAK case 49: YY_RULE_SETUP -#line 157 "lexer.l" +#line 161 "lexer.l" { BEGIN EXPR; return UNSET; } YY_BREAK case 50: YY_RULE_SETUP -#line 158 "lexer.l" +#line 162 "lexer.l" { return CONTINUE; } YY_BREAK /* line number support because the "preprocessor" combines lines and so needs @@ -1970,23 +1973,23 @@ YY_RULE_SETUP */ case 51: YY_RULE_SETUP -#line 162 "lexer.l" +#line 166 "lexer.l" { BEGIN LINENO; } YY_BREAK case 52: YY_RULE_SETUP -#line 163 "lexer.l" +#line 167 "lexer.l" { yylineno = atoi(yytext) - 1; } YY_BREAK case 53: YY_RULE_SETUP -#line 164 "lexer.l" +#line 168 "lexer.l" { BEGIN INITIAL; } YY_BREAK case 54: /* rule 54 can match eol */ YY_RULE_SETUP -#line 165 "lexer.l" +#line 169 "lexer.l" YY_BREAK /* $IncludeConfig must be detected as part of CFSYSLINE, because this is @@ -1995,12 +1998,12 @@ YY_RULE_SETUP case 55: /* rule 55 can match eol */ YY_RULE_SETUP -#line 169 "lexer.l" +#line 173 "lexer.l" YY_BREAK case 56: YY_RULE_SETUP -#line 170 "lexer.l" +#line 174 "lexer.l" { if(cnfDoInclude(yytext) != 0) yyterminate(); BEGIN INITIAL; } @@ -2008,117 +2011,121 @@ YY_RULE_SETUP case 57: /* rule 57 can match eol */ YY_RULE_SETUP -#line 173 "lexer.l" +#line 177 "lexer.l" { yylval.objType = CNFOBJ_GLOBAL; BEGIN INOBJ; return BEGINOBJ; } YY_BREAK case 58: /* rule 58 can match eol */ YY_RULE_SETUP -#line 175 "lexer.l" +#line 179 "lexer.l" { yylval.objType = CNFOBJ_TPL; BEGIN INOBJ; return BEGIN_TPL; } YY_BREAK case 59: /* rule 59 can match eol */ YY_RULE_SETUP -#line 177 "lexer.l" +#line 181 "lexer.l" { yylval.objType = CNFOBJ_RULESET; BEGIN INOBJ; return BEGIN_RULESET; } YY_BREAK case 60: /* rule 60 can match eol */ YY_RULE_SETUP -#line 179 "lexer.l" +#line 183 "lexer.l" { yylval.objType = CNFOBJ_PROPERTY; BEGIN INOBJ; return BEGIN_PROPERTY; } YY_BREAK case 61: /* rule 61 can match eol */ YY_RULE_SETUP -#line 181 "lexer.l" +#line 185 "lexer.l" { yylval.objType = CNFOBJ_CONSTANT; BEGIN INOBJ; return BEGIN_CONSTANT; } YY_BREAK case 62: /* rule 62 can match eol */ YY_RULE_SETUP -#line 183 "lexer.l" +#line 187 "lexer.l" { yylval.objType = CNFOBJ_INPUT; BEGIN INOBJ; return BEGINOBJ; } YY_BREAK case 63: /* rule 63 can match eol */ YY_RULE_SETUP -#line 185 "lexer.l" +#line 189 "lexer.l" { yylval.objType = CNFOBJ_MODULE; BEGIN INOBJ; return BEGINOBJ; } YY_BREAK case 64: /* rule 64 can match eol */ YY_RULE_SETUP -#line 187 "lexer.l" +#line 191 "lexer.l" { BEGIN INOBJ; return BEGIN_ACTION; } YY_BREAK case 65: +/* rule 65 can match eol */ YY_RULE_SETUP -#line 188 "lexer.l" +#line 192 "lexer.l" { - yylval.s = strdup(rmLeadingSpace(yytext)); return PROPFILT; } + yylval.s = strdup(rmLeadingSpace(yytext)); + dbgprintf("lexer: propfilt is '%s'\n", yylval.s); + return PROPFILT; + } YY_BREAK case 66: YY_RULE_SETUP -#line 190 "lexer.l" +#line 197 "lexer.l" { yylval.s = strdup(rmLeadingSpace(yytext)); return PRIFILT; } YY_BREAK case 67: -#line 192 "lexer.l" +#line 199 "lexer.l" case 68: -#line 193 "lexer.l" +#line 200 "lexer.l" case 69: /* rule 69 can match eol */ -#line 194 "lexer.l" +#line 201 "lexer.l" case 70: /* rule 70 can match eol */ -#line 195 "lexer.l" +#line 202 "lexer.l" case 71: /* rule 71 can match eol */ -#line 196 "lexer.l" +#line 203 "lexer.l" case 72: /* rule 72 can match eol */ -#line 197 "lexer.l" +#line 204 "lexer.l" case 73: /* rule 73 can match eol */ YY_RULE_SETUP -#line 197 "lexer.l" +#line 204 "lexer.l" { yylval.s = yytext; return LEGACY_ACTION; } YY_BREAK case 74: YY_RULE_SETUP -#line 198 "lexer.l" +#line 205 "lexer.l" { BEGIN INITIAL; return ENDOBJ; } YY_BREAK case 75: YY_RULE_SETUP -#line 199 "lexer.l" +#line 206 "lexer.l" { yylval.estr = es_newStrFromCStr(yytext, yyleng); return NAME; } YY_BREAK case 76: -#line 202 "lexer.l" +#line 209 "lexer.l" case 77: -#line 203 "lexer.l" +#line 210 "lexer.l" case 78: -#line 204 "lexer.l" +#line 211 "lexer.l" case 79: YY_RULE_SETUP -#line 204 "lexer.l" +#line 211 "lexer.l" { return(yytext[0]); } YY_BREAK case 80: /* rule 80 can match eol */ YY_RULE_SETUP -#line 205 "lexer.l" +#line 212 "lexer.l" { yytext[yyleng-1] = '\0'; unescapeStr((uchar*)yytext+1, yyleng-2); @@ -2129,28 +2136,28 @@ YY_RULE_SETUP return VALUE; }*/ case 81: YY_RULE_SETUP -#line 212 "lexer.l" +#line 219 "lexer.l" { preCommentState = YY_START; BEGIN COMMENT; } YY_BREAK case 82: YY_RULE_SETUP -#line 213 "lexer.l" +#line 220 "lexer.l" { preCommentState = YY_START; BEGIN COMMENT; } YY_BREAK case 83: YY_RULE_SETUP -#line 214 "lexer.l" +#line 221 "lexer.l" { preCommentState = YY_START; BEGIN COMMENT; } YY_BREAK case 84: YY_RULE_SETUP -#line 215 "lexer.l" +#line 222 "lexer.l" { BEGIN preCommentState; } YY_BREAK case 85: /* rule 85 can match eol */ YY_RULE_SETUP -#line 216 "lexer.l" +#line 223 "lexer.l" YY_BREAK case 86: @@ -2158,26 +2165,28 @@ case 86: (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 217 "lexer.l" +#line 224 "lexer.l" /* skip comments in input */ YY_BREAK case 87: /* rule 87 can match eol */ YY_RULE_SETUP -#line 218 "lexer.l" +#line 225 "lexer.l" YY_BREAK case 88: YY_RULE_SETUP -#line 219 "lexer.l" -{ dbgprintf("INOBJ: invalid char '%s'\n", yytext); } +#line 226 "lexer.l" +{ parser_errmsg("invalid character '%s' in object definition " + "- is there an invalid escape sequence somewhere?", + yytext); } YY_BREAK case 89: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 220 "lexer.l" +#line 229 "lexer.l" { /* see comment on $IncludeConfig above */ if(!strncasecmp(yytext, "$includeconfig ", 14)) { yyless(14); @@ -2195,7 +2204,7 @@ case 90: (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 231 "lexer.l" +#line 240 "lexer.l" { yylval.s = strdup(yytext); return BSD_TAG_SELECTOR; } YY_BREAK case 91: @@ -2204,7 +2213,7 @@ case 91: (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 232 "lexer.l" +#line 241 "lexer.l" { yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } YY_BREAK case 92: @@ -2213,7 +2222,7 @@ case 92: (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 233 "lexer.l" +#line 242 "lexer.l" { yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } YY_BREAK case 93: @@ -2221,26 +2230,27 @@ case 93: (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 234 "lexer.l" +#line 243 "lexer.l" { yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } YY_BREAK case 94: /* rule 94 can match eol */ YY_RULE_SETUP -#line 235 "lexer.l" +#line 244 "lexer.l" /* skip comments in input */ YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP -#line 236 "lexer.l" +#line 245 "lexer.l" /* drop whitespace */ YY_BREAK case 96: YY_RULE_SETUP -#line 237 "lexer.l" -{ dbgprintf("invalid char: %s\n", yytext); - } +#line 246 "lexer.l" +{ parser_errmsg("invalid character '%s' " + "- is there an invalid escape sequence somewhere?", + yytext); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INOBJ): @@ -2249,15 +2259,15 @@ case YY_STATE_EOF(INCL): case YY_STATE_EOF(LINENO): case YY_STATE_EOF(INCALL): case YY_STATE_EOF(EXPR): -#line 239 "lexer.l" +#line 249 "lexer.l" { if(popfile() != 0) yyterminate(); } YY_BREAK case 97: YY_RULE_SETUP -#line 241 "lexer.l" +#line 251 "lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2261 "lexer.c" +#line 2271 "lexer.c" case YY_END_OF_BUFFER: { @@ -2548,7 +2558,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 441 ) + if ( yy_current_state >= 443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2576,11 +2586,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 441 ) + if ( yy_current_state >= 443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 440); + yy_is_jam = (yy_current_state == 442); return yy_is_jam ? 0 : yy_current_state; } @@ -3226,7 +3236,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 241 "lexer.l" +#line 251 "lexer.l" int @@ -3290,6 +3300,7 @@ cnfSetLexFile(char *fname) currbs = bs; cnfcurrfn = bs->fn; yylineno = 1; + dbgprintf("config parser: pushed file %s on top of stack\n", fname); done: if(r != 0) { @@ -3317,6 +3328,7 @@ popfile(void) * necessary, as otherwise we may provide wrong file name information * at the end of include files as well. -- rgerhards, 2011-07-22 */ + dbgprintf("config parser: reached end of file %s\n", bs->fn); yy_delete_buffer(bs->bs); if(bs->prev != NULL) free(bs->fn); @@ -3326,12 +3338,16 @@ popfile(void) currbs = bs->prev; free(bs); - if(currbs == NULL) + if(currbs == NULL) { + dbgprintf("config parser: parsing completed\n"); return 1; /* all processed */ + } yy_switch_to_buffer(currbs->bs); yylineno = currbs->lineno; cnfcurrfn = currbs->fn; + dbgprintf("config parser: resume parsing of file %s at line %d\n", + cnfcurrfn, yylineno); return 0; } diff --git a/grammar/lexer.l b/grammar/lexer.l index 63eaa8c..237eb2a 100644 --- a/grammar/lexer.l +++ b/grammar/lexer.l @@ -141,9 +141,13 @@ int fileno(FILE *stream); <EXPR>[ \t\n] <EXPR>[a-z][a-z0-9_]* { yylval.estr = es_newStrFromCStr(yytext, yyleng); return FUNC; } -<EXPR>. { dbgprintf("invalid char in expr: %s\n", yytext); } +<EXPR>. { parser_errmsg("invalid character '%s' in expression " + "- is there an invalid escape sequence somewhere?", + yytext); } <INCALL>[ \t\n] -<INCALL>. { dbgprintf("invalid char in CALL stmt: %s\n", yytext); } +<INCALL>. { parser_errmsg("invalid character '%s' in 'call' statement" + "- is there an invalid escape sequence somewhere?", + yytext); } <INCALL>[a-zA-Z][a-zA-Z0-9_\.]* { yylval.estr = es_newStrFromCStr(yytext, yyleng); BEGIN INITIAL; return NAME; } @@ -185,8 +189,11 @@ int fileno(FILE *stream); "module"[ \n\t]*"(" { yylval.objType = CNFOBJ_MODULE; BEGIN INOBJ; return BEGINOBJ; } "action"[ \n\t]*"(" { BEGIN INOBJ; return BEGIN_ACTION; } -^[ \t]*:\$?[a-z\-]+[ ]*,[ ]*!?[a-z]+[ ]*,[ ]*\".*\" { - yylval.s = strdup(rmLeadingSpace(yytext)); return PROPFILT; } +^[ \t]*:\$?[a-z\-]+[ ]*,[ ]*!?[a-z]+[ ]*,[ ]*\"(\\\"|[^\"])*\" { + yylval.s = strdup(rmLeadingSpace(yytext)); + dbgprintf("lexer: propfilt is '%s'\n", yylval.s); + return PROPFILT; + } ^[ \t]*[\*a-z][\*a-z]*[0-7]*[\.,][,!=;\.\*a-z0-7]+ { yylval.s = strdup(rmLeadingSpace(yytext)); return PRIFILT; } "~" | "*" | @@ -216,7 +223,9 @@ int fileno(FILE *stream); <COMMENT>([^*]|\n)+|. <INOBJ>#.*$ /* skip comments in input */ <INOBJ>[ \n\t] -<INOBJ>. { dbgprintf("INOBJ: invalid char '%s'\n", yytext); } +<INOBJ>. { parser_errmsg("invalid character '%s' in object definition " + "- is there an invalid escape sequence somewhere?", + yytext); } \$[a-z]+.*$ { /* see comment on $IncludeConfig above */ if(!strncasecmp(yytext, "$includeconfig ", 14)) { yyless(14); @@ -234,8 +243,9 @@ int fileno(FILE *stream); ^[ \t]*[+-][a-z0-9.:-]+[ \t]*$ { yylval.s = strdup(yytext); return BSD_HOST_SELECTOR; } \#.*\n /* skip comments in input */ [\n\t ] /* drop whitespace */ -. { dbgprintf("invalid char: %s\n", yytext); - } +. { parser_errmsg("invalid character '%s' " + "- is there an invalid escape sequence somewhere?", + yytext); } <<EOF>> { if(popfile() != 0) yyterminate(); } %% @@ -300,6 +310,7 @@ cnfSetLexFile(char *fname) currbs = bs; cnfcurrfn = bs->fn; yylineno = 1; + dbgprintf("config parser: pushed file %s on top of stack\n", fname); done: if(r != 0) { @@ -327,6 +338,7 @@ popfile(void) * necessary, as otherwise we may provide wrong file name information * at the end of include files as well. -- rgerhards, 2011-07-22 */ + dbgprintf("config parser: reached end of file %s\n", bs->fn); yy_delete_buffer(bs->bs); if(bs->prev != NULL) free(bs->fn); @@ -336,12 +348,16 @@ popfile(void) currbs = bs->prev; free(bs); - if(currbs == NULL) + if(currbs == NULL) { + dbgprintf("config parser: parsing completed\n"); return 1; /* all processed */ + } yy_switch_to_buffer(currbs->bs); yylineno = currbs->lineno; cnfcurrfn = currbs->fn; + dbgprintf("config parser: resume parsing of file %s at line %d\n", + cnfcurrfn, yylineno); return 0; } diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index 0584d6a..20b86c5 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -2793,7 +2793,7 @@ cnfDoInclude(char *name) { char *cfgFile; char *finalName; - unsigned i; + int i; int result; glob_t cfgFiles; struct stat fileInfo; @@ -2829,7 +2829,12 @@ cnfDoInclude(char *name) return 1; } - for(i = 0; i < cfgFiles.gl_pathc; i++) { + /* note: bison "stacks" the files, so we need to submit them + * in reverse order to the *stack* in order to get the proper + * parsing order. Also see + * http://bugzilla.adiscon.com/show_bug.cgi?id=411 + */ + for(i = cfgFiles.gl_pathc - 1; i >= 0 ; i--) { cfgFile = cfgFiles.gl_pathv[i]; if(stat(cfgFile, &fileInfo) != 0) { char errStr[1024]; diff --git a/platform/README b/platform/README new file mode 100644 index 0000000..adbc301 --- /dev/null +++ b/platform/README @@ -0,0 +1,4 @@ +This subdirectory contains platform-specific files. They are maintained +based on a best effort basis, and are not necessarily the same like the +specific platform ships them. Some files are changed in the way the +rsyslog projects would recommend them; some may even be outdated. diff --git a/freebsd/rsyslogd b/platform/freebsd/rsyslogd index 1cbcb6f..1cbcb6f 100755 --- a/freebsd/rsyslogd +++ b/platform/freebsd/rsyslogd diff --git a/platform/redhat/rsyslog.conf b/platform/redhat/rsyslog.conf new file mode 100644 index 0000000..2210962 --- /dev/null +++ b/platform/redhat/rsyslog.conf @@ -0,0 +1,86 @@ +# rsyslog configuration file (for Red Hat-based systems) +# note that most of this config file uses old-style format, +# because it is well-known AND quite suitable for simple cases +# like we have with the default config. For more advanced +# things, RainerScript configuration is suggested. + +# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html +# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html + +#### MODULES #### + +module(load="imuxsock") # provides support for local system logging (e.g. via logger command) +module(load="imklog") # provides kernel logging support (previously done by rklogd) +#module(load"immark") # provides --MARK-- message capability + +# Provides UDP syslog reception +# for parameters see http://www.rsyslog.com/doc/imudp.html +#module(load="imudp") # needs to be done just once +#input(type="imudp" port="514") + +# Provides TCP syslog reception +# for parameters see http://www.rsyslog.com/doc/imtcp.html +#module(load="imtcp") # needs to be done just once +#input(type="imtcp" port="514") + + +#### GLOBAL DIRECTIVES #### + +# Use default timestamp format +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat + +# File syncing capability is disabled by default. This feature is usually not required, +# not useful and an extreme performance hit +#$ActionFileEnableSync on + +# Include all config files in /etc/rsyslog.d/ +$IncludeConfig /etc/rsyslog.d/*.conf + + +#### RULES #### + +# Log all kernel messages to the console. +# Logging much else clutters up the screen. +#kern.* /dev/console + +# Log anything (except mail) of level info or higher. +# Don't log private authentication messages! +*.info;mail.none;authpriv.none;cron.none /var/log/messages + +# The authpriv file has restricted access. +authpriv.* /var/log/secure + +# Log all the mail messages in one place. +mail.* /var/log/maillog + + +# Log cron stuff +cron.* /var/log/cron + +# Everybody gets emergency messages +*.emerg :omusrmsg:* + +# Save news errors of level crit and higher in a special file. +uucp,news.crit /var/log/spooler + +# Save boot messages also to boot.log +local7.* /var/log/boot.log + + +# ### begin forwarding rule ### +# The statement between the begin ... end define a SINGLE forwarding +# rule. They belong together, do NOT split them. If you create multiple +# forwarding rules, duplicate the whole block! +# Remote Logging (we use TCP for reliable delivery) +# +# An on-disk queue is created for this action. If the remote host is +# down, messages are spooled to disk and sent when it is up again. +#$WorkDirectory /var/lib/rsyslog # where to place spool files +#$ActionQueueFileName fwdRule1 # unique name prefix for spool files +#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) +#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown +#$ActionQueueType LinkedList # run asynchronously +#$ActionResumeRetryCount -1 # infinite retries if host is down +# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional +#*.* @@remote-host:514 +# ### end of the forwarding rule ### diff --git a/slackware/rc.rsyslogd b/platform/slackware/rc.rsyslogd index f5f8f45..f5f8f45 100755 --- a/slackware/rc.rsyslogd +++ b/platform/slackware/rc.rsyslogd diff --git a/plugins/omelasticsearch/omelasticsearch.c b/plugins/omelasticsearch/omelasticsearch.c index 50acdf1..00e4dba 100644 --- a/plugins/omelasticsearch/omelasticsearch.c +++ b/plugins/omelasticsearch/omelasticsearch.c @@ -314,7 +314,7 @@ setCurlURL(instanceData *pData, uchar **tpls) if(pData->uid != NULL) { rLocal = snprintf(authBuf, sizeof(authBuf), "%s:%s", pData->uid, (pData->pwd == NULL) ? "" : (char*)pData->pwd); - if(rLocal != (int) es_strlen(url)) { + if(rLocal < 1) { errmsg.LogError(0, RS_RET_ERR, "omelasticsearch: snprintf failed " "when trying to build auth string (return %d)\n", rLocal); diff --git a/rsyslog.conf b/rsyslog.conf deleted file mode 100644 index 47fc440..0000000 --- a/rsyslog.conf +++ /dev/null @@ -1,60 +0,0 @@ -# if you experience problems, check -# http://www.rsyslog.com/troubleshoot for assistance - -# rsyslog v3: load input modules -# If you do not load inputs, nothing happens! -# You may need to set the module load path if modules are not found. - -$ModLoad immark # provides --MARK-- message capability -$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) -$ModLoad imklog # kernel logging (formerly provided by rklogd) - -# Log all kernel messages to the console. -# Logging much else clutters up the screen. -#kern.* /dev/console - -# Log anything (except mail) of level info or higher. -# Don't log private authentication messages! -*.info;mail.none;authpriv.none;cron.none -/var/log/messages - -# The authpriv file has restricted access. -authpriv.* /var/log/secure - -# Log all the mail messages in one place. -mail.* -/var/log/maillog - - -# Log cron stuff -cron.* -/var/log/cron - -# Everybody gets emergency messages -*.emerg * - -# Save news errors of level crit and higher in a special file. -uucp,news.crit -/var/log/spooler - -# Save boot messages also to boot.log -local7.* /var/log/boot.log - -# Remote Logging (we use TCP for reliable delivery) -# An on-disk queue is created for this action. If the remote host is -# down, messages are spooled to disk and sent when it is up again. -#$WorkDirectory /rsyslog/spool # where to place spool files -#$ActionQueueFileName uniqName # unique name prefix for spool files -#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) -#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown -#$ActionQueueType LinkedList # run asynchronously -#$ActionResumeRetryCount -1 # infinite retries if host is down -# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional -#*.* @@remote-host:514 - - -# ######### Receiving Messages from Remote Hosts ########## -# TCP Syslog Server: -# provides TCP syslog reception and GSS-API (if compiled to support it) -#$ModLoad imtcp.so # load module -#$InputTCPServerRun 514 # start up TCP listener at port 514 - -# UDP Syslog Server: -#$ModLoad imudp.so # provides UDP syslog reception -#$UDPServerRun 514 # start a UDP syslog server at standard port 514 diff --git a/runtime/datetime.c b/runtime/datetime.c index 7d97447..e839bf1 100644 --- a/runtime/datetime.c +++ b/runtime/datetime.c @@ -305,8 +305,10 @@ ParseTIMESTAMP3339(struct syslogTime *pTime, uchar** ppszTS, int *pLenStr) if(OffsetHour < 0 || OffsetHour > 23) ABORT_FINALIZE(RS_RET_INVLD_TIME); - if(lenStr == 0 || *pszTS++ != ':') + if(lenStr == 0 || *pszTS != ':') ABORT_FINALIZE(RS_RET_INVLD_TIME); + --lenStr; + pszTS++; OffsetMinute = srSLMGParseInt32(&pszTS, &lenStr); if(OffsetMinute < 0 || OffsetMinute > 59) ABORT_FINALIZE(RS_RET_INVLD_TIME); diff --git a/runtime/msg.c b/runtime/msg.c index 10605ba..32a0242 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -36,7 +36,9 @@ #include <assert.h> #include <ctype.h> #include <sys/socket.h> +#if HAVE_SYSINFO_UPTIME #include <sys/sysinfo.h> +#endif #include <netdb.h> #include <libestr.h> #include <json/json.h> @@ -2773,7 +2775,10 @@ uchar *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, *pbMustBeFreed = 0; break; case PROP_SYS_UPTIME: -# ifndef HAVE_SYSINFO +# ifndef HAVE_SYSINFO_UPTIME + /* An alternative on some systems (eg Solaris) is to scan + * /var/adm/utmpx for last boot time. + */ pRes = (uchar*) "UPTIME NOT available on this system"; *pbMustBeFreed = 0; # else diff --git a/runtime/net.c b/runtime/net.c index dcf9cb5..1a8f243 100644 --- a/runtime/net.c +++ b/runtime/net.c @@ -54,7 +54,11 @@ #include <fnmatch.h> #include <fcntl.h> #include <unistd.h> +#if HAVE_GETIFADDRS #include <ifaddrs.h> +#else +#include "compat/ifaddrs.h" +#endif /* HAVE_GETIFADDRS */ #include <sys/types.h> #include <arpa/inet.h> diff --git a/runtime/srutils.c b/runtime/srutils.c index f420c0f..4ce6196 100644 --- a/runtime/srutils.c +++ b/runtime/srutils.c @@ -92,6 +92,9 @@ syslogName_t syslogFacNames[] = { #if defined(LOG_FTP) {"ftp", LOG_FTP}, #endif +#if defined(LOG_AUDIT) + {"audit", LOG_AUDIT}, +#endif {"local0", LOG_LOCAL0}, {"local1", LOG_LOCAL1}, {"local2", LOG_LOCAL2}, diff --git a/tests/tcpflood.c b/tests/tcpflood.c index 8fd347f..4a3199c 100644 --- a/tests/tcpflood.c +++ b/tests/tcpflood.c @@ -429,6 +429,8 @@ int sendMessages(struct instdata *inst) } } genMsg(buf, sizeof(buf), &lenBuf, inst); /* generate the message to send according to params */ + if(lenBuf == 0) + break; /* terminate when no message could be generated */ if(transport == TP_TCP) { if(sockArray[socknum] == -1) { /* connection was dropped, need to re-establish */ |