netfilter: nft_objref: make it builtin
authorFlorian Westphal <fw@strlen.de>
Fri, 21 Oct 2022 14:17:53 +0000 (16:17 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 25 Oct 2022 11:48:35 +0000 (13:48 +0200)
nft_objref is needed to reference named objects, it makes
no sense to disable it.

Before:
   text    data     bss     dec  filename
  4014     424       0    4438  nft_objref.o
  4174    1128       0    5302  nft_objref.ko
359351   15276     864  375491  nf_tables.ko
After:
  text    data     bss     dec  filename
  3815     408       0    4223  nft_objref.o
363161   15692     864  379717  nf_tables.ko

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/netfilter/nf_tables_core.h
net/netfilter/Kconfig
net/netfilter/Makefile
net/netfilter/nf_tables_core.c
net/netfilter/nft_objref.c

index 990c376..83d7636 100644 (file)
@@ -18,6 +18,7 @@ extern struct nft_expr_type nft_meta_type;
 extern struct nft_expr_type nft_rt_type;
 extern struct nft_expr_type nft_exthdr_type;
 extern struct nft_expr_type nft_last_type;
+extern struct nft_expr_type nft_objref_type;
 
 #ifdef CONFIG_NETWORK_SECMARK
 extern struct nft_object_type nft_secmark_obj_type;
index 4b8d046..0846bd7 100644 (file)
@@ -568,12 +568,6 @@ config NFT_TUNNEL
          This option adds the "tunnel" expression that you can use to set
          tunneling policies.
 
-config NFT_OBJREF
-       tristate "Netfilter nf_tables stateful object reference module"
-       help
-         This option adds the "objref" expression that allows you to refer to
-         stateful objects, such as counters and quotas.
-
 config NFT_QUEUE
        depends on NETFILTER_NETLINK_QUEUE
        tristate "Netfilter nf_tables queue module"
index 0f060d1..7a6b518 100644 (file)
@@ -86,7 +86,8 @@ nf_tables-objs := nf_tables_core.o nf_tables_api.o nft_chain_filter.o \
                  nf_tables_trace.o nft_immediate.o nft_cmp.o nft_range.o \
                  nft_bitwise.o nft_byteorder.o nft_payload.o nft_lookup.o \
                  nft_dynset.o nft_meta.o nft_rt.o nft_exthdr.o nft_last.o \
-                 nft_counter.o nft_chain_route.o nf_tables_offload.o \
+                 nft_counter.o nft_objref.o \
+                 nft_chain_route.o nf_tables_offload.o \
                  nft_set_hash.o nft_set_bitmap.o nft_set_rbtree.o \
                  nft_set_pipapo.o
 
@@ -104,7 +105,6 @@ obj-$(CONFIG_NFT_CT)                += nft_ct.o
 obj-$(CONFIG_NFT_FLOW_OFFLOAD) += nft_flow_offload.o
 obj-$(CONFIG_NFT_LIMIT)                += nft_limit.o
 obj-$(CONFIG_NFT_NAT)          += nft_nat.o
-obj-$(CONFIG_NFT_OBJREF)       += nft_objref.o
 obj-$(CONFIG_NFT_QUEUE)                += nft_queue.o
 obj-$(CONFIG_NFT_QUOTA)                += nft_quota.o
 obj-$(CONFIG_NFT_REJECT)       += nft_reject.o
index cee3e4e..6dcead5 100644 (file)
@@ -340,6 +340,7 @@ static struct nft_expr_type *nft_basic_types[] = {
        &nft_exthdr_type,
        &nft_last_type,
        &nft_counter_type,
+       &nft_objref_type,
 };
 
 static struct nft_object_type *nft_basic_objects[] = {
index 5d8d91b..74e0eea 100644 (file)
@@ -82,7 +82,6 @@ static void nft_objref_activate(const struct nft_ctx *ctx,
        obj->use++;
 }
 
-static struct nft_expr_type nft_objref_type;
 static const struct nft_expr_ops nft_objref_ops = {
        .type           = &nft_objref_type,
        .size           = NFT_EXPR_SIZE(sizeof(struct nft_object *)),
@@ -195,7 +194,6 @@ static void nft_objref_map_destroy(const struct nft_ctx *ctx,
        nf_tables_destroy_set(ctx, priv->set);
 }
 
-static struct nft_expr_type nft_objref_type;
 static const struct nft_expr_ops nft_objref_map_ops = {
        .type           = &nft_objref_type,
        .size           = NFT_EXPR_SIZE(sizeof(struct nft_objref_map)),
@@ -233,28 +231,10 @@ static const struct nla_policy nft_objref_policy[NFTA_OBJREF_MAX + 1] = {
        [NFTA_OBJREF_SET_ID]    = { .type = NLA_U32 },
 };
 
-static struct nft_expr_type nft_objref_type __read_mostly = {
+struct nft_expr_type nft_objref_type __read_mostly = {
        .name           = "objref",
        .select_ops     = nft_objref_select_ops,
        .policy         = nft_objref_policy,
        .maxattr        = NFTA_OBJREF_MAX,
        .owner          = THIS_MODULE,
 };
-
-static int __init nft_objref_module_init(void)
-{
-       return nft_register_expr(&nft_objref_type);
-}
-
-static void __exit nft_objref_module_exit(void)
-{
-       nft_unregister_expr(&nft_objref_type);
-}
-
-module_init(nft_objref_module_init);
-module_exit(nft_objref_module_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Pablo Neira Ayuso <pablo@netfilter.org>");
-MODULE_ALIAS_NFT_EXPR("objref");
-MODULE_DESCRIPTION("nftables stateful object reference module");