[netfilter-cvslog] r6444 - branches/ulog/ulogd2/input/packet

laforge at netfilter.org laforge at netfilter.org
Thu Jan 26 18:31:58 CET 2006


Author: laforge at netfilter.org
Date: 2006-01-26 18:31:57 +0100 (Thu, 26 Jan 2006)
New Revision: 6444

Modified:
   branches/ulog/ulogd2/input/packet/ulogd_inppkt_NFLOG.c
Log:
add support for new 'seq_local' and 'seq_global' arguments


Modified: branches/ulog/ulogd2/input/packet/ulogd_inppkt_NFLOG.c
===================================================================
--- branches/ulog/ulogd2/input/packet/ulogd_inppkt_NFLOG.c	2006-01-26 16:14:57 UTC (rev 6443)
+++ branches/ulog/ulogd2/input/packet/ulogd_inppkt_NFLOG.c	2006-01-26 17:31:57 UTC (rev 6444)
@@ -34,7 +34,7 @@
 /* configuration entries */
 
 static struct config_keyset libulog_kset = {
-	.num_ces = 5,
+	.num_ces = 7,
 	.ces = {
 		{
 			.key 	 = "bufsize",
@@ -66,6 +66,18 @@
 			.options = CONFIG_OPT_NONE,
 			.u.value = 1,
 		},
+		{
+			.key	 = "seq_local",
+			.type	 = CONFIG_TYPE_INT,
+			.options = CONFIG_OPT_NONE,
+			.u.value = 0,
+		},
+		{
+			.key	 = "seq_global",
+			.type	 = CONFIG_TYPE_INT,
+			.options = CONFIG_OPT_NONE,
+			.u.value = 0,
+		},
 	}
 };
 
@@ -74,6 +86,8 @@
 #define rmem_ce(x)	(x->ces[2])
 #define af_ce(x)	(x->ces[3])
 #define unbind_ce(x)	(x->ces[4])
+#define seq_ce(x)	(x->ces[4])
+#define seq_global_ce(x)	(x->ces[5])
 
 
 static struct ulogd_key output_keys[] = {
@@ -180,7 +194,16 @@
 		.flags = ULOGD_RETF_NONE, 
 		.name = "raw.mac_len", 
 	},
-
+	{
+		.type = ULOGD_RET_UINT32,
+		.flags = ULOGD_RETF_NONE,
+		.name = "oob.seq.local",
+	},
+	{
+		.type = ULOGD_RET_UINT32,
+		.flags = ULOGD_RETF_NONE,
+		.name = "oob.seq.global",
+	},
 };
 
 static inline int 
@@ -197,6 +220,7 @@
 	u_int32_t mark = nflog_get_nfmark(ldata);
 	u_int32_t indev = nflog_get_indev(ldata);
 	u_int32_t outdev = nflog_get_outdev(ldata);
+	u_int32_t seq;
 	
 
 	if (ph) {
@@ -252,6 +276,15 @@
 		ret[9].u.value.ui32 = outdev;
 		ret[9].flags |= ULOGD_RETF_VALID;
 	}
+
+	if (nflog_get_seq(ldata, &seq)) {
+		ret[10].u.value.ui32 = seq;
+		ret[10].flags |= ULOGD_RETF_VALID;
+	}
+	if (nflog_get_seq_global(ldata, &seq)) {
+		ret[11].u.value.ui32 = seq;
+		ret[11].flags |= ULOGD_RETF_VALID;
+	}
 	
 	ulogd_propagate_results(upi);
 	return 0;
@@ -301,6 +334,7 @@
 static int start(struct ulogd_pluginstance *upi)
 {
 	struct nflog_input *ui = (struct nflog_input *) upi->private;
+	unsigned int flags;
 
 	ui->nfulog_buf = malloc(bufsiz_ce(upi->config_kset).u.value);
 	if (!ui->nfulog_buf)
@@ -347,6 +381,18 @@
 	//nflog_set_nlbufsiz(&ui->nful_gh, );
 	//nfnl_set_rcvbuf();
 	
+	/* set log flags based on configuration */
+	flags = 0;
+	if (seq_ce(upi->config_kset).u.value != 0)
+		flags = NFULNL_CFG_F_SEQ;
+	if (seq_ce(upi->config_kset).u.value != 0)
+		flags |= NFULNL_CFG_F_SEQ_GLOBAL;
+	if (flags) {
+		if (nflog_set_flags(ui->nful_gh, flags) < 0)
+			ulogd_log(ULOGD_ERROR, "unable to set flags 0x%x\n",
+				  flags);
+	}
+	
 	nflog_callback_register(ui->nful_gh, &msg_cb, upi);
 
 	ui->nful_fd.fd = nflog_fd(ui->nful_h);




More information about the netfilter-cvslog mailing list