[netfilter-cvslog] r6472 - trunk/libnetfilter_conntrack/src

pablo at netfilter.org pablo at netfilter.org
Wed Mar 1 13:29:02 CET 2006


Author: pablo at netfilter.org
Date: 2006-03-01 13:29:00 +0100 (Wed, 01 Mar 2006)
New Revision: 6472

Modified:
   trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c
Log:
Fix expectation mask dumping



Modified: trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c
===================================================================
--- trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c	2006-02-25 08:34:47 UTC (rev 6471)
+++ trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c	2006-03-01 12:29:00 UTC (rev 6472)
@@ -417,6 +417,37 @@
 		parse_proto(tb[CTA_TUPLE_PROTO-1], tuple);
 }
 
+static void parse_mask(struct nfattr *attr, struct nfct_tuple *tuple,
+		       u_int8_t l3protonum, u_int16_t protonum)
+{
+	struct nfattr *cda[CTA_TUPLE_MAX];
+
+	nfnl_parse_nested(cda, CTA_TUPLE_MAX, attr);
+
+	if (cda[CTA_TUPLE_IP-1]) {
+		struct nfattr *tb[CTA_IP_MAX];
+		struct nfct_l3proto *h;
+
+		nfnl_parse_nested(tb, CTA_IP_MAX, cda[CTA_TUPLE_IP-1]);
+		h = findl3proto(l3proto2str[l3protonum]);
+		if (h && h->parse_proto)
+			h->parse_proto(tb, tuple);
+	}
+	if (cda[CTA_TUPLE_PROTO-1]) {
+		struct nfattr *tb[CTA_PROTO_MAX];
+		struct nfct_proto *h;
+
+		nfnl_parse_nested(tb, CTA_PROTO_MAX, cda[CTA_TUPLE_PROTO-1]);
+		if (tb[CTA_PROTO_NUM-1])
+			tuple->protonum = 
+				*(u_int8_t *)NFA_DATA(tb[CTA_PROTO_NUM-1]);
+
+		h = findproto(proto2str[protonum]);
+		if (h && h->parse_proto)
+			h->parse_proto(tb, tuple);
+	}
+}
+
 static void parse_protoinfo(struct nfattr *attr, struct nfct_conntrack *ct)
 {
 	struct nfattr *tb[CTA_PROTOINFO_MAX];
@@ -816,7 +847,8 @@
 		parse_tuple(cda[CTA_EXPECT_TUPLE-1], &exp.tuple);
 
 	if (cda[CTA_EXPECT_MASK-1])
-		parse_tuple(cda[CTA_EXPECT_MASK-1], &exp.mask);
+		parse_mask(cda[CTA_EXPECT_MASK-1], &exp.mask, 
+			   exp.tuple.l3protonum, exp.tuple.protonum);
 
 	if (cda[CTA_EXPECT_TIMEOUT-1])
 		exp.timeout = ntohl(*(u_int32_t *)




More information about the netfilter-cvslog mailing list