diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-10-27 12:56:36 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-10-27 12:56:36 +0200 |
commit | cdd63cb28c7634a1442ec6f62a192a35026bd38c (patch) | |
tree | 627901c84b16cbc9b5fc5be3fef5c01bf1be749b /src/expect/parse.c | |
parent | a55d1d6cc724944ec877fbbb0e8f711f32d6082a (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.c | 21 |
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])); |