提交 ae1bc6a9 编写于 作者: F Florian Westphal 提交者: Pablo Neira Ayuso

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: NFlorian Westphal <fw@strlen.de>
Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
上级 8a22543c
...@@ -11,6 +11,7 @@ extern struct nft_expr_type nft_payload_type; ...@@ -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);
......
...@@ -480,12 +480,6 @@ config NFT_EXTHDR ...@@ -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
......
...@@ -76,12 +76,11 @@ obj-$(CONFIG_NF_DUP_NETDEV) += nf_dup_netdev.o ...@@ -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
......
...@@ -252,6 +252,7 @@ static struct nft_expr_type *nft_basic_types[] = { ...@@ -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)
......
...@@ -7,8 +7,6 @@ ...@@ -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 ...@@ -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 = { ...@@ -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");
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册