summaryrefslogtreecommitdiffstats
path: root/net/netfilter/nft_xfrm.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-01-25 18:27:22 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2021-01-27 23:16:02 +0100
commit345023b0db315648ccc3c1a36aee88304a8b4d91 (patch)
treed9fc56b50d04dacea25e27093052ec3c3cbdaa30 /net/netfilter/nft_xfrm.c
parent4f16d25c68ec844299a4df6ecbb0234eaf88a935 (diff)
downloadlinux-345023b0db315648ccc3c1a36aee88304a8b4d91.tar.gz
linux-345023b0db315648ccc3c1a36aee88304a8b4d91.tar.bz2
linux-345023b0db315648ccc3c1a36aee88304a8b4d91.zip
netfilter: nftables: add nft_parse_register_store() and use it
This new function combines the netlink register attribute parser and the store validation function. This update requires to replace: enum nft_registers dreg:8; in many of the expression private areas otherwise compiler complains with: error: cannot take address of bit-field ‘dreg’ when passing the register field as reference. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/nft_xfrm.c')
-rw-r--r--net/netfilter/nft_xfrm.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/net/netfilter/nft_xfrm.c b/net/netfilter/nft_xfrm.c
index 06d5cabf1d7c..cbbbc4ecad3a 100644
--- a/net/netfilter/nft_xfrm.c
+++ b/net/netfilter/nft_xfrm.c
@@ -24,7 +24,7 @@ static const struct nla_policy nft_xfrm_policy[NFTA_XFRM_MAX + 1] = {
struct nft_xfrm {
enum nft_xfrm_keys key:8;
- enum nft_registers dreg:8;
+ u8 dreg;
u8 dir;
u8 spnum;
};
@@ -86,9 +86,8 @@ static int nft_xfrm_get_init(const struct nft_ctx *ctx,
priv->spnum = spnum;
- priv->dreg = nft_parse_register(tb[NFTA_XFRM_DREG]);
- return nft_validate_register_store(ctx, priv->dreg, NULL,
- NFT_DATA_VALUE, len);
+ return nft_parse_register_store(ctx, tb[NFTA_XFRM_DREG], &priv->dreg,
+ NULL, NFT_DATA_VALUE, len);
}
/* Return true if key asks for daddr/saddr and current