From c1c0f16c1fedb46547c2e104beeaaeac5933b214 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 2 May 2019 14:07:25 +0200 Subject: src: replace old libnfnetlink parser Use the new libmnl version, remove duplicated code. Signed-off-by: Pablo Neira Ayuso --- src/expect/parse.c | 120 ----------------------------------------------------- 1 file changed, 120 deletions(-) delete mode 100644 src/expect/parse.c (limited to 'src/expect/parse.c') diff --git a/src/expect/parse.c b/src/expect/parse.c deleted file mode 100644 index 9b944a6..0000000 --- a/src/expect/parse.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * (C) 2005-2011 by Pablo Neira Ayuso - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - */ - -#include "internal/internal.h" - -int __parse_expect_message_type(const struct nlmsghdr *nlh) -{ - uint16_t type = NFNL_MSG_TYPE(nlh->nlmsg_type); - uint16_t flags = nlh->nlmsg_flags; - int ret = NFCT_T_UNKNOWN; - - if (type == IPCTNL_MSG_EXP_NEW) { - if (flags & (NLM_F_CREATE|NLM_F_EXCL)) - ret = NFCT_T_NEW; - else - ret = NFCT_T_UPDATE; - } else if (type == IPCTNL_MSG_EXP_DELETE) - ret = NFCT_T_DESTROY; - - return ret; -} - -void __parse_expect(const struct nlmsghdr *nlh, - struct nfattr *cda[], - struct nf_expect *exp) -{ - struct nfgenmsg *nfhdr = NLMSG_DATA(nlh); - - /* XXX: this is ugly, clean it up, please */ - exp->expected.orig.l3protonum = nfhdr->nfgen_family; - set_bit(ATTR_ORIG_L3PROTO, exp->expected.set); - - exp->mask.orig.l3protonum = nfhdr->nfgen_family; - set_bit(ATTR_ORIG_L3PROTO, exp->mask.set); - - exp->master.orig.l3protonum = nfhdr->nfgen_family; - set_bit(ATTR_ORIG_L3PROTO, exp->master.set); - - if (cda[CTA_EXPECT_MASTER-1]) { - __parse_tuple(cda[CTA_EXPECT_MASTER-1], - &exp->master.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.orig, - __DIR_ORIG, - 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.orig, - __DIR_ORIG, - exp->mask.set); - set_bit(ATTR_EXP_MASK, exp->set); - } - if (cda[CTA_EXPECT_TIMEOUT-1]) { - exp->timeout = - ntohl(*(uint32_t *)NFA_DATA(cda[CTA_EXPECT_TIMEOUT-1])); - set_bit(ATTR_EXP_TIMEOUT, exp->set); - } - - if (cda[CTA_EXPECT_ZONE-1]) { - exp->zone = - ntohs(*(uint16_t *)NFA_DATA(cda[CTA_EXPECT_ZONE-1])); - set_bit(ATTR_EXP_ZONE, exp->set); - } - if (cda[CTA_EXPECT_FLAGS-1]) { - exp->flags = - ntohl(*(uint32_t *)NFA_DATA(cda[CTA_EXPECT_FLAGS-1])); - set_bit(ATTR_EXP_FLAGS, exp->set); - } - if (cda[CTA_EXPECT_HELP_NAME-1]) { - strncpy(exp->helper_name, NFA_DATA(cda[CTA_EXPECT_HELP_NAME-1]), - NFA_PAYLOAD(cda[CTA_EXPECT_HELP_NAME-1])); - set_bit(ATTR_EXP_HELPER_NAME, exp->set); - } - if (cda[CTA_EXPECT_CLASS-1]) { - exp->class = - ntohl(*(uint32_t *)NFA_DATA(cda[CTA_EXPECT_CLASS-1])); - set_bit(ATTR_EXP_CLASS, exp->set); - } - if (cda[CTA_EXPECT_NAT-1]) { - struct nfattr *tb[CTA_EXPECT_NAT_MAX]; - - exp->nat.orig.l3protonum = nfhdr->nfgen_family; - set_bit(ATTR_ORIG_L3PROTO, exp->nat.set); - - nfnl_parse_nested(tb, CTA_EXPECT_NAT_MAX, - cda[CTA_EXPECT_NAT-1]); - - if (tb[CTA_EXPECT_NAT_TUPLE-1]) { - __parse_tuple(tb[CTA_EXPECT_NAT_TUPLE-1], - &exp->nat.orig, - __DIR_ORIG, - exp->nat.set); - set_bit(ATTR_EXP_NAT_TUPLE, exp->set); - } - if (tb[CTA_EXPECT_NAT_DIR-1]) { - exp->nat_dir = - ntohl(*((uint32_t *) - NFA_DATA(tb[CTA_EXPECT_NAT_DIR-1]))); - set_bit(ATTR_EXP_NAT_DIR, exp->set); - } - } - if (cda[CTA_EXPECT_FN-1]) { - strcpy(exp->expectfn, NFA_DATA(cda[CTA_EXPECT_FN-1])); - exp->expectfn[__NFCT_EXPECTFN_MAX-1] = '\0'; - set_bit(ATTR_EXP_FN, exp->set); - } -} -- cgit v1.2.3