From 6bcbe0e967b1339c308d4e14d027b562ff179f7d Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Sun, 4 Jan 2009 23:29:50 +0100 Subject: Add variable to force binding of nfnetlink_log. This patch updates the behaviour of the NFLOG input plugin to fix an issue related to kernel older than 2.6.29. The call to nflog_bind_pf() that can be necessary to receive packet from the nfnetlink_log was only done if the used group was 0 (system logging). This is logic for the newest kernel (NFLOG really sends message to nfnetlink_log and not to the nf_log logger). But this is unsufficient for older one. By forcing the binding with the new configuration variable bind, it is now possible to trigger the binding from the ulogd2 configuration file. This gives users a way to be sure that ulogd will receive packets if the NFLOG input plugin is used. --- input/packet/ulogd_inppkt_NFLOG.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'input/packet') diff --git a/input/packet/ulogd_inppkt_NFLOG.c b/input/packet/ulogd_inppkt_NFLOG.c index 70e9f77..36f11d7 100644 --- a/input/packet/ulogd_inppkt_NFLOG.c +++ b/input/packet/ulogd_inppkt_NFLOG.c @@ -31,7 +31,7 @@ struct nflog_input { /* configuration entries */ static struct config_keyset libulog_kset = { - .num_ces = 10, + .num_ces = 9, .ces = { { .key = "bufsize", @@ -51,6 +51,13 @@ static struct config_keyset libulog_kset = { .options = CONFIG_OPT_NONE, .u.value = 1, }, + { + .key = "bind", + .type = CONFIG_TYPE_INT, + .options = CONFIG_OPT_NONE, + .u.value = 0, + }, + { .key = "seq_local", .type = CONFIG_TYPE_INT, @@ -87,11 +94,12 @@ static struct config_keyset libulog_kset = { #define bufsiz_ce(x) (x->ces[0]) #define group_ce(x) (x->ces[1]) #define unbind_ce(x) (x->ces[2]) -#define seq_ce(x) (x->ces[3]) -#define seq_global_ce(x) (x->ces[4]) -#define label_ce(x) (x->ces[5]) -#define nlsockbufsize_ce(x) (x->ces[6]) -#define nlsockbufmaxsize_ce(x) (x->ces[7]) +#define bind_ce(x) (x->ces[3]) +#define seq_ce(x) (x->ces[4]) +#define seq_global_ce(x) (x->ces[5]) +#define label_ce(x) (x->ces[6]) +#define nlsockbufsize_ce(x) (x->ces[7]) +#define nlsockbufmaxsize_ce(x) (x->ces[8]) enum nflog_keys { NFLOG_KEY_RAW_MAC = 0, @@ -497,7 +505,8 @@ static int start(struct ulogd_pluginstance *upi) goto out_handle; /* This is the system logging (conntrack, ...) facility */ - if (group_ce(upi->config_kset).u.value == 0) { + if ((group_ce(upi->config_kset).u.value == 0) || + (bind_ce(upi->config_kset).u.value > 0)) { if (become_system_logging(upi, AF_INET) == -1) goto out_handle; if (become_system_logging(upi, AF_INET6) == -1) -- cgit v1.2.3