diff options
author | Florian Westphal <fw@strlen.de> | 2018-03-14 13:37:58 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-03-20 13:52:10 +0100 |
commit | 4f2921ca21b71a9faaecd84a9fc74401d3a8d275 (patch) | |
tree | e3c2affba1eb701a8bedd90df150bd22034286fa /mm/kasan | |
parent | 36fe095606f881e6a3c7f9283c986aec6083f3e6 (diff) | |
download | linux-stable-4f2921ca21b71a9faaecd84a9fc74401d3a8d275.tar.gz linux-stable-4f2921ca21b71a9faaecd84a9fc74401d3a8d275.tar.bz2 linux-stable-4f2921ca21b71a9faaecd84a9fc74401d3a8d275.zip |
netfilter: nf_tables: meter: pick a set backend that supports updates
in nftables, 'meter' can be used to instantiate a hash-table at run
time:
rule add filter forward iif "internal" meter hostacct { ip saddr counter}
nft list meter ip filter hostacct
table ip filter {
meter hostacct {
type ipv4_addr
elements = { 192.168.0.1 : counter packets 8 bytes 2672, ..
because elemets get added on the fly, the kernel must chose a set
backend type that implements the ->update() function, otherwise
rule insertion fails with EOPNOTSUPP.
Therefore, skip set types that lack ->update, and also
make sure we do not discard a (bad) candidate when we did yet
find any candidate at all. This could happen when userspace prefers
low memory footprint -- the set implementation currently checked might
not be a fit at all. Make sure we pick it anyway (!bops). In
case next candidate is a better fix, it will be chosen instead.
But in case nothing else is found we at least have a non-ideal
match rather than no match at all.
Fixes: 6c03ae210ce3 ("netfilter: nft_set_hash: add non-resizable hashtable implementation")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'mm/kasan')
0 files changed, 0 insertions, 0 deletions