From cdd63cb28c7634a1442ec6f62a192a35026bd38c Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 27 Oct 2011 12:56:36 +0200 Subject: 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 --- src/expect/parse.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src') 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])); -- cgit v1.2.3