From be97f91146d5717a1c6d43694fdb429b662846b3 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 11 Jun 2015 20:43:54 +0200 Subject: chain: add netdev family support Add support for the new NFT_CHAIN_ATTR_DEV attribute that indicates that the basechain is attached to a net_device. This partially reworks 1dd9ba1ea23c ("table: add netdev family support"). Signed-off-by: Pablo Neira Ayuso --- src/table.c | 37 ++----------------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) (limited to 'src/table.c') diff --git a/src/table.c b/src/table.c index f748d6d..ab0a8ea 100644 --- a/src/table.c +++ b/src/table.c @@ -32,7 +32,6 @@ struct nft_table { const char *name; uint32_t family; uint32_t table_flags; - const char *dev; uint32_t use; uint32_t flags; }; @@ -75,12 +74,6 @@ void nft_table_attr_unset(struct nft_table *t, uint16_t attr) break; case NFT_TABLE_ATTR_USE: break; - case NFT_TABLE_ATTR_DEV: - if (t->dev) { - xfree(t->dev); - t->dev = NULL; - } - break; } t->flags &= ~(1 << attr); } @@ -115,12 +108,6 @@ void nft_table_attr_set_data(struct nft_table *t, uint16_t attr, case NFT_TABLE_ATTR_USE: t->use = *((uint32_t *)data); break; - case NFT_TABLE_ATTR_DEV: - if (t->dev) - xfree(t->dev); - - t->dev = strdup(data); - break; } t->flags |= (1 << attr); } @@ -168,8 +155,6 @@ const void *nft_table_attr_get_data(struct nft_table *t, uint16_t attr, case NFT_TABLE_ATTR_USE: *data_len = sizeof(uint32_t); return &t->use; - case NFT_TABLE_ATTR_DEV: - return t->dev; } return NULL; } @@ -208,8 +193,6 @@ void nft_table_nlmsg_build_payload(struct nlmsghdr *nlh, const struct nft_table mnl_attr_put_strz(nlh, NFTA_TABLE_NAME, t->name); if (t->flags & (1 << NFT_TABLE_ATTR_FLAGS)) mnl_attr_put_u32(nlh, NFTA_TABLE_FLAGS, htonl(t->table_flags)); - if (t->flags & (1 << NFT_TABLE_ATTR_DEV)) - mnl_attr_put_str(nlh, NFTA_TABLE_DEV, t->dev); } EXPORT_SYMBOL(nft_table_nlmsg_build_payload); @@ -223,7 +206,6 @@ static int nft_table_parse_attr_cb(const struct nlattr *attr, void *data) switch(type) { case NFTA_TABLE_NAME: - case NFTA_TABLE_DEV: if (mnl_attr_validate(attr, MNL_TYPE_STRING) < 0) abi_breakage(); break; @@ -258,10 +240,6 @@ int nft_table_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_table *t) t->use = ntohl(mnl_attr_get_u32(tb[NFTA_TABLE_USE])); t->flags |= (1 << NFT_TABLE_ATTR_USE); } - if (tb[NFTA_TABLE_DEV]) { - t->dev = strdup(mnl_attr_get_str(tb[NFTA_TABLE_DEV])); - t->flags |= (1 << NFT_TABLE_ATTR_DEV); - } t->family = nfg->nfgen_family; t->flags |= (1 << NFT_TABLE_ATTR_FAMILY); @@ -274,7 +252,7 @@ EXPORT_SYMBOL(nft_table_nlmsg_parse); int nft_mxml_table_parse(mxml_node_t *tree, struct nft_table *t, struct nft_parse_err *err) { - const char *name, *dev; + const char *name; int family; uint32_t flags, use; @@ -292,11 +270,6 @@ int nft_mxml_table_parse(mxml_node_t *tree, struct nft_table *t, &flags, NFT_TYPE_U32, NFT_XML_MAND, err) == 0) nft_table_attr_set_u32(t, NFT_TABLE_ATTR_FLAGS, flags); - dev = nft_mxml_str_parse(tree, "device", MXML_DESCEND_FIRST, - NFT_XML_MAND, err); - if (dev != NULL) - nft_table_attr_set_str(t, NFT_TABLE_ATTR_DEV, dev); - if (nft_mxml_num_parse(tree, "use", MXML_DESCEND, BASE_DEC, &use, NFT_TYPE_U32, NFT_XML_MAND, err) == 0) nft_table_attr_set_u32(t, NFT_TABLE_ATTR_USE, use); @@ -330,7 +303,7 @@ int nft_jansson_parse_table(struct nft_table *t, json_t *tree, { json_t *root; uint32_t flags, use; - const char *str, *dev; + const char *str; int family; root = nft_jansson_get_node(tree, "table", err); @@ -348,10 +321,6 @@ int nft_jansson_parse_table(struct nft_table *t, json_t *tree, err) == 0) nft_table_attr_set_u32(t, NFT_TABLE_ATTR_FLAGS, flags); - dev = nft_jansson_parse_str(root, "device", err); - if (dev != NULL) - nft_table_attr_set_str(t, NFT_TABLE_ATTR_DEV, dev); - if (nft_jansson_parse_val(root, "use", NFT_TYPE_U32, &use, err) == 0) nft_table_attr_set_u32(t, NFT_TABLE_ATTR_USE, use); @@ -435,8 +404,6 @@ static int nft_table_export(char *buf, size_t size, struct nft_table *t, nft_buf_str(&b, type, nft_family2str(t->family), FAMILY); if (t->flags & (1 << NFT_TABLE_ATTR_FLAGS)) nft_buf_u32(&b, type, t->table_flags, FLAGS); - if (t->flags & (1 << NFT_TABLE_ATTR_DEV)) - nft_buf_str(&b, type, t->dev, DEVICE); if (t->flags & (1 << NFT_TABLE_ATTR_USE)) nft_buf_u32(&b, type, t->use, USE); -- cgit v1.2.3