summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-03-25 09:57:12 +0000
committer/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-03-25 09:57:12 +0000
commita13c6d27770a1fbc6fba1ffcd9d88681b581a01e (patch)
tree5c0f8e93a6850ff7c459967bd062885e281dd2b1
parent62126e83e2b12a44d0220c2a1f4f10b5883e3977 (diff)
This patch adds plist a linked list to the pluginstance
structure. It can be used by input modules to duplicate an entry. This solves the issue of not being able to use the same plugin instance twice. Signed-off-by: Eric Leblond <eric@inl.fr>
-rw-r--r--include/ulogd/ulogd.h2
-rw-r--r--src/ulogd.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/include/ulogd/ulogd.h b/include/ulogd/ulogd.h
index 39ac464..73a1711 100644
--- a/include/ulogd/ulogd.h
+++ b/include/ulogd/ulogd.h
@@ -168,6 +168,8 @@ struct ulogd_plugin {
struct ulogd_pluginstance {
/* local list of plugins in this stack */
struct llist_head list;
+ /* local list of plugininstance in other stacks */
+ struct llist_head plist;
/* plugin */
struct ulogd_plugin *plugin;
/* stack that we're part of */
diff --git a/src/ulogd.c b/src/ulogd.c
index 7a779e6..ef1c191 100644
--- a/src/ulogd.c
+++ b/src/ulogd.c
@@ -529,6 +529,7 @@ pluginstance_alloc_init(struct ulogd_plugin *pl, char *pi_id,
/* initialize */
memset(pi, 0, size);
INIT_LLIST_HEAD(&pi->list);
+ INIT_LLIST_HEAD(&pi->plist);
pi->plugin = pl;
pi->stack = stack;
memcpy(pi->id, pi_id, sizeof(pi->id));
@@ -721,6 +722,7 @@ static int pluginstance_started(struct ulogd_pluginstance *npi)
if (!strcmp(pi->id, npi->id)) {
ulogd_log(ULOGD_INFO, "%s instance already "
"loaded\n", pi->id);
+ llist_add(&pi->plist, &npi->plist);
return 1;
}
}