1
0
Fork 0

netfilter: nf_tables: merge rt expression into nft core

before:
   text    data     bss     dec     hex filename
   2657     844       0    3501     dad net/netfilter/nft_rt.ko
 100826    2240     401  103467   1942b net/netfilter/nf_tables.ko
after:
   2657     844       0    3501     dad net/netfilter/nft_rt.ko
 102456    2316     401  105173   19ad5 net/netfilter/nf_tables.ko

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
hifive-unleashed-5.1
Florian Westphal 2018-04-16 19:15:55 +02:00 committed by Pablo Neira Ayuso
parent 8a22543c8e
commit ae1bc6a9f3
5 changed files with 4 additions and 29 deletions

View File

@ -11,6 +11,7 @@ extern struct nft_expr_type nft_payload_type;
extern struct nft_expr_type nft_dynset_type; extern struct nft_expr_type nft_dynset_type;
extern struct nft_expr_type nft_range_type; extern struct nft_expr_type nft_range_type;
extern struct nft_expr_type nft_meta_type; extern struct nft_expr_type nft_meta_type;
extern struct nft_expr_type nft_rt_type;
int nf_tables_core_module_init(void); int nf_tables_core_module_init(void);
void nf_tables_core_module_exit(void); void nf_tables_core_module_exit(void);

View File

@ -480,12 +480,6 @@ config NFT_EXTHDR
This option adds the "exthdr" expression that you can use to match This option adds the "exthdr" expression that you can use to match
IPv6 extension headers and tcp options. IPv6 extension headers and tcp options.
config NFT_RT
tristate "Netfilter nf_tables routing module"
help
This option adds the "rt" expression that you can use to match
packet routing information such as the packet nexthop.
config NFT_NUMGEN config NFT_NUMGEN
tristate "Netfilter nf_tables number generator module" tristate "Netfilter nf_tables number generator module"
help help

View File

@ -76,12 +76,11 @@ obj-$(CONFIG_NF_DUP_NETDEV) += nf_dup_netdev.o
nf_tables-objs := nf_tables_core.o nf_tables_api.o nft_chain_filter.o \ 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 \ 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_bitwise.o nft_byteorder.o nft_payload.o nft_lookup.o \
nft_dynset.o nft_meta.o nft_dynset.o nft_meta.o nft_rt.o
obj-$(CONFIG_NF_TABLES) += nf_tables.o obj-$(CONFIG_NF_TABLES) += nf_tables.o
obj-$(CONFIG_NFT_COMPAT) += nft_compat.o obj-$(CONFIG_NFT_COMPAT) += nft_compat.o
obj-$(CONFIG_NFT_EXTHDR) += nft_exthdr.o obj-$(CONFIG_NFT_EXTHDR) += nft_exthdr.o
obj-$(CONFIG_NFT_RT) += nft_rt.o
obj-$(CONFIG_NFT_NUMGEN) += nft_numgen.o obj-$(CONFIG_NFT_NUMGEN) += nft_numgen.o
obj-$(CONFIG_NFT_CT) += nft_ct.o obj-$(CONFIG_NFT_CT) += nft_ct.o
obj-$(CONFIG_NFT_FLOW_OFFLOAD) += nft_flow_offload.o obj-$(CONFIG_NFT_FLOW_OFFLOAD) += nft_flow_offload.o

View File

@ -252,6 +252,7 @@ static struct nft_expr_type *nft_basic_types[] = {
&nft_dynset_type, &nft_dynset_type,
&nft_range_type, &nft_range_type,
&nft_meta_type, &nft_meta_type,
&nft_rt_type,
}; };
int __init nf_tables_core_module_init(void) int __init nf_tables_core_module_init(void)

View File

@ -7,8 +7,6 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/netlink.h> #include <linux/netlink.h>
#include <linux/netfilter.h> #include <linux/netfilter.h>
#include <linux/netfilter/nf_tables.h> #include <linux/netfilter/nf_tables.h>
@ -179,7 +177,6 @@ static int nft_rt_validate(const struct nft_ctx *ctx, const struct nft_expr *exp
return nft_chain_validate_hooks(ctx->chain, hooks); return nft_chain_validate_hooks(ctx->chain, hooks);
} }
static struct nft_expr_type nft_rt_type;
static const struct nft_expr_ops nft_rt_get_ops = { static const struct nft_expr_ops nft_rt_get_ops = {
.type = &nft_rt_type, .type = &nft_rt_type,
.size = NFT_EXPR_SIZE(sizeof(struct nft_rt)), .size = NFT_EXPR_SIZE(sizeof(struct nft_rt)),
@ -189,27 +186,10 @@ static const struct nft_expr_ops nft_rt_get_ops = {
.validate = nft_rt_validate, .validate = nft_rt_validate,
}; };
static struct nft_expr_type nft_rt_type __read_mostly = { struct nft_expr_type nft_rt_type __read_mostly = {
.name = "rt", .name = "rt",
.ops = &nft_rt_get_ops, .ops = &nft_rt_get_ops,
.policy = nft_rt_policy, .policy = nft_rt_policy,
.maxattr = NFTA_RT_MAX, .maxattr = NFTA_RT_MAX,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
static int __init nft_rt_module_init(void)
{
return nft_register_expr(&nft_rt_type);
}
static void __exit nft_rt_module_exit(void)
{
nft_unregister_expr(&nft_rt_type);
}
module_init(nft_rt_module_init);
module_exit(nft_rt_module_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Anders K. Pedersen <akp@cohaesio.com>");
MODULE_ALIAS_NFT_EXPR("rt");