diff options
author | Florian Westphal <fw@strlen.de> | 2016-07-19 00:06:08 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2016-07-19 00:06:08 +0200 |
commit | 211742c61945a60d12da19988fe32e530c485134 (patch) | |
tree | 19883130a85657b01467a1f69a0a5ff4ae75781f /src/meta.c | |
parent | 337c7e0de3d9d8a3a37ab18e00984a35a1c54704 (diff) |
meta: add random support
"meta random" fills a register with a 32bit pseudo-random number.
For instance one can now use
meta random <= 2147483647
... to match every 2nd packet on average.
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/meta.c')
-rw-r--r-- | src/meta.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -418,6 +418,9 @@ static const struct meta_template meta_templates[] = { [NFT_META_CGROUP] = META_TEMPLATE("cgroup", &integer_type, 4 * BITS_PER_BYTE, BYTEORDER_HOST_ENDIAN), + [NFT_META_PRANDOM] = META_TEMPLATE("random", &integer_type, + 4 * BITS_PER_BYTE, + BYTEORDER_BIG_ENDIAN), /* avoid conversion; doesn't have endianess */ }; static bool meta_key_is_qualified(enum nft_meta_keys key) @@ -428,6 +431,7 @@ static bool meta_key_is_qualified(enum nft_meta_keys key) case NFT_META_L4PROTO: case NFT_META_PROTOCOL: case NFT_META_PRIORITY: + case NFT_META_PRANDOM: return true; default: return false; |