netfilter: add API to manage NAT helpers.
The API allows a conntrack helper to indicate its corresponding NAT helper which then can be loaded and reference counted. Signed-off-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
这个提交包含在:
@@ -15,7 +15,8 @@
|
||||
#include <net/netfilter/nf_conntrack_extend.h>
|
||||
#include <net/netfilter/nf_conntrack_expect.h>
|
||||
|
||||
#define NF_NAT_HELPER_NAME(name) "ip_nat_" name
|
||||
#define NF_NAT_HELPER_PREFIX "ip_nat_"
|
||||
#define NF_NAT_HELPER_NAME(name) NF_NAT_HELPER_PREFIX name
|
||||
#define MODULE_ALIAS_NF_NAT_HELPER(name) \
|
||||
MODULE_ALIAS(NF_NAT_HELPER_NAME(name))
|
||||
|
||||
@@ -58,6 +59,8 @@ struct nf_conntrack_helper {
|
||||
unsigned int queue_num;
|
||||
/* length of userspace private data stored in nf_conn_help->data */
|
||||
u16 data_len;
|
||||
/* name of NAT helper module */
|
||||
char nat_mod_name[NF_CT_HELPER_NAME_LEN];
|
||||
};
|
||||
|
||||
/* Must be kept in sync with the classes defined by helpers */
|
||||
@@ -157,4 +160,21 @@ nf_ct_helper_expectfn_find_by_symbol(const void *symbol);
|
||||
extern struct hlist_head *nf_ct_helper_hash;
|
||||
extern unsigned int nf_ct_helper_hsize;
|
||||
|
||||
struct nf_conntrack_nat_helper {
|
||||
struct list_head list;
|
||||
char mod_name[NF_CT_HELPER_NAME_LEN]; /* module name */
|
||||
struct module *module; /* pointer to self */
|
||||
};
|
||||
|
||||
#define NF_CT_NAT_HELPER_INIT(name) \
|
||||
{ \
|
||||
.mod_name = NF_NAT_HELPER_NAME(name), \
|
||||
.module = THIS_MODULE \
|
||||
}
|
||||
|
||||
void nf_nat_helper_register(struct nf_conntrack_nat_helper *nat);
|
||||
void nf_nat_helper_unregister(struct nf_conntrack_nat_helper *nat);
|
||||
int nf_nat_helper_try_module_get(const char *name, u16 l3num,
|
||||
u8 protonum);
|
||||
void nf_nat_helper_put(struct nf_conntrack_helper *helper);
|
||||
#endif /*_NF_CONNTRACK_HELPER_H*/
|
||||
|
在新工单中引用
屏蔽一个用户