]> git.itanic.dy.fi Git - linux-stable/blobdiff - net/netfilter/nft_numgen.c
netfilter: nftables: add nft_parse_register_store() and use it
[linux-stable] / net / netfilter / nft_numgen.c
index 48edb9d5f01254d3786827d04ea10311d66f4484..7bbca252e7fc59f189e6c07811ba5ee34afbece4 100644 (file)
@@ -16,7 +16,7 @@
 static DEFINE_PER_CPU(struct rnd_state, nft_numgen_prandom_state);
 
 struct nft_ng_inc {
-       enum nft_registers      dreg:8;
+       u8                      dreg;
        u32                     modulus;
        atomic_t                counter;
        u32                     offset;
@@ -66,11 +66,10 @@ static int nft_ng_inc_init(const struct nft_ctx *ctx,
        if (priv->offset + priv->modulus - 1 < priv->offset)
                return -EOVERFLOW;
 
-       priv->dreg = nft_parse_register(tb[NFTA_NG_DREG]);
        atomic_set(&priv->counter, priv->modulus - 1);
 
-       return nft_validate_register_store(ctx, priv->dreg, NULL,
-                                          NFT_DATA_VALUE, sizeof(u32));
+       return nft_parse_register_store(ctx, tb[NFTA_NG_DREG], &priv->dreg,
+                                       NULL, NFT_DATA_VALUE, sizeof(u32));
 }
 
 static int nft_ng_dump(struct sk_buff *skb, enum nft_registers dreg,
@@ -100,7 +99,7 @@ static int nft_ng_inc_dump(struct sk_buff *skb, const struct nft_expr *expr)
 }
 
 struct nft_ng_random {
-       enum nft_registers      dreg:8;
+       u8                      dreg;
        u32                     modulus;
        u32                     offset;
 };
@@ -140,10 +139,8 @@ static int nft_ng_random_init(const struct nft_ctx *ctx,
 
        prandom_init_once(&nft_numgen_prandom_state);
 
-       priv->dreg = nft_parse_register(tb[NFTA_NG_DREG]);
-
-       return nft_validate_register_store(ctx, priv->dreg, NULL,
-                                          NFT_DATA_VALUE, sizeof(u32));
+       return nft_parse_register_store(ctx, tb[NFTA_NG_DREG], &priv->dreg,
+                                       NULL, NFT_DATA_VALUE, sizeof(u32));
 }
 
 static int nft_ng_random_dump(struct sk_buff *skb, const struct nft_expr *expr)