aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter/nf_tables_set_core.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2018-07-06 19:06:43 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2018-07-06 19:31:53 +0200
commite240cd0df48185a28c153f83a39ba3940e3e9b86 (patch)
tree7e480025afd8ed7f00b22e35f63ff434e853a634 /net/netfilter/nf_tables_set_core.c
parentnetfilter: nf_tproxy: fix possible non-linear access to transport header (diff)
downloadlinux-dev-e240cd0df48185a28c153f83a39ba3940e3e9b86.tar.xz
linux-dev-e240cd0df48185a28c153f83a39ba3940e3e9b86.zip
netfilter: nf_tables: place all set backends in one single module
This patch disallows rbtree with single elements, which is causing problems with the recent timeout support. Before this patch, you could opt out individual set representations per module, which is just adding extra complexity. Fixes: 8d8540c4f5e0("netfilter: nft_set_rbtree: add timeout support") Reported-by: Taehee Yoo <ap420073@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/nf_tables_set_core.c')
-rw-r--r--net/netfilter/nf_tables_set_core.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/net/netfilter/nf_tables_set_core.c b/net/netfilter/nf_tables_set_core.c
new file mode 100644
index 000000000000..814789644bd3
--- /dev/null
+++ b/net/netfilter/nf_tables_set_core.c
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#include <net/netfilter/nf_tables_core.h>
+
+static int __init nf_tables_set_module_init(void)
+{
+ nft_register_set(&nft_set_hash_fast_type);
+ nft_register_set(&nft_set_hash_type);
+ nft_register_set(&nft_set_rhash_type);
+ nft_register_set(&nft_set_bitmap_type);
+ nft_register_set(&nft_set_rbtree_type);
+
+ return 0;
+}
+
+static void __exit nf_tables_set_module_exit(void)
+{
+ nft_unregister_set(&nft_set_rbtree_type);
+ nft_unregister_set(&nft_set_bitmap_type);
+ nft_unregister_set(&nft_set_rhash_type);
+ nft_unregister_set(&nft_set_hash_type);
+ nft_unregister_set(&nft_set_hash_fast_type);
+}
+
+module_init(nf_tables_set_module_init);
+module_exit(nf_tables_set_module_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_ALIAS_NFT_SET();