diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-06-17 17:45:07 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-06-17 21:08:41 +0200 |
commit | 7ec0ea7e94afdc02e9ae96514caabae55bbe996c (patch) | |
tree | 49dddca6e58b356982cd87c8c172535e2376a83a | |
parent | 5164dff30957fe63bf124388388b2bca192a9e28 (diff) |
src: set NFT_*_ATTR_FAMILY in nft_*_parse function
This attribute was not approapriately set in most cases.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | src/chain.c | 1 | ||||
-rw-r--r-- | src/set.c | 6 | ||||
-rw-r--r-- | src/table.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/chain.c b/src/chain.c index b1b7bbb..6673b82 100644 --- a/src/chain.c +++ b/src/chain.c @@ -492,6 +492,7 @@ int nft_chain_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_chain *c) } c->family = nfg->nfgen_family; + c->flags |= (1 << NFT_CHAIN_ATTR_FAMILY); return ret; } @@ -169,6 +169,10 @@ void *nft_set_attr_get(struct nft_set *s, uint16_t attr) if (s->flags & (1 << NFT_SET_ATTR_DATA_LEN)) return &s->data_len; break; + case NFT_SET_ATTR_FAMILY: + if (s->flags & (1 << NFT_SET_ATTR_FAMILY)) + return &s->family; + break; default: break; } @@ -297,6 +301,8 @@ int nft_set_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_set *s) s->data_len = ntohl(mnl_attr_get_u32(tb[NFTA_SET_DATA_LEN])); s->flags |= (1 << NFT_SET_ATTR_DATA_LEN); } + s->family = nfg->nfgen_family; + s->flags |= (1 << NFT_SET_ATTR_FAMILY); return ret; } diff --git a/src/table.c b/src/table.c index c33f01c..4533e23 100644 --- a/src/table.c +++ b/src/table.c @@ -218,6 +218,7 @@ int nft_table_nlmsg_parse(const struct nlmsghdr *nlh, struct nft_table *t) } t->family = nfg->nfgen_family; + t->flags |= (1 << NFT_TABLE_ATTR_FAMILY); return 0; } |