summaryrefslogtreecommitdiffstats
path: root/src/expect/parse.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2011-10-27 12:56:36 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2011-10-27 12:56:36 +0200
commitcdd63cb28c7634a1442ec6f62a192a35026bd38c (patch)
tree627901c84b16cbc9b5fc5be3fef5c01bf1be749b /src/expect/parse.c
parenta55d1d6cc724944ec877fbbb0e8f711f32d6082a (diff)
expect: fix missing parsing of master tuple
The master tuple was not parsed. This patch also fixes an incorrect use of the exp->set field for the expectation and mask tuples. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expect/parse.c')
-rw-r--r--src/expect/parse.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/expect/parse.c b/src/expect/parse.c
index d09abcf..be9be78 100644
--- a/src/expect/parse.c
+++ b/src/expect/parse.c
@@ -37,18 +37,27 @@ void __parse_expect(const struct nlmsghdr *nlh,
exp->mask.tuple[__DIR_REPL].l3protonum = nfhdr->nfgen_family;
set_bit(ATTR_ORIG_L3PROTO, exp->mask.set);
- if (cda[CTA_EXPECT_TUPLE-1])
+ if (cda[CTA_EXPECT_MASTER-1]) {
+ __parse_tuple(cda[CTA_EXPECT_MASTER-1],
+ &exp->master.tuple[__DIR_ORIG],
+ __DIR_ORIG,
+ exp->master.set);
+ set_bit(ATTR_EXP_MASTER, exp->set);
+ }
+ if (cda[CTA_EXPECT_TUPLE-1]) {
__parse_tuple(cda[CTA_EXPECT_TUPLE-1],
&exp->expected.tuple[__DIR_ORIG],
__DIR_ORIG,
- exp->set);
-
- if (cda[CTA_EXPECT_MASK-1])
+ exp->expected.set);
+ set_bit(ATTR_EXP_EXPECTED, exp->set);
+ }
+ if (cda[CTA_EXPECT_MASK-1]) {
__parse_tuple(cda[CTA_EXPECT_MASK-1],
&exp->mask.tuple[__DIR_ORIG],
__DIR_ORIG,
- exp->set);
-
+ exp->mask.set);
+ set_bit(ATTR_EXP_MASK, exp->set);
+ }
if (cda[CTA_EXPECT_TIMEOUT-1]) {
exp->timeout =
ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_EXPECT_TIMEOUT-1]));