netfilter: nf_tables: simplify the basic expressions' init routine
Some basic expressions are built into nf_tables.ko, such as nft_cmp, nft_lookup, nft_range and so on. But these basic expressions' init routine is a little ugly, too many goto errX labels, and we forget to call nft_range_module_exit in the exit routine, although it is harmless. Acctually, the init and exit routines of these basic expressions are same, i.e. do nft_register_expr in the init routine and do nft_unregister_expr in the exit routine. So it's better to arrange them into an array and deal with them together. Signed-off-by: Liping Zhang <zlpnobody@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:

committed by
Pablo Neira Ayuso

parent
f86dab3aa6
commit
4e24877e61
@@ -1,12 +1,18 @@
|
||||
#ifndef _NET_NF_TABLES_CORE_H
|
||||
#define _NET_NF_TABLES_CORE_H
|
||||
|
||||
extern struct nft_expr_type nft_imm_type;
|
||||
extern struct nft_expr_type nft_cmp_type;
|
||||
extern struct nft_expr_type nft_lookup_type;
|
||||
extern struct nft_expr_type nft_bitwise_type;
|
||||
extern struct nft_expr_type nft_byteorder_type;
|
||||
extern struct nft_expr_type nft_payload_type;
|
||||
extern struct nft_expr_type nft_dynset_type;
|
||||
extern struct nft_expr_type nft_range_type;
|
||||
|
||||
int nf_tables_core_module_init(void);
|
||||
void nf_tables_core_module_exit(void);
|
||||
|
||||
int nft_immediate_module_init(void);
|
||||
void nft_immediate_module_exit(void);
|
||||
|
||||
struct nft_cmp_fast_expr {
|
||||
u32 data;
|
||||
enum nft_registers sreg:8;
|
||||
@@ -25,24 +31,6 @@ static inline u32 nft_cmp_fast_mask(unsigned int len)
|
||||
|
||||
extern const struct nft_expr_ops nft_cmp_fast_ops;
|
||||
|
||||
int nft_cmp_module_init(void);
|
||||
void nft_cmp_module_exit(void);
|
||||
|
||||
int nft_range_module_init(void);
|
||||
void nft_range_module_exit(void);
|
||||
|
||||
int nft_lookup_module_init(void);
|
||||
void nft_lookup_module_exit(void);
|
||||
|
||||
int nft_dynset_module_init(void);
|
||||
void nft_dynset_module_exit(void);
|
||||
|
||||
int nft_bitwise_module_init(void);
|
||||
void nft_bitwise_module_exit(void);
|
||||
|
||||
int nft_byteorder_module_init(void);
|
||||
void nft_byteorder_module_exit(void);
|
||||
|
||||
struct nft_payload {
|
||||
enum nft_payload_bases base:8;
|
||||
u8 offset;
|
||||
@@ -62,7 +50,4 @@ struct nft_payload_set {
|
||||
extern const struct nft_expr_ops nft_payload_fast_ops;
|
||||
extern struct static_key_false nft_trace_enabled;
|
||||
|
||||
int nft_payload_module_init(void);
|
||||
void nft_payload_module_exit(void);
|
||||
|
||||
#endif /* _NET_NF_TABLES_CORE_H */
|
||||
|
Reference in New Issue
Block a user