Commit 53b11308a1b53d7e98f65dfd5faea124df99ca14
Committed by
Pablo Neira Ayuso
1 parent
08010a2160
netfilter: nf_nat: register NAT helpers.
Register amanda, ftp, irc, sip and tftp NAT helpers. Signed-off-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Showing 5 changed files with 39 additions and 6 deletions Side-by-side Diff
net/netfilter/nf_nat_amanda.c
... | ... | @@ -19,11 +19,16 @@ |
19 | 19 | #include <net/netfilter/nf_nat_helper.h> |
20 | 20 | #include <linux/netfilter/nf_conntrack_amanda.h> |
21 | 21 | |
22 | +#define NAT_HELPER_NAME "amanda" | |
23 | + | |
22 | 24 | MODULE_AUTHOR("Brian J. Murrell <netfilter@interlinx.bc.ca>"); |
23 | 25 | MODULE_DESCRIPTION("Amanda NAT helper"); |
24 | 26 | MODULE_LICENSE("GPL"); |
25 | -MODULE_ALIAS_NF_NAT_HELPER("amanda"); | |
27 | +MODULE_ALIAS_NF_NAT_HELPER(NAT_HELPER_NAME); | |
26 | 28 | |
29 | +static struct nf_conntrack_nat_helper nat_helper_amanda = | |
30 | + NF_CT_NAT_HELPER_INIT(NAT_HELPER_NAME); | |
31 | + | |
27 | 32 | static unsigned int help(struct sk_buff *skb, |
28 | 33 | enum ip_conntrack_info ctinfo, |
29 | 34 | unsigned int protoff, |
... | ... | @@ -74,6 +79,7 @@ |
74 | 79 | |
75 | 80 | static void __exit nf_nat_amanda_fini(void) |
76 | 81 | { |
82 | + nf_nat_helper_unregister(&nat_helper_amanda); | |
77 | 83 | RCU_INIT_POINTER(nf_nat_amanda_hook, NULL); |
78 | 84 | synchronize_rcu(); |
79 | 85 | } |
... | ... | @@ -81,6 +87,7 @@ |
81 | 87 | static int __init nf_nat_amanda_init(void) |
82 | 88 | { |
83 | 89 | BUG_ON(nf_nat_amanda_hook != NULL); |
90 | + nf_nat_helper_register(&nat_helper_amanda); | |
84 | 91 | RCU_INIT_POINTER(nf_nat_amanda_hook, help); |
85 | 92 | return 0; |
86 | 93 | } |
net/netfilter/nf_nat_ftp.c
... | ... | @@ -21,13 +21,18 @@ |
21 | 21 | #include <net/netfilter/nf_conntrack_expect.h> |
22 | 22 | #include <linux/netfilter/nf_conntrack_ftp.h> |
23 | 23 | |
24 | +#define NAT_HELPER_NAME "ftp" | |
25 | + | |
24 | 26 | MODULE_LICENSE("GPL"); |
25 | 27 | MODULE_AUTHOR("Rusty Russell <rusty@rustcorp.com.au>"); |
26 | 28 | MODULE_DESCRIPTION("ftp NAT helper"); |
27 | -MODULE_ALIAS_NF_NAT_HELPER("ftp"); | |
29 | +MODULE_ALIAS_NF_NAT_HELPER(NAT_HELPER_NAME); | |
28 | 30 | |
29 | 31 | /* FIXME: Time out? --RR */ |
30 | 32 | |
33 | +static struct nf_conntrack_nat_helper nat_helper_ftp = | |
34 | + NF_CT_NAT_HELPER_INIT(NAT_HELPER_NAME); | |
35 | + | |
31 | 36 | static int nf_nat_ftp_fmt_cmd(struct nf_conn *ct, enum nf_ct_ftp_type type, |
32 | 37 | char *buffer, size_t buflen, |
33 | 38 | union nf_inet_addr *addr, u16 port) |
... | ... | @@ -124,6 +129,7 @@ |
124 | 129 | |
125 | 130 | static void __exit nf_nat_ftp_fini(void) |
126 | 131 | { |
132 | + nf_nat_helper_unregister(&nat_helper_ftp); | |
127 | 133 | RCU_INIT_POINTER(nf_nat_ftp_hook, NULL); |
128 | 134 | synchronize_rcu(); |
129 | 135 | } |
... | ... | @@ -131,6 +137,7 @@ |
131 | 137 | static int __init nf_nat_ftp_init(void) |
132 | 138 | { |
133 | 139 | BUG_ON(nf_nat_ftp_hook != NULL); |
140 | + nf_nat_helper_register(&nat_helper_ftp); | |
134 | 141 | RCU_INIT_POINTER(nf_nat_ftp_hook, nf_nat_ftp); |
135 | 142 | return 0; |
136 | 143 | } |
net/netfilter/nf_nat_irc.c
... | ... | @@ -23,11 +23,16 @@ |
23 | 23 | #include <net/netfilter/nf_conntrack_expect.h> |
24 | 24 | #include <linux/netfilter/nf_conntrack_irc.h> |
25 | 25 | |
26 | +#define NAT_HELPER_NAME "irc" | |
27 | + | |
26 | 28 | MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>"); |
27 | 29 | MODULE_DESCRIPTION("IRC (DCC) NAT helper"); |
28 | 30 | MODULE_LICENSE("GPL"); |
29 | -MODULE_ALIAS_NF_NAT_HELPER("irc"); | |
31 | +MODULE_ALIAS_NF_NAT_HELPER(NAT_HELPER_NAME); | |
30 | 32 | |
33 | +static struct nf_conntrack_nat_helper nat_helper_irc = | |
34 | + NF_CT_NAT_HELPER_INIT(NAT_HELPER_NAME); | |
35 | + | |
31 | 36 | static unsigned int help(struct sk_buff *skb, |
32 | 37 | enum ip_conntrack_info ctinfo, |
33 | 38 | unsigned int protoff, |
... | ... | @@ -96,6 +101,7 @@ |
96 | 101 | |
97 | 102 | static void __exit nf_nat_irc_fini(void) |
98 | 103 | { |
104 | + nf_nat_helper_unregister(&nat_helper_irc); | |
99 | 105 | RCU_INIT_POINTER(nf_nat_irc_hook, NULL); |
100 | 106 | synchronize_rcu(); |
101 | 107 | } |
... | ... | @@ -103,6 +109,7 @@ |
103 | 109 | static int __init nf_nat_irc_init(void) |
104 | 110 | { |
105 | 111 | BUG_ON(nf_nat_irc_hook != NULL); |
112 | + nf_nat_helper_register(&nat_helper_irc); | |
106 | 113 | RCU_INIT_POINTER(nf_nat_irc_hook, help); |
107 | 114 | return 0; |
108 | 115 | } |
net/netfilter/nf_nat_sip.c
... | ... | @@ -24,11 +24,15 @@ |
24 | 24 | #include <net/netfilter/nf_conntrack_seqadj.h> |
25 | 25 | #include <linux/netfilter/nf_conntrack_sip.h> |
26 | 26 | |
27 | +#define NAT_HELPER_NAME "sip" | |
28 | + | |
27 | 29 | MODULE_LICENSE("GPL"); |
28 | 30 | MODULE_AUTHOR("Christian Hentschel <chentschel@arnet.com.ar>"); |
29 | 31 | MODULE_DESCRIPTION("SIP NAT helper"); |
30 | -MODULE_ALIAS_NF_NAT_HELPER("sip"); | |
32 | +MODULE_ALIAS_NF_NAT_HELPER(NAT_HELPER_NAME); | |
31 | 33 | |
34 | +static struct nf_conntrack_nat_helper nat_helper_sip = | |
35 | + NF_CT_NAT_HELPER_INIT(NAT_HELPER_NAME); | |
32 | 36 | |
33 | 37 | static unsigned int mangle_packet(struct sk_buff *skb, unsigned int protoff, |
34 | 38 | unsigned int dataoff, |
35 | 39 | |
... | ... | @@ -656,8 +660,8 @@ |
656 | 660 | |
657 | 661 | static void __exit nf_nat_sip_fini(void) |
658 | 662 | { |
663 | + nf_nat_helper_unregister(&nat_helper_sip); | |
659 | 664 | RCU_INIT_POINTER(nf_nat_sip_hooks, NULL); |
660 | - | |
661 | 665 | nf_ct_helper_expectfn_unregister(&sip_nat); |
662 | 666 | synchronize_rcu(); |
663 | 667 | } |
... | ... | @@ -675,6 +679,7 @@ |
675 | 679 | static int __init nf_nat_sip_init(void) |
676 | 680 | { |
677 | 681 | BUG_ON(nf_nat_sip_hooks != NULL); |
682 | + nf_nat_helper_register(&nat_helper_sip); | |
678 | 683 | RCU_INIT_POINTER(nf_nat_sip_hooks, &sip_hooks); |
679 | 684 | nf_ct_helper_expectfn_register(&sip_nat); |
680 | 685 | return 0; |
net/netfilter/nf_nat_tftp.c
... | ... | @@ -13,11 +13,16 @@ |
13 | 13 | #include <net/netfilter/nf_nat_helper.h> |
14 | 14 | #include <linux/netfilter/nf_conntrack_tftp.h> |
15 | 15 | |
16 | +#define NAT_HELPER_NAME "tftp" | |
17 | + | |
16 | 18 | MODULE_AUTHOR("Magnus Boden <mb@ozaba.mine.nu>"); |
17 | 19 | MODULE_DESCRIPTION("TFTP NAT helper"); |
18 | 20 | MODULE_LICENSE("GPL"); |
19 | -MODULE_ALIAS_NF_NAT_HELPER("tftp"); | |
21 | +MODULE_ALIAS_NF_NAT_HELPER(NAT_HELPER_NAME); | |
20 | 22 | |
23 | +static struct nf_conntrack_nat_helper nat_helper_tftp = | |
24 | + NF_CT_NAT_HELPER_INIT(NAT_HELPER_NAME); | |
25 | + | |
21 | 26 | static unsigned int help(struct sk_buff *skb, |
22 | 27 | enum ip_conntrack_info ctinfo, |
23 | 28 | struct nf_conntrack_expect *exp) |
... | ... | @@ -37,6 +42,7 @@ |
37 | 42 | |
38 | 43 | static void __exit nf_nat_tftp_fini(void) |
39 | 44 | { |
45 | + nf_nat_helper_unregister(&nat_helper_tftp); | |
40 | 46 | RCU_INIT_POINTER(nf_nat_tftp_hook, NULL); |
41 | 47 | synchronize_rcu(); |
42 | 48 | } |
... | ... | @@ -44,6 +50,7 @@ |
44 | 50 | static int __init nf_nat_tftp_init(void) |
45 | 51 | { |
46 | 52 | BUG_ON(nf_nat_tftp_hook != NULL); |
53 | + nf_nat_helper_register(&nat_helper_tftp); | |
47 | 54 | RCU_INIT_POINTER(nf_nat_tftp_hook, help); |
48 | 55 | return 0; |
49 | 56 | } |