]> git.ipfire.org Git - thirdparty/ulogd2.git/commitdiff
A specific instance of NFLOG can now be use in multiple stacks. This is done
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>
Tue, 25 Mar 2008 10:06:15 +0000 (10:06 +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>
Tue, 25 Mar 2008 10:06:15 +0000 (10:06 +0000)
by duplicating the interpretation of the message.

Signed-off-by: Eric Leblond <eric@inl.fr>
input/packet/ulogd_inppkt_ULOG.c

index cf4447400019fff6ebe929bb2b4e9f13fd8bc239..5df6499d45b2d31f56beda13b2d4c9d2efecb90d 100644 (file)
@@ -215,6 +215,7 @@ static int interp_packet(struct ulogd_pluginstance *ip, ulog_packet_msg_t *pkt)
 static int ulog_read_cb(int fd, unsigned int what, void *param)
 {
        struct ulogd_pluginstance *upi = (struct ulogd_pluginstance *)param;
+       struct ulogd_pluginstance *npi = NULL;
        struct ulog_input *u = (struct ulog_input *) &upi->private;
        ulog_packet_msg_t *upkt;
        int len;
@@ -239,6 +240,11 @@ static int ulog_read_cb(int fd, unsigned int what, void *param)
                while ((upkt = ipulog_get_packet(u->libulog_h,
                                                 u->libulog_buf, len))) {
                        ulogd_log(ULOGD_DEBUG, "==> ulog packet received\n");
+                       /* since we support the re-use of one instance in
+                        * several different stacks, we duplicate the message
+                        * to let them know */
+                       llist_for_each_entry(npi, &upi->plist, plist)
+                               interp_packet(npi, upkt);
                        interp_packet(upi, upkt);
                }
        }