summaryrefslogtreecommitdiffstats
path: root/plugins/immark
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2007-12-14 10:42:30 +0000
committerRainer Gerhards <rgerhards@adiscon.com>2007-12-14 10:42:30 +0000
commit119573816d447a78fee256d173704b673c356664 (patch)
tree336ccb6794a884b7dc547425fa439fb5e7feaf31 /plugins/immark
parent3f8f9f142c7bcc9c5dd97708b0611024037f2835 (diff)
downloadrsyslog-119573816d447a78fee256d173704b673c356664.tar.gz
rsyslog-119573816d447a78fee256d173704b673c356664.tar.xz
rsyslog-119573816d447a78fee256d173704b673c356664.zip
begin work on on immark, the first input module. In the long term this will
lead to a complete rewrite of the input system
Diffstat (limited to 'plugins/immark')
-rw-r--r--plugins/immark/.cvsignore6
-rw-r--r--plugins/immark/Makefile.am8
-rw-r--r--plugins/immark/immark.c79
-rw-r--r--plugins/immark/immark.h34
4 files changed, 127 insertions, 0 deletions
diff --git a/plugins/immark/.cvsignore b/plugins/immark/.cvsignore
new file mode 100644
index 00000000..d2a72d33
--- /dev/null
+++ b/plugins/immark/.cvsignore
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+immark.la
+immark_la-ommysql.lo
diff --git a/plugins/immark/Makefile.am b/plugins/immark/Makefile.am
new file mode 100644
index 00000000..7a53d594
--- /dev/null
+++ b/plugins/immark/Makefile.am
@@ -0,0 +1,8 @@
+pkglib_LTLIBRARIES = immark.la
+
+immark_la_SOURCES = immark.c immark.h ../../module-template.h
+immark_la_CPPFLAGS = -I$(srcdir)/../.. $(pthreads_cflags)
+immark_la_LDFLAGS = -module -avoid-version
+immark_la_LIBADD =
+
+EXTRA_DIST =
diff --git a/plugins/immark/immark.c b/plugins/immark/immark.c
new file mode 100644
index 00000000..ca137f71
--- /dev/null
+++ b/plugins/immark/immark.c
@@ -0,0 +1,79 @@
+/* omfwd.c
+ * This is the implementation of the build-in mark message input module.
+ *
+ * NOTE: read comments in module-template.h to understand how this file
+ * works!
+ *
+ * File begun on 2007-07-20 by RGerhards (extracted from syslogd.c)
+ * This file is under development and has not yet arrived at being fully
+ * self-contained and a real object. So far, it is mostly an excerpt
+ * of the "old" message code without any modifications. However, it
+ * helps to have things at the right place one we go to the meat of it.
+ *
+ * Copyright 2007 Rainer Gerhards and Adiscon GmbH.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this distribution.
+ */
+#include "config.h"
+#if 0 /* IMMARK */
+#include <stdlib.h>
+#include <stdio.h>
+#include <signal.h>
+#include <pthread.h>
+#include "rsyslog.h"
+#include "syslogd.h"
+
+/* This function is called to gather input. It must terminate only
+ * a) on failure (iRet set accordingly)
+ * b) on termination of the input module (as part of the unload process)
+ * Code begun 2007-12-12 rgerhards
+ *
+ * This code must simply spawn emit a mark message at each mark interval.
+ * We are running on our own thread, so this is extremely easy: we just
+ * sleep MarkInterval seconds and each time we awake, we inject the message.
+ * Please note that we do not do the other fancy things that sysklogd
+ * (and pre 1.20.2 releases of rsyslog) did in mark procesing. They simply
+ * do not belong here.
+ */
+rsRetVal
+immark_runInput(void)
+{
+ struct timeval tvSelectTimeout;
+ sigset_t sigSet;
+ sigfillset(&sigSet);
+ pthread_sigmask(SIG_BLOCK, &sigSet, NULL);
+ sigemptyset(&sigSet);
+ sigaddset(&sigSet, SIGTERM);
+ sigaddset(&sigSet, SIGHUP);
+ pthread_sigmask(SIG_UNBLOCK, &sigSet, NULL);
+dbgprintf("immark_runInput running!\n");
+ while(!bFinished) {
+dbgprintf("immark pre select\n");
+ tvSelectTimeout.tv_sec = 500;
+ tvSelectTimeout.tv_usec = 0;
+ select(0, NULL, NULL, NULL, &tvSelectTimeout);
+dbgprintf("immark post select, doing mark, bFinished: %d\n", bFinished);
+ logmsgInternal(LOG_INFO, "-- MARK --", ADDDATE);
+ //logmsgInternal(LOG_INFO, "-- MARK --", ADDDATE|MARK);
+ }
+fprintf(stderr, "immark: finished!\n");
+ return RS_RET_OK;
+}
+#endif /* #if 0 */
+/*
+ * vi:set ai:
+ */
diff --git a/plugins/immark/immark.h b/plugins/immark/immark.h
new file mode 100644
index 00000000..7a125780
--- /dev/null
+++ b/plugins/immark/immark.h
@@ -0,0 +1,34 @@
+/* immark.h
+ * These are the definitions for the built-in mark message generation module. This
+ * file may disappear when this has become a loadable module.
+ *
+ * File begun on 2007-12-12 by RGerhards (extracted from syslogd.c)
+ *
+ * Copyright 2007 Rainer Gerhards and Adiscon GmbH.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this distribution.
+ */
+#ifndef IMMARK_H_INCLUDED
+#define IMMARK_H_INCLUDED 1
+
+/* prototypes */
+rsRetVal immark_runInput(void);
+
+#endif /* #ifndef IMMARK_H_INCLUDED */
+/*
+ * vi:set ai:
+ */