Commit 53b11308a1b53d7e98f65dfd5faea124df99ca14

Authored by Flavio Leitner
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 }