aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/Kconfig17
-rw-r--r--net/ipv4/Makefile3
-rw-r--r--net/ipv4/ipip.c79
-rw-r--r--net/ipv4/netfilter.c8
-rw-r--r--net/ipv4/netfilter/arp_tables.c8
-rw-r--r--net/ipv4/netfilter/arpt_mangle.c8
-rw-r--r--net/ipv4/netfilter/arptable_filter.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_amanda.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_ftp.c10
-rw-r--r--net/ipv4/netfilter/ip_conntrack_helper_pptp.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_irc.c12
-rw-r--r--net/ipv4/netfilter/ip_conntrack_netbios_ns.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_proto_sctp.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_standalone.c8
-rw-r--r--net/ipv4/netfilter/ip_conntrack_tftp.c10
-rw-r--r--net/ipv4/netfilter/ip_nat_amanda.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_ftp.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_helper_pptp.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_irc.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_snmp_basic.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_standalone.c8
-rw-r--r--net/ipv4/netfilter/ip_nat_tftp.c8
-rw-r--r--net/ipv4/netfilter/ip_queue.c8
-rw-r--r--net/ipv4/netfilter/ip_tables.c8
-rw-r--r--net/ipv4/netfilter/ipt_CLUSTERIP.c8
-rw-r--r--net/ipv4/netfilter/ipt_DSCP.c8
-rw-r--r--net/ipv4/netfilter/ipt_ECN.c8
-rw-r--r--net/ipv4/netfilter/ipt_LOG.c8
-rw-r--r--net/ipv4/netfilter/ipt_MASQUERADE.c8
-rw-r--r--net/ipv4/netfilter/ipt_NETMAP.c8
-rw-r--r--net/ipv4/netfilter/ipt_REDIRECT.c8
-rw-r--r--net/ipv4/netfilter/ipt_REJECT.c8
-rw-r--r--net/ipv4/netfilter/ipt_SAME.c8
-rw-r--r--net/ipv4/netfilter/ipt_TCPMSS.c8
-rw-r--r--net/ipv4/netfilter/ipt_TOS.c8
-rw-r--r--net/ipv4/netfilter/ipt_TTL.c8
-rw-r--r--net/ipv4/netfilter/ipt_ULOG.c8
-rw-r--r--net/ipv4/netfilter/ipt_addrtype.c8
-rw-r--r--net/ipv4/netfilter/ipt_ah.c8
-rw-r--r--net/ipv4/netfilter/ipt_dscp.c8
-rw-r--r--net/ipv4/netfilter/ipt_ecn.c8
-rw-r--r--net/ipv4/netfilter/ipt_esp.c8
-rw-r--r--net/ipv4/netfilter/ipt_hashlimit.c8
-rw-r--r--net/ipv4/netfilter/ipt_iprange.c8
-rw-r--r--net/ipv4/netfilter/ipt_multiport.c8
-rw-r--r--net/ipv4/netfilter/ipt_owner.c8
-rw-r--r--net/ipv4/netfilter/ipt_recent.c8
-rw-r--r--net/ipv4/netfilter/ipt_tos.c8
-rw-r--r--net/ipv4/netfilter/ipt_ttl.c8
-rw-r--r--net/ipv4/netfilter/iptable_filter.c8
-rw-r--r--net/ipv4/netfilter/iptable_mangle.c8
-rw-r--r--net/ipv4/netfilter/iptable_raw.c8
-rw-r--r--net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c8
-rw-r--r--net/ipv4/tcp_cong.c2
-rw-r--r--net/ipv4/tunnel4.c113
-rw-r--r--net/ipv4/xfrm4_tunnel.c79
56 files changed, 370 insertions, 331 deletions
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index 011cca7ae02b..e40f75322377 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -235,6 +235,7 @@ config IP_PNP_RARP
235# bool ' IP: ARP support' CONFIG_IP_PNP_ARP 235# bool ' IP: ARP support' CONFIG_IP_PNP_ARP
236config NET_IPIP 236config NET_IPIP
237 tristate "IP: tunneling" 237 tristate "IP: tunneling"
238 select INET_TUNNEL
238 ---help--- 239 ---help---
239 Tunneling means encapsulating data of one protocol type within 240 Tunneling means encapsulating data of one protocol type within
240 another protocol and sending it over a channel that understands the 241 another protocol and sending it over a channel that understands the
@@ -395,7 +396,7 @@ config INET_ESP
395config INET_IPCOMP 396config INET_IPCOMP
396 tristate "IP: IPComp transformation" 397 tristate "IP: IPComp transformation"
397 select XFRM 398 select XFRM
398 select INET_TUNNEL 399 select INET_XFRM_TUNNEL
399 select CRYPTO 400 select CRYPTO
400 select CRYPTO_DEFLATE 401 select CRYPTO_DEFLATE
401 ---help--- 402 ---help---
@@ -404,14 +405,14 @@ config INET_IPCOMP
404 405
405 If unsure, say Y. 406 If unsure, say Y.
406 407
408config INET_XFRM_TUNNEL
409 tristate
410 select INET_TUNNEL
411 default n
412
407config INET_TUNNEL 413config INET_TUNNEL
408 tristate "IP: tunnel transformation" 414 tristate
409 select XFRM 415 default n
410 ---help---
411 Support for generic IP tunnel transformation, which is required by
412 the IP tunneling module as well as tunnel mode IPComp.
413
414 If unsure, say Y.
415 416
416config INET_DIAG 417config INET_DIAG
417 tristate "INET: socket monitoring interface" 418 tristate "INET: socket monitoring interface"
diff --git a/net/ipv4/Makefile b/net/ipv4/Makefile
index 35e5f5999092..9ef50a0b9d2c 100644
--- a/net/ipv4/Makefile
+++ b/net/ipv4/Makefile
@@ -22,7 +22,8 @@ obj-$(CONFIG_SYN_COOKIES) += syncookies.o
22obj-$(CONFIG_INET_AH) += ah4.o 22obj-$(CONFIG_INET_AH) += ah4.o
23obj-$(CONFIG_INET_ESP) += esp4.o 23obj-$(CONFIG_INET_ESP) += esp4.o
24obj-$(CONFIG_INET_IPCOMP) += ipcomp.o 24obj-$(CONFIG_INET_IPCOMP) += ipcomp.o
25obj-$(CONFIG_INET_TUNNEL) += xfrm4_tunnel.o 25obj-$(CONFIG_INET_XFRM_TUNNEL) += xfrm4_tunnel.o
26obj-$(CONFIG_INET_TUNNEL) += tunnel4.o
26obj-$(CONFIG_IP_PNP) += ipconfig.o 27obj-$(CONFIG_IP_PNP) += ipconfig.o
27obj-$(CONFIG_IP_ROUTE_MULTIPATH_RR) += multipath_rr.o 28obj-$(CONFIG_IP_ROUTE_MULTIPATH_RR) += multipath_rr.o
28obj-$(CONFIG_IP_ROUTE_MULTIPATH_RANDOM) += multipath_random.o 29obj-$(CONFIG_IP_ROUTE_MULTIPATH_RANDOM) += multipath_random.o
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
index 03d13742a4b8..eef07b0916a3 100644
--- a/net/ipv4/ipip.c
+++ b/net/ipv4/ipip.c
@@ -114,7 +114,6 @@
114#include <net/sock.h> 114#include <net/sock.h>
115#include <net/ip.h> 115#include <net/ip.h>
116#include <net/icmp.h> 116#include <net/icmp.h>
117#include <net/protocol.h>
118#include <net/ipip.h> 117#include <net/ipip.h>
119#include <net/inet_ecn.h> 118#include <net/inet_ecn.h>
120#include <net/xfrm.h> 119#include <net/xfrm.h>
@@ -274,7 +273,7 @@ static void ipip_tunnel_uninit(struct net_device *dev)
274 dev_put(dev); 273 dev_put(dev);
275} 274}
276 275
277static void ipip_err(struct sk_buff *skb, u32 info) 276static int ipip_err(struct sk_buff *skb, u32 info)
278{ 277{
279#ifndef I_WISH_WORLD_WERE_PERFECT 278#ifndef I_WISH_WORLD_WERE_PERFECT
280 279
@@ -286,21 +285,22 @@ static void ipip_err(struct sk_buff *skb, u32 info)
286 int type = skb->h.icmph->type; 285 int type = skb->h.icmph->type;
287 int code = skb->h.icmph->code; 286 int code = skb->h.icmph->code;
288 struct ip_tunnel *t; 287 struct ip_tunnel *t;
288 int err;
289 289
290 switch (type) { 290 switch (type) {
291 default: 291 default:
292 case ICMP_PARAMETERPROB: 292 case ICMP_PARAMETERPROB:
293 return; 293 return 0;
294 294
295 case ICMP_DEST_UNREACH: 295 case ICMP_DEST_UNREACH:
296 switch (code) { 296 switch (code) {
297 case ICMP_SR_FAILED: 297 case ICMP_SR_FAILED:
298 case ICMP_PORT_UNREACH: 298 case ICMP_PORT_UNREACH:
299 /* Impossible event. */ 299 /* Impossible event. */
300 return; 300 return 0;
301 case ICMP_FRAG_NEEDED: 301 case ICMP_FRAG_NEEDED:
302 /* Soft state for pmtu is maintained by IP core. */ 302 /* Soft state for pmtu is maintained by IP core. */
303 return; 303 return 0;
304 default: 304 default:
305 /* All others are translated to HOST_UNREACH. 305 /* All others are translated to HOST_UNREACH.
306 rfc2003 contains "deep thoughts" about NET_UNREACH, 306 rfc2003 contains "deep thoughts" about NET_UNREACH,
@@ -311,14 +311,18 @@ static void ipip_err(struct sk_buff *skb, u32 info)
311 break; 311 break;
312 case ICMP_TIME_EXCEEDED: 312 case ICMP_TIME_EXCEEDED:
313 if (code != ICMP_EXC_TTL) 313 if (code != ICMP_EXC_TTL)
314 return; 314 return 0;
315 break; 315 break;
316 } 316 }
317 317
318 err = -ENOENT;
319
318 read_lock(&ipip_lock); 320 read_lock(&ipip_lock);
319 t = ipip_tunnel_lookup(iph->daddr, iph->saddr); 321 t = ipip_tunnel_lookup(iph->daddr, iph->saddr);
320 if (t == NULL || t->parms.iph.daddr == 0) 322 if (t == NULL || t->parms.iph.daddr == 0)
321 goto out; 323 goto out;
324
325 err = 0;
322 if (t->parms.iph.ttl == 0 && type == ICMP_TIME_EXCEEDED) 326 if (t->parms.iph.ttl == 0 && type == ICMP_TIME_EXCEEDED)
323 goto out; 327 goto out;
324 328
@@ -329,7 +333,7 @@ static void ipip_err(struct sk_buff *skb, u32 info)
329 t->err_time = jiffies; 333 t->err_time = jiffies;
330out: 334out:
331 read_unlock(&ipip_lock); 335 read_unlock(&ipip_lock);
332 return; 336 return err;
333#else 337#else
334 struct iphdr *iph = (struct iphdr*)dp; 338 struct iphdr *iph = (struct iphdr*)dp;
335 int hlen = iph->ihl<<2; 339 int hlen = iph->ihl<<2;
@@ -344,15 +348,15 @@ out:
344 struct rtable *rt; 348 struct rtable *rt;
345 349
346 if (len < hlen + sizeof(struct iphdr)) 350 if (len < hlen + sizeof(struct iphdr))
347 return; 351 return 0;
348 eiph = (struct iphdr*)(dp + hlen); 352 eiph = (struct iphdr*)(dp + hlen);
349 353
350 switch (type) { 354 switch (type) {
351 default: 355 default:
352 return; 356 return 0;
353 case ICMP_PARAMETERPROB: 357 case ICMP_PARAMETERPROB:
354 if (skb->h.icmph->un.gateway < hlen) 358 if (skb->h.icmph->un.gateway < hlen)
355 return; 359 return 0;
356 360
357 /* So... This guy found something strange INSIDE encapsulated 361 /* So... This guy found something strange INSIDE encapsulated
358 packet. Well, he is fool, but what can we do ? 362 packet. Well, he is fool, but what can we do ?
@@ -366,16 +370,16 @@ out:
366 case ICMP_SR_FAILED: 370 case ICMP_SR_FAILED:
367 case ICMP_PORT_UNREACH: 371 case ICMP_PORT_UNREACH:
368 /* Impossible event. */ 372 /* Impossible event. */
369 return; 373 return 0;
370 case ICMP_FRAG_NEEDED: 374 case ICMP_FRAG_NEEDED:
371 /* And it is the only really necessary thing :-) */ 375 /* And it is the only really necessary thing :-) */
372 rel_info = ntohs(skb->h.icmph->un.frag.mtu); 376 rel_info = ntohs(skb->h.icmph->un.frag.mtu);
373 if (rel_info < hlen+68) 377 if (rel_info < hlen+68)
374 return; 378 return 0;
375 rel_info -= hlen; 379 rel_info -= hlen;
376 /* BSD 4.2 MORE DOES NOT EXIST IN NATURE. */ 380 /* BSD 4.2 MORE DOES NOT EXIST IN NATURE. */
377 if (rel_info > ntohs(eiph->tot_len)) 381 if (rel_info > ntohs(eiph->tot_len))
378 return; 382 return 0;
379 break; 383 break;
380 default: 384 default:
381 /* All others are translated to HOST_UNREACH. 385 /* All others are translated to HOST_UNREACH.
@@ -389,14 +393,14 @@ out:
389 break; 393 break;
390 case ICMP_TIME_EXCEEDED: 394 case ICMP_TIME_EXCEEDED:
391 if (code != ICMP_EXC_TTL) 395 if (code != ICMP_EXC_TTL)
392 return; 396 return 0;
393 break; 397 break;
394 } 398 }
395 399
396 /* Prepare fake skb to feed it to icmp_send */ 400 /* Prepare fake skb to feed it to icmp_send */
397 skb2 = skb_clone(skb, GFP_ATOMIC); 401 skb2 = skb_clone(skb, GFP_ATOMIC);
398 if (skb2 == NULL) 402 if (skb2 == NULL)
399 return; 403 return 0;
400 dst_release(skb2->dst); 404 dst_release(skb2->dst);
401 skb2->dst = NULL; 405 skb2->dst = NULL;
402 skb_pull(skb2, skb->data - (u8*)eiph); 406 skb_pull(skb2, skb->data - (u8*)eiph);
@@ -409,7 +413,7 @@ out:
409 fl.proto = IPPROTO_IPIP; 413 fl.proto = IPPROTO_IPIP;
410 if (ip_route_output_key(&rt, &key)) { 414 if (ip_route_output_key(&rt, &key)) {
411 kfree_skb(skb2); 415 kfree_skb(skb2);
412 return; 416 return 0;
413 } 417 }
414 skb2->dev = rt->u.dst.dev; 418 skb2->dev = rt->u.dst.dev;
415 419
@@ -424,14 +428,14 @@ out:
424 rt->u.dst.dev->type != ARPHRD_TUNNEL) { 428 rt->u.dst.dev->type != ARPHRD_TUNNEL) {
425 ip_rt_put(rt); 429 ip_rt_put(rt);
426 kfree_skb(skb2); 430 kfree_skb(skb2);
427 return; 431 return 0;
428 } 432 }
429 } else { 433 } else {
430 ip_rt_put(rt); 434 ip_rt_put(rt);
431 if (ip_route_input(skb2, eiph->daddr, eiph->saddr, eiph->tos, skb2->dev) || 435 if (ip_route_input(skb2, eiph->daddr, eiph->saddr, eiph->tos, skb2->dev) ||
432 skb2->dst->dev->type != ARPHRD_TUNNEL) { 436 skb2->dst->dev->type != ARPHRD_TUNNEL) {
433 kfree_skb(skb2); 437 kfree_skb(skb2);
434 return; 438 return 0;
435 } 439 }
436 } 440 }
437 441
@@ -439,7 +443,7 @@ out:
439 if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) { 443 if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) {
440 if (rel_info > dst_mtu(skb2->dst)) { 444 if (rel_info > dst_mtu(skb2->dst)) {
441 kfree_skb(skb2); 445 kfree_skb(skb2);
442 return; 446 return 0;
443 } 447 }
444 skb2->dst->ops->update_pmtu(skb2->dst, rel_info); 448 skb2->dst->ops->update_pmtu(skb2->dst, rel_info);
445 rel_info = htonl(rel_info); 449 rel_info = htonl(rel_info);
@@ -453,7 +457,7 @@ out:
453 457
454 icmp_send(skb2, rel_type, rel_code, rel_info); 458 icmp_send(skb2, rel_type, rel_code, rel_info);
455 kfree_skb(skb2); 459 kfree_skb(skb2);
456 return; 460 return 0;
457#endif 461#endif
458} 462}
459 463
@@ -855,39 +859,12 @@ static int __init ipip_fb_tunnel_init(struct net_device *dev)
855 return 0; 859 return 0;
856} 860}
857 861
858#ifdef CONFIG_INET_TUNNEL
859static struct xfrm_tunnel ipip_handler = { 862static struct xfrm_tunnel ipip_handler = {
860 .handler = ipip_rcv, 863 .handler = ipip_rcv,
861 .err_handler = ipip_err, 864 .err_handler = ipip_err,
865 .priority = 1,
862}; 866};
863 867
864static inline int ipip_register(void)
865{
866 return xfrm4_tunnel_register(&ipip_handler);
867}
868
869static inline int ipip_unregister(void)
870{
871 return xfrm4_tunnel_deregister(&ipip_handler);
872}
873#else
874static struct net_protocol ipip_protocol = {
875 .handler = ipip_rcv,
876 .err_handler = ipip_err,
877 .no_policy = 1,
878};
879
880static inline int ipip_register(void)
881{
882 return inet_add_protocol(&ipip_protocol, IPPROTO_IPIP);
883}
884
885static inline int ipip_unregister(void)
886{
887 return inet_del_protocol(&ipip_protocol, IPPROTO_IPIP);
888}
889#endif
890
891static char banner[] __initdata = 868static char banner[] __initdata =
892 KERN_INFO "IPv4 over IPv4 tunneling driver\n"; 869 KERN_INFO "IPv4 over IPv4 tunneling driver\n";
893 870
@@ -897,7 +874,7 @@ static int __init ipip_init(void)
897 874
898 printk(banner); 875 printk(banner);
899 876
900 if (ipip_register() < 0) { 877 if (xfrm4_tunnel_register(&ipip_handler)) {
901 printk(KERN_INFO "ipip init: can't register tunnel\n"); 878 printk(KERN_INFO "ipip init: can't register tunnel\n");
902 return -EAGAIN; 879 return -EAGAIN;
903 } 880 }
@@ -919,7 +896,7 @@ static int __init ipip_init(void)
919 err2: 896 err2:
920 free_netdev(ipip_fb_tunnel_dev); 897 free_netdev(ipip_fb_tunnel_dev);
921 err1: 898 err1:
922 ipip_unregister(); 899 xfrm4_tunnel_deregister(&ipip_handler);
923 goto out; 900 goto out;
924} 901}
925 902
@@ -939,7 +916,7 @@ static void __exit ipip_destroy_tunnels(void)
939 916
940static void __exit ipip_fini(void) 917static void __exit ipip_fini(void)
941{ 918{
942 if (ipip_unregister() < 0) 919 if (xfrm4_tunnel_deregister(&ipip_handler))
943 printk(KERN_INFO "ipip close: can't deregister tunnel\n"); 920 printk(KERN_INFO "ipip close: can't deregister tunnel\n");
944 921
945 rtnl_lock(); 922 rtnl_lock();
diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c
index ed42cdc57cd9..b5ad9ac2fbcc 100644
--- a/net/ipv4/netfilter.c
+++ b/net/ipv4/netfilter.c
@@ -167,15 +167,15 @@ static struct nf_queue_rerouter ip_reroute = {
167 .reroute = queue_reroute, 167 .reroute = queue_reroute,
168}; 168};
169 169
170static int init(void) 170static int ipv4_netfilter_init(void)
171{ 171{
172 return nf_register_queue_rerouter(PF_INET, &ip_reroute); 172 return nf_register_queue_rerouter(PF_INET, &ip_reroute);
173} 173}
174 174
175static void fini(void) 175static void ipv4_netfilter_fini(void)
176{ 176{
177 nf_unregister_queue_rerouter(PF_INET); 177 nf_unregister_queue_rerouter(PF_INET);
178} 178}
179 179
180module_init(init); 180module_init(ipv4_netfilter_init);
181module_exit(fini); 181module_exit(ipv4_netfilter_fini);
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
index ff0c594a4198..a44a5d73457d 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
@@ -1166,7 +1166,7 @@ static struct nf_sockopt_ops arpt_sockopts = {
1166 .get = do_arpt_get_ctl, 1166 .get = do_arpt_get_ctl,
1167}; 1167};
1168 1168
1169static int __init init(void) 1169static int __init arp_tables_init(void)
1170{ 1170{
1171 int ret; 1171 int ret;
1172 1172
@@ -1187,7 +1187,7 @@ static int __init init(void)
1187 return 0; 1187 return 0;
1188} 1188}
1189 1189
1190static void __exit fini(void) 1190static void __exit arp_tables_fini(void)
1191{ 1191{
1192 nf_unregister_sockopt(&arpt_sockopts); 1192 nf_unregister_sockopt(&arpt_sockopts);
1193 xt_proto_fini(NF_ARP); 1193 xt_proto_fini(NF_ARP);
@@ -1197,5 +1197,5 @@ EXPORT_SYMBOL(arpt_register_table);
1197EXPORT_SYMBOL(arpt_unregister_table); 1197EXPORT_SYMBOL(arpt_unregister_table);
1198EXPORT_SYMBOL(arpt_do_table); 1198EXPORT_SYMBOL(arpt_do_table);
1199 1199
1200module_init(init); 1200module_init(arp_tables_init);
1201module_exit(fini); 1201module_exit(arp_tables_fini);
diff --git a/net/ipv4/netfilter/arpt_mangle.c b/net/ipv4/netfilter/arpt_mangle.c
index 0f2a95350e26..a58325c1ceb9 100644
--- a/net/ipv4/netfilter/arpt_mangle.c
+++ b/net/ipv4/netfilter/arpt_mangle.c
@@ -89,7 +89,7 @@ static struct arpt_target arpt_mangle_reg = {
89 .me = THIS_MODULE, 89 .me = THIS_MODULE,
90}; 90};
91 91
92static int __init init(void) 92static int __init arpt_mangle_init(void)
93{ 93{
94 if (arpt_register_target(&arpt_mangle_reg)) 94 if (arpt_register_target(&arpt_mangle_reg))
95 return -EINVAL; 95 return -EINVAL;
@@ -97,10 +97,10 @@ static int __init init(void)
97 return 0; 97 return 0;
98} 98}
99 99
100static void __exit fini(void) 100static void __exit arpt_mangle_fini(void)
101{ 101{
102 arpt_unregister_target(&arpt_mangle_reg); 102 arpt_unregister_target(&arpt_mangle_reg);
103} 103}
104 104
105module_init(init); 105module_init(arpt_mangle_init);
106module_exit(fini); 106module_exit(arpt_mangle_fini);
diff --git a/net/ipv4/netfilter/arptable_filter.c b/net/ipv4/netfilter/arptable_filter.c
index f6ab45f48681..d0d379c7df9a 100644
--- a/net/ipv4/netfilter/arptable_filter.c
+++ b/net/ipv4/netfilter/arptable_filter.c
@@ -179,7 +179,7 @@ static struct nf_hook_ops arpt_ops[] = {
179 }, 179 },
180}; 180};
181 181
182static int __init init(void) 182static int __init arptable_filter_init(void)
183{ 183{
184 int ret, i; 184 int ret, i;
185 185
@@ -201,7 +201,7 @@ cleanup_hooks:
201 return ret; 201 return ret;
202} 202}
203 203
204static void __exit fini(void) 204static void __exit arptable_filter_fini(void)
205{ 205{
206 unsigned int i; 206 unsigned int i;
207 207
@@ -211,5 +211,5 @@ static void __exit fini(void)
211 arpt_unregister_table(&packet_filter); 211 arpt_unregister_table(&packet_filter);
212} 212}
213 213
214module_init(init); 214module_init(arptable_filter_init);
215module_exit(fini); 215module_exit(arptable_filter_fini);
diff --git a/net/ipv4/netfilter/ip_conntrack_amanda.c b/net/ipv4/netfilter/ip_conntrack_amanda.c
index 84e4f79b7ffa..a604b1ccfdaa 100644
--- a/net/ipv4/netfilter/ip_conntrack_amanda.c
+++ b/net/ipv4/netfilter/ip_conntrack_amanda.c
@@ -153,13 +153,13 @@ static struct ip_conntrack_helper amanda_helper = {
153 }, 153 },
154}; 154};
155 155
156static void __exit fini(void) 156static void __exit ip_conntrack_amanda_fini(void)
157{ 157{
158 ip_conntrack_helper_unregister(&amanda_helper); 158 ip_conntrack_helper_unregister(&amanda_helper);
159 kfree(amanda_buffer); 159 kfree(amanda_buffer);
160} 160}
161 161
162static int __init init(void) 162static int __init ip_conntrack_amanda_init(void)
163{ 163{
164 int ret; 164 int ret;
165 165
@@ -177,5 +177,5 @@ static int __init init(void)
177 177
178} 178}
179 179
180module_init(init); 180module_init(ip_conntrack_amanda_init);
181module_exit(fini); 181module_exit(ip_conntrack_amanda_fini);
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
index e627e5856172..3e542bf28a9d 100644
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -453,7 +453,7 @@ static struct ip_conntrack_helper ftp[MAX_PORTS];
453static char ftp_names[MAX_PORTS][sizeof("ftp-65535")]; 453static char ftp_names[MAX_PORTS][sizeof("ftp-65535")];
454 454
455/* Not __exit: called from init() */ 455/* Not __exit: called from init() */
456static void fini(void) 456static void ip_conntrack_ftp_fini(void)
457{ 457{
458 int i; 458 int i;
459 for (i = 0; i < ports_c; i++) { 459 for (i = 0; i < ports_c; i++) {
@@ -465,7 +465,7 @@ static void fini(void)
465 kfree(ftp_buffer); 465 kfree(ftp_buffer);
466} 466}
467 467
468static int __init init(void) 468static int __init ip_conntrack_ftp_init(void)
469{ 469{
470 int i, ret; 470 int i, ret;
471 char *tmpname; 471 char *tmpname;
@@ -499,12 +499,12 @@ static int __init init(void)
499 ret = ip_conntrack_helper_register(&ftp[i]); 499 ret = ip_conntrack_helper_register(&ftp[i]);
500 500
501 if (ret) { 501 if (ret) {
502 fini(); 502 ip_conntrack_ftp_fini();
503 return ret; 503 return ret;
504 } 504 }
505 } 505 }
506 return 0; 506 return 0;
507} 507}
508 508
509module_init(init); 509module_init(ip_conntrack_ftp_init);
510module_exit(fini); 510module_exit(ip_conntrack_ftp_fini);
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_pptp.c b/net/ipv4/netfilter/ip_conntrack_helper_pptp.c
index d716bba798f2..7d3ba4302e9e 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_pptp.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_pptp.c
@@ -766,7 +766,7 @@ extern void ip_ct_proto_gre_fini(void);
766extern int __init ip_ct_proto_gre_init(void); 766extern int __init ip_ct_proto_gre_init(void);
767 767
768/* ip_conntrack_pptp initialization */ 768/* ip_conntrack_pptp initialization */
769static int __init init(void) 769static int __init ip_conntrack_helper_pptp_init(void)
770{ 770{
771 int retcode; 771 int retcode;
772 772
@@ -786,15 +786,15 @@ static int __init init(void)
786 return 0; 786 return 0;
787} 787}
788 788
789static void __exit fini(void) 789static void __exit ip_conntrack_helper_pptp_fini(void)
790{ 790{
791 ip_conntrack_helper_unregister(&pptp); 791 ip_conntrack_helper_unregister(&pptp);
792 ip_ct_proto_gre_fini(); 792 ip_ct_proto_gre_fini();
793 printk("ip_conntrack_pptp version %s unloaded\n", IP_CT_PPTP_VERSION); 793 printk("ip_conntrack_pptp version %s unloaded\n", IP_CT_PPTP_VERSION);
794} 794}
795 795
796module_init(init); 796module_init(ip_conntrack_helper_pptp_init);
797module_exit(fini); 797module_exit(ip_conntrack_helper_pptp_fini);
798 798
799EXPORT_SYMBOL(ip_nat_pptp_hook_outbound); 799EXPORT_SYMBOL(ip_nat_pptp_hook_outbound);
800EXPORT_SYMBOL(ip_nat_pptp_hook_inbound); 800EXPORT_SYMBOL(ip_nat_pptp_hook_inbound);
diff --git a/net/ipv4/netfilter/ip_conntrack_irc.c b/net/ipv4/netfilter/ip_conntrack_irc.c
index c51a2cf71b4b..a2ac5ce544b2 100644
--- a/net/ipv4/netfilter/ip_conntrack_irc.c
+++ b/net/ipv4/netfilter/ip_conntrack_irc.c
@@ -242,9 +242,9 @@ static int help(struct sk_buff **pskb,
242static struct ip_conntrack_helper irc_helpers[MAX_PORTS]; 242static struct ip_conntrack_helper irc_helpers[MAX_PORTS];
243static char irc_names[MAX_PORTS][sizeof("irc-65535")]; 243static char irc_names[MAX_PORTS][sizeof("irc-65535")];
244 244
245static void fini(void); 245static void ip_conntrack_irc_fini(void);
246 246
247static int __init init(void) 247static int __init ip_conntrack_irc_init(void)
248{ 248{
249 int i, ret; 249 int i, ret;
250 struct ip_conntrack_helper *hlpr; 250 struct ip_conntrack_helper *hlpr;
@@ -288,7 +288,7 @@ static int __init init(void)
288 if (ret) { 288 if (ret) {
289 printk("ip_conntrack_irc: ERROR registering port %d\n", 289 printk("ip_conntrack_irc: ERROR registering port %d\n",
290 ports[i]); 290 ports[i]);
291 fini(); 291 ip_conntrack_irc_fini();
292 return -EBUSY; 292 return -EBUSY;
293 } 293 }
294 } 294 }
@@ -297,7 +297,7 @@ static int __init init(void)
297 297
298/* This function is intentionally _NOT_ defined as __exit, because 298/* This function is intentionally _NOT_ defined as __exit, because
299 * it is needed by the init function */ 299 * it is needed by the init function */
300static void fini(void) 300static void ip_conntrack_irc_fini(void)
301{ 301{
302 int i; 302 int i;
303 for (i = 0; i < ports_c; i++) { 303 for (i = 0; i < ports_c; i++) {
@@ -308,5 +308,5 @@ static void fini(void)
308 kfree(irc_buffer); 308 kfree(irc_buffer);
309} 309}
310 310
311module_init(init); 311module_init(ip_conntrack_irc_init);
312module_exit(fini); 312module_exit(ip_conntrack_irc_fini);
diff --git a/net/ipv4/netfilter/ip_conntrack_netbios_ns.c b/net/ipv4/netfilter/ip_conntrack_netbios_ns.c
index 4e68e16a2612..a566a81325b2 100644
--- a/net/ipv4/netfilter/ip_conntrack_netbios_ns.c
+++ b/net/ipv4/netfilter/ip_conntrack_netbios_ns.c
@@ -127,16 +127,16 @@ static struct ip_conntrack_helper helper = {
127 .help = help, 127 .help = help,
128}; 128};
129 129
130static int __init init(void) 130static int __init ip_conntrack_netbios_ns_init(void)
131{ 131{
132 helper.timeout = timeout; 132 helper.timeout = timeout;
133 return ip_conntrack_helper_register(&helper); 133 return ip_conntrack_helper_register(&helper);
134} 134}
135 135
136static void __exit fini(void) 136static void __exit ip_conntrack_netbios_ns_fini(void)
137{ 137{
138 ip_conntrack_helper_unregister(&helper); 138 ip_conntrack_helper_unregister(&helper);
139} 139}
140 140
141module_init(init); 141module_init(ip_conntrack_netbios_ns_init);
142module_exit(fini); 142module_exit(ip_conntrack_netbios_ns_fini);
diff --git a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
index be602e8aeab0..5259abd0fb42 100644
--- a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
+++ b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
@@ -609,7 +609,7 @@ static ctl_table ip_ct_net_table[] = {
609static struct ctl_table_header *ip_ct_sysctl_header; 609static struct ctl_table_header *ip_ct_sysctl_header;
610#endif 610#endif
611 611
612static int __init init(void) 612static int __init ip_conntrack_proto_sctp_init(void)
613{ 613{
614 int ret; 614 int ret;
615 615
@@ -640,7 +640,7 @@ static int __init init(void)
640 return ret; 640 return ret;
641} 641}
642 642
643static void __exit fini(void) 643static void __exit ip_conntrack_proto_sctp_fini(void)
644{ 644{
645 ip_conntrack_protocol_unregister(&ip_conntrack_protocol_sctp); 645 ip_conntrack_protocol_unregister(&ip_conntrack_protocol_sctp);
646#ifdef CONFIG_SYSCTL 646#ifdef CONFIG_SYSCTL
@@ -649,8 +649,8 @@ static void __exit fini(void)
649 DEBUGP("SCTP conntrack module unloaded\n"); 649 DEBUGP("SCTP conntrack module unloaded\n");
650} 650}
651 651
652module_init(init); 652module_init(ip_conntrack_proto_sctp_init);
653module_exit(fini); 653module_exit(ip_conntrack_proto_sctp_fini);
654 654
655MODULE_LICENSE("GPL"); 655MODULE_LICENSE("GPL");
656MODULE_AUTHOR("Kiran Kumar Immidi"); 656MODULE_AUTHOR("Kiran Kumar Immidi");
diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c
index 833fcb4be5e7..52076026db36 100644
--- a/net/ipv4/netfilter/ip_conntrack_standalone.c
+++ b/net/ipv4/netfilter/ip_conntrack_standalone.c
@@ -929,18 +929,18 @@ void ip_conntrack_protocol_unregister(struct ip_conntrack_protocol *proto)
929 ip_ct_iterate_cleanup(kill_proto, &proto->proto); 929 ip_ct_iterate_cleanup(kill_proto, &proto->proto);
930} 930}
931 931
932static int __init init(void) 932static int __init ip_conntrack_standalone_init(void)
933{ 933{
934 return init_or_cleanup(1); 934 return init_or_cleanup(1);
935} 935}
936 936
937static void __exit fini(void) 937static void __exit ip_conntrack_standalone_fini(void)
938{ 938{
939 init_or_cleanup(0); 939 init_or_cleanup(0);
940} 940}
941 941
942module_init(init); 942module_init(ip_conntrack_standalone_init);
943module_exit(fini); 943module_exit(ip_conntrack_standalone_fini);
944 944
945/* Some modules need us, but don't depend directly on any symbol. 945/* Some modules need us, but don't depend directly on any symbol.
946 They should call this. */ 946 They should call this. */
diff --git a/net/ipv4/netfilter/ip_conntrack_tftp.c b/net/ipv4/netfilter/ip_conntrack_tftp.c
index 4ba4463cec28..7e33d3bed5e3 100644
--- a/net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_tftp.c
@@ -103,7 +103,7 @@ static int tftp_help(struct sk_buff **pskb,
103static struct ip_conntrack_helper tftp[MAX_PORTS]; 103static struct ip_conntrack_helper tftp[MAX_PORTS];
104static char tftp_names[MAX_PORTS][sizeof("tftp-65535")]; 104static char tftp_names[MAX_PORTS][sizeof("tftp-65535")];
105 105
106static void fini(void) 106static void ip_conntrack_tftp_fini(void)
107{ 107{
108 int i; 108 int i;
109 109
@@ -114,7 +114,7 @@ static void fini(void)
114 } 114 }
115} 115}
116 116
117static int __init init(void) 117static int __init ip_conntrack_tftp_init(void)
118{ 118{
119 int i, ret; 119 int i, ret;
120 char *tmpname; 120 char *tmpname;
@@ -148,12 +148,12 @@ static int __init init(void)
148 if (ret) { 148 if (ret) {
149 printk("ERROR registering helper for port %d\n", 149 printk("ERROR registering helper for port %d\n",
150 ports[i]); 150 ports[i]);
151 fini(); 151 ip_conntrack_tftp_fini();
152 return(ret); 152 return(ret);
153 } 153 }
154 } 154 }
155 return(0); 155 return(0);
156} 156}
157 157
158module_init(init); 158module_init(ip_conntrack_tftp_init);
159module_exit(fini); 159module_exit(ip_conntrack_tftp_fini);
diff --git a/net/ipv4/netfilter/ip_nat_amanda.c b/net/ipv4/netfilter/ip_nat_amanda.c
index 706c8074f422..3a888715bbf3 100644
--- a/net/ipv4/netfilter/ip_nat_amanda.c
+++ b/net/ipv4/netfilter/ip_nat_amanda.c
@@ -68,19 +68,19 @@ static unsigned int help(struct sk_buff **pskb,
68 return ret; 68 return ret;
69} 69}
70 70
71static void __exit fini(void) 71static void __exit ip_nat_amanda_fini(void)
72{ 72{
73 ip_nat_amanda_hook = NULL; 73 ip_nat_amanda_hook = NULL;
74 /* Make sure noone calls it, meanwhile. */ 74 /* Make sure noone calls it, meanwhile. */
75 synchronize_net(); 75 synchronize_net();
76} 76}
77 77
78static int __init init(void) 78static int __init ip_nat_amanda_init(void)
79{ 79{
80 BUG_ON(ip_nat_amanda_hook); 80 BUG_ON(ip_nat_amanda_hook);
81 ip_nat_amanda_hook = help; 81 ip_nat_amanda_hook = help;
82 return 0; 82 return 0;
83} 83}
84 84
85module_init(init); 85module_init(ip_nat_amanda_init);
86module_exit(fini); 86module_exit(ip_nat_amanda_fini);
diff --git a/net/ipv4/netfilter/ip_nat_ftp.c b/net/ipv4/netfilter/ip_nat_ftp.c
index b8daab3c64af..3328fc5c5f50 100644
--- a/net/ipv4/netfilter/ip_nat_ftp.c
+++ b/net/ipv4/netfilter/ip_nat_ftp.c
@@ -154,14 +154,14 @@ static unsigned int ip_nat_ftp(struct sk_buff **pskb,
154 return NF_ACCEPT; 154 return NF_ACCEPT;
155} 155}
156 156
157static void __exit fini(void) 157static void __exit ip_nat_ftp_fini(void)
158{ 158{
159 ip_nat_ftp_hook = NULL; 159 ip_nat_ftp_hook = NULL;
160 /* Make sure noone calls it, meanwhile. */ 160 /* Make sure noone calls it, meanwhile. */
161 synchronize_net(); 161 synchronize_net();
162} 162}
163 163
164static int __init init(void) 164static int __init ip_nat_ftp_init(void)
165{ 165{
166 BUG_ON(ip_nat_ftp_hook); 166 BUG_ON(ip_nat_ftp_hook);
167 ip_nat_ftp_hook = ip_nat_ftp; 167 ip_nat_ftp_hook = ip_nat_ftp;
@@ -177,5 +177,5 @@ static int warn_set(const char *val, struct kernel_param *kp)
177} 177}
178module_param_call(ports, warn_set, NULL, NULL, 0); 178module_param_call(ports, warn_set, NULL, NULL, 0);
179 179
180module_init(init); 180module_init(ip_nat_ftp_init);
181module_exit(fini); 181module_exit(ip_nat_ftp_fini);
diff --git a/net/ipv4/netfilter/ip_nat_helper_pptp.c b/net/ipv4/netfilter/ip_nat_helper_pptp.c
index b9c016c063b8..f3977726ff09 100644
--- a/net/ipv4/netfilter/ip_nat_helper_pptp.c
+++ b/net/ipv4/netfilter/ip_nat_helper_pptp.c
@@ -370,7 +370,7 @@ pptp_inbound_pkt(struct sk_buff **pskb,
370extern int __init ip_nat_proto_gre_init(void); 370extern int __init ip_nat_proto_gre_init(void);
371extern void __exit ip_nat_proto_gre_fini(void); 371extern void __exit ip_nat_proto_gre_fini(void);
372 372
373static int __init init(void) 373static int __init ip_nat_helper_pptp_init(void)
374{ 374{
375 int ret; 375 int ret;
376 376
@@ -396,7 +396,7 @@ static int __init init(void)
396 return 0; 396 return 0;
397} 397}
398 398
399static void __exit fini(void) 399static void __exit ip_nat_helper_pptp_fini(void)
400{ 400{
401 DEBUGP("cleanup_module\n" ); 401 DEBUGP("cleanup_module\n" );
402 402
@@ -412,5 +412,5 @@ static void __exit fini(void)
412 printk("ip_nat_pptp version %s unloaded\n", IP_NAT_PPTP_VERSION); 412 printk("ip_nat_pptp version %s unloaded\n", IP_NAT_PPTP_VERSION);
413} 413}
414 414
415module_init(init); 415module_init(ip_nat_helper_pptp_init);
416module_exit(fini); 416module_exit(ip_nat_helper_pptp_fini);
diff --git a/net/ipv4/netfilter/ip_nat_irc.c b/net/ipv4/netfilter/ip_nat_irc.c
index 461c833eaca1..a767123e082c 100644
--- a/net/ipv4/netfilter/ip_nat_irc.c
+++ b/net/ipv4/netfilter/ip_nat_irc.c
@@ -96,14 +96,14 @@ static unsigned int help(struct sk_buff **pskb,
96 return ret; 96 return ret;
97} 97}
98 98
99static void __exit fini(void) 99static void __exit ip_nat_irc_fini(void)
100{ 100{
101 ip_nat_irc_hook = NULL; 101 ip_nat_irc_hook = NULL;
102 /* Make sure noone calls it, meanwhile. */ 102 /* Make sure noone calls it, meanwhile. */
103 synchronize_net(); 103 synchronize_net();
104} 104}
105 105
106static int __init init(void) 106static int __init ip_nat_irc_init(void)
107{ 107{
108 BUG_ON(ip_nat_irc_hook); 108 BUG_ON(ip_nat_irc_hook);
109 ip_nat_irc_hook = help; 109 ip_nat_irc_hook = help;
@@ -119,5 +119,5 @@ static int warn_set(const char *val, struct kernel_param *kp)
119} 119}
120module_param_call(ports, warn_set, NULL, NULL, 0); 120module_param_call(ports, warn_set, NULL, NULL, 0);
121 121
122module_init(init); 122module_init(ip_nat_irc_init);
123module_exit(fini); 123module_exit(ip_nat_irc_fini);
diff --git a/net/ipv4/netfilter/ip_nat_snmp_basic.c b/net/ipv4/netfilter/ip_nat_snmp_basic.c
index f029da2a60ee..c62253845538 100644
--- a/net/ipv4/netfilter/ip_nat_snmp_basic.c
+++ b/net/ipv4/netfilter/ip_nat_snmp_basic.c
@@ -1324,7 +1324,7 @@ static struct ip_conntrack_helper snmp_trap_helper = {
1324 * 1324 *
1325 *****************************************************************************/ 1325 *****************************************************************************/
1326 1326
1327static int __init init(void) 1327static int __init ip_nat_snmp_basic_init(void)
1328{ 1328{
1329 int ret = 0; 1329 int ret = 0;
1330 1330
@@ -1339,13 +1339,13 @@ static int __init init(void)
1339 return ret; 1339 return ret;
1340} 1340}
1341 1341
1342static void __exit fini(void) 1342static void __exit ip_nat_snmp_basic_fini(void)
1343{ 1343{
1344 ip_conntrack_helper_unregister(&snmp_helper); 1344 ip_conntrack_helper_unregister(&snmp_helper);
1345 ip_conntrack_helper_unregister(&snmp_trap_helper); 1345 ip_conntrack_helper_unregister(&snmp_trap_helper);
1346} 1346}
1347 1347
1348module_init(init); 1348module_init(ip_nat_snmp_basic_init);
1349module_exit(fini); 1349module_exit(ip_nat_snmp_basic_fini);
1350 1350
1351module_param(debug, bool, 0600); 1351module_param(debug, bool, 0600);
diff --git a/net/ipv4/netfilter/ip_nat_standalone.c b/net/ipv4/netfilter/ip_nat_standalone.c
index 380aef3d7865..3505b0de2e04 100644
--- a/net/ipv4/netfilter/ip_nat_standalone.c
+++ b/net/ipv4/netfilter/ip_nat_standalone.c
@@ -425,17 +425,17 @@ static int init_or_cleanup(int init)
425 return ret; 425 return ret;
426} 426}
427 427
428static int __init init(void) 428static int __init ip_nat_standalone_init(void)
429{ 429{
430 return init_or_cleanup(1); 430 return init_or_cleanup(1);
431} 431}
432 432
433static void __exit fini(void) 433static void __exit ip_nat_standalone_fini(void)
434{ 434{
435 init_or_cleanup(0); 435 init_or_cleanup(0);
436} 436}
437 437
438module_init(init); 438module_init(ip_nat_standalone_init);
439module_exit(fini); 439module_exit(ip_nat_standalone_fini);
440 440
441MODULE_LICENSE("GPL"); 441MODULE_LICENSE("GPL");
diff --git a/net/ipv4/netfilter/ip_nat_tftp.c b/net/ipv4/netfilter/ip_nat_tftp.c
index 43c3bd7c118e..94a78015451c 100644
--- a/net/ipv4/netfilter/ip_nat_tftp.c
+++ b/net/ipv4/netfilter/ip_nat_tftp.c
@@ -53,19 +53,19 @@ static unsigned int help(struct sk_buff **pskb,
53 return NF_ACCEPT; 53 return NF_ACCEPT;
54} 54}
55 55
56static void __exit fini(void) 56static void __exit ip_nat_tftp_fini(void)
57{ 57{
58 ip_nat_tftp_hook = NULL; 58 ip_nat_tftp_hook = NULL;
59 /* Make sure noone calls it, meanwhile. */ 59 /* Make sure noone calls it, meanwhile. */
60 synchronize_net(); 60 synchronize_net();
61} 61}
62 62
63static int __init init(void) 63static int __init ip_nat_tftp_init(void)
64{ 64{
65 BUG_ON(ip_nat_tftp_hook); 65 BUG_ON(ip_nat_tftp_hook);
66 ip_nat_tftp_hook = help; 66 ip_nat_tftp_hook = help;
67 return 0; 67 return 0;
68} 68}
69 69
70module_init(init); 70module_init(ip_nat_tftp_init);
71module_exit(fini); 71module_exit(ip_nat_tftp_fini);
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c
index 1655866c55b9..896a244f8f91 100644
--- a/net/ipv4/netfilter/ip_queue.c
+++ b/net/ipv4/netfilter/ip_queue.c
@@ -717,13 +717,13 @@ cleanup_netlink_notifier:
717 return status; 717 return status;
718} 718}
719 719
720static int __init init(void) 720static int __init ip_queue_init(void)
721{ 721{
722 722
723 return init_or_cleanup(1); 723 return init_or_cleanup(1);
724} 724}
725 725
726static void __exit fini(void) 726static void __exit ip_queue_fini(void)
727{ 727{
728 init_or_cleanup(0); 728 init_or_cleanup(0);
729} 729}
@@ -732,5 +732,5 @@ MODULE_DESCRIPTION("IPv4 packet queue handler");
732MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>"); 732MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>");
733MODULE_LICENSE("GPL"); 733MODULE_LICENSE("GPL");
734 734
735module_init(init); 735module_init(ip_queue_init);
736module_exit(fini); 736module_exit(ip_queue_fini);
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index a7b194c4d79d..460fd905fad0 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1364,7 +1364,7 @@ static struct ipt_match icmp_matchstruct = {
1364 .checkentry = icmp_checkentry, 1364 .checkentry = icmp_checkentry,
1365}; 1365};
1366 1366
1367static int __init init(void) 1367static int __init ip_tables_init(void)
1368{ 1368{
1369 int ret; 1369 int ret;
1370 1370
@@ -1386,7 +1386,7 @@ static int __init init(void)
1386 return 0; 1386 return 0;
1387} 1387}
1388 1388
1389static void __exit fini(void) 1389static void __exit ip_tables_fini(void)
1390{ 1390{
1391 nf_unregister_sockopt(&ipt_sockopts); 1391 nf_unregister_sockopt(&ipt_sockopts);
1392 1392
@@ -1400,5 +1400,5 @@ static void __exit fini(void)
1400EXPORT_SYMBOL(ipt_register_table); 1400EXPORT_SYMBOL(ipt_register_table);
1401EXPORT_SYMBOL(ipt_unregister_table); 1401EXPORT_SYMBOL(ipt_unregister_table);
1402EXPORT_SYMBOL(ipt_do_table); 1402EXPORT_SYMBOL(ipt_do_table);
1403module_init(init); 1403module_init(ip_tables_init);
1404module_exit(fini); 1404module_exit(ip_tables_fini);
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
index 61e11edcd6af..e4768a31718b 100644
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
@@ -770,15 +770,15 @@ cleanup_none:
770 return -EINVAL; 770 return -EINVAL;
771} 771}
772 772
773static int __init init(void) 773static int __init ipt_clusterip_init(void)
774{ 774{
775 return init_or_cleanup(0); 775 return init_or_cleanup(0);
776} 776}
777 777
778static void __exit fini(void) 778static void __exit ipt_clusterip_fini(void)
779{ 779{
780 init_or_cleanup(1); 780 init_or_cleanup(1);
781} 781}
782 782
783module_init(init); 783module_init(ipt_clusterip_init);
784module_exit(fini); 784module_exit(ipt_clusterip_fini);
diff --git a/net/ipv4/netfilter/ipt_DSCP.c b/net/ipv4/netfilter/ipt_DSCP.c
index cfb0b90e598a..c8e971288dfe 100644
--- a/net/ipv4/netfilter/ipt_DSCP.c
+++ b/net/ipv4/netfilter/ipt_DSCP.c
@@ -82,15 +82,15 @@ static struct ipt_target ipt_dscp_reg = {
82 .me = THIS_MODULE, 82 .me = THIS_MODULE,
83}; 83};
84 84
85static int __init init(void) 85static int __init ipt_dscp_init(void)
86{ 86{
87 return ipt_register_target(&ipt_dscp_reg); 87 return ipt_register_target(&ipt_dscp_reg);
88} 88}
89 89
90static void __exit fini(void) 90static void __exit ipt_dscp_fini(void)
91{ 91{
92 ipt_unregister_target(&ipt_dscp_reg); 92 ipt_unregister_target(&ipt_dscp_reg);
93} 93}
94 94
95module_init(init); 95module_init(ipt_dscp_init);
96module_exit(fini); 96module_exit(ipt_dscp_fini);
diff --git a/net/ipv4/netfilter/ipt_ECN.c b/net/ipv4/netfilter/ipt_ECN.c
index b9b80f90c84e..4adf5c9d34f5 100644
--- a/net/ipv4/netfilter/ipt_ECN.c
+++ b/net/ipv4/netfilter/ipt_ECN.c
@@ -151,15 +151,15 @@ static struct ipt_target ipt_ecn_reg = {
151 .me = THIS_MODULE, 151 .me = THIS_MODULE,
152}; 152};
153 153
154static int __init init(void) 154static int __init ipt_ecn_init(void)
155{ 155{
156 return ipt_register_target(&ipt_ecn_reg); 156 return ipt_register_target(&ipt_ecn_reg);
157} 157}
158 158
159static void __exit fini(void) 159static void __exit ipt_ecn_fini(void)
160{ 160{
161 ipt_unregister_target(&ipt_ecn_reg); 161 ipt_unregister_target(&ipt_ecn_reg);
162} 162}
163 163
164module_init(init); 164module_init(ipt_ecn_init);
165module_exit(fini); 165module_exit(ipt_ecn_fini);
diff --git a/net/ipv4/netfilter/ipt_LOG.c b/net/ipv4/netfilter/ipt_LOG.c
index 750d3221b280..39fd4c2a2386 100644
--- a/net/ipv4/netfilter/ipt_LOG.c
+++ b/net/ipv4/netfilter/ipt_LOG.c
@@ -471,7 +471,7 @@ static struct nf_logger ipt_log_logger ={
471 .me = THIS_MODULE, 471 .me = THIS_MODULE,
472}; 472};
473 473
474static int __init init(void) 474static int __init ipt_log_init(void)
475{ 475{
476 if (ipt_register_target(&ipt_log_reg)) 476 if (ipt_register_target(&ipt_log_reg))
477 return -EINVAL; 477 return -EINVAL;
@@ -485,11 +485,11 @@ static int __init init(void)
485 return 0; 485 return 0;
486} 486}
487 487
488static void __exit fini(void) 488static void __exit ipt_log_fini(void)
489{ 489{
490 nf_log_unregister_logger(&ipt_log_logger); 490 nf_log_unregister_logger(&ipt_log_logger);
491 ipt_unregister_target(&ipt_log_reg); 491 ipt_unregister_target(&ipt_log_reg);
492} 492}
493 493
494module_init(init); 494module_init(ipt_log_init);
495module_exit(fini); 495module_exit(ipt_log_fini);
diff --git a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c
index e0c321c3bae5..8b3e7f99b861 100644
--- a/net/ipv4/netfilter/ipt_MASQUERADE.c
+++ b/net/ipv4/netfilter/ipt_MASQUERADE.c
@@ -175,7 +175,7 @@ static struct ipt_target masquerade = {
175 .me = THIS_MODULE, 175 .me = THIS_MODULE,
176}; 176};
177 177
178static int __init init(void) 178static int __init ipt_masquerade_init(void)
179{ 179{
180 int ret; 180 int ret;
181 181
@@ -191,12 +191,12 @@ static int __init init(void)
191 return ret; 191 return ret;
192} 192}
193 193
194static void __exit fini(void) 194static void __exit ipt_masquerade_fini(void)
195{ 195{
196 ipt_unregister_target(&masquerade); 196 ipt_unregister_target(&masquerade);
197 unregister_netdevice_notifier(&masq_dev_notifier); 197 unregister_netdevice_notifier(&masq_dev_notifier);
198 unregister_inetaddr_notifier(&masq_inet_notifier); 198 unregister_inetaddr_notifier(&masq_inet_notifier);
199} 199}
200 200
201module_init(init); 201module_init(ipt_masquerade_init);
202module_exit(fini); 202module_exit(ipt_masquerade_fini);
diff --git a/net/ipv4/netfilter/ipt_NETMAP.c b/net/ipv4/netfilter/ipt_NETMAP.c
index fba181c2a426..2fcf1075b027 100644
--- a/net/ipv4/netfilter/ipt_NETMAP.c
+++ b/net/ipv4/netfilter/ipt_NETMAP.c
@@ -98,15 +98,15 @@ static struct ipt_target target_module = {
98 .me = THIS_MODULE 98 .me = THIS_MODULE
99}; 99};
100 100
101static int __init init(void) 101static int __init ipt_netmap_init(void)
102{ 102{
103 return ipt_register_target(&target_module); 103 return ipt_register_target(&target_module);
104} 104}
105 105
106static void __exit fini(void) 106static void __exit ipt_netmap_fini(void)
107{ 107{
108 ipt_unregister_target(&target_module); 108 ipt_unregister_target(&target_module);
109} 109}
110 110
111module_init(init); 111module_init(ipt_netmap_init);
112module_exit(fini); 112module_exit(ipt_netmap_fini);
diff --git a/net/ipv4/netfilter/ipt_REDIRECT.c b/net/ipv4/netfilter/ipt_REDIRECT.c
index be3da7c4b871..f290463232de 100644
--- a/net/ipv4/netfilter/ipt_REDIRECT.c
+++ b/net/ipv4/netfilter/ipt_REDIRECT.c
@@ -112,15 +112,15 @@ static struct ipt_target redirect_reg = {
112 .me = THIS_MODULE, 112 .me = THIS_MODULE,
113}; 113};
114 114
115static int __init init(void) 115static int __init ipt_redirect_init(void)
116{ 116{
117 return ipt_register_target(&redirect_reg); 117 return ipt_register_target(&redirect_reg);
118} 118}
119 119
120static void __exit fini(void) 120static void __exit ipt_redirect_fini(void)
121{ 121{
122 ipt_unregister_target(&redirect_reg); 122 ipt_unregister_target(&redirect_reg);
123} 123}
124 124
125module_init(init); 125module_init(ipt_redirect_init);
126module_exit(fini); 126module_exit(ipt_redirect_fini);
diff --git a/net/ipv4/netfilter/ipt_REJECT.c b/net/ipv4/netfilter/ipt_REJECT.c
index 9d3b3579f27c..4269a5440d43 100644
--- a/net/ipv4/netfilter/ipt_REJECT.c
+++ b/net/ipv4/netfilter/ipt_REJECT.c
@@ -313,15 +313,15 @@ static struct ipt_target ipt_reject_reg = {
313 .me = THIS_MODULE, 313 .me = THIS_MODULE,
314}; 314};
315 315
316static int __init init(void) 316static int __init ipt_reject_init(void)
317{ 317{
318 return ipt_register_target(&ipt_reject_reg); 318 return ipt_register_target(&ipt_reject_reg);
319} 319}
320 320
321static void __exit fini(void) 321static void __exit ipt_reject_fini(void)
322{ 322{
323 ipt_unregister_target(&ipt_reject_reg); 323 ipt_unregister_target(&ipt_reject_reg);
324} 324}
325 325
326module_init(init); 326module_init(ipt_reject_init);
327module_exit(fini); 327module_exit(ipt_reject_fini);
diff --git a/net/ipv4/netfilter/ipt_SAME.c b/net/ipv4/netfilter/ipt_SAME.c
index 7e2ebc9d945e..7169b09b5a67 100644
--- a/net/ipv4/netfilter/ipt_SAME.c
+++ b/net/ipv4/netfilter/ipt_SAME.c
@@ -189,16 +189,16 @@ static struct ipt_target same_reg = {
189 .me = THIS_MODULE, 189 .me = THIS_MODULE,
190}; 190};
191 191
192static int __init init(void) 192static int __init ipt_same_init(void)
193{ 193{
194 return ipt_register_target(&same_reg); 194 return ipt_register_target(&same_reg);
195} 195}
196 196
197static void __exit fini(void) 197static void __exit ipt_same_fini(void)
198{ 198{
199 ipt_unregister_target(&same_reg); 199 ipt_unregister_target(&same_reg);
200} 200}
201 201
202module_init(init); 202module_init(ipt_same_init);
203module_exit(fini); 203module_exit(ipt_same_fini);
204 204
diff --git a/net/ipv4/netfilter/ipt_TCPMSS.c b/net/ipv4/netfilter/ipt_TCPMSS.c
index c4fc50ec2ddb..ef2fe5b3f0d8 100644
--- a/net/ipv4/netfilter/ipt_TCPMSS.c
+++ b/net/ipv4/netfilter/ipt_TCPMSS.c
@@ -243,15 +243,15 @@ static struct ipt_target ipt_tcpmss_reg = {
243 .me = THIS_MODULE, 243 .me = THIS_MODULE,
244}; 244};
245 245
246static int __init init(void) 246static int __init ipt_tcpmss_init(void)
247{ 247{
248 return ipt_register_target(&ipt_tcpmss_reg); 248 return ipt_register_target(&ipt_tcpmss_reg);
249} 249}
250 250
251static void __exit fini(void) 251static void __exit ipt_tcpmss_fini(void)
252{ 252{
253 ipt_unregister_target(&ipt_tcpmss_reg); 253 ipt_unregister_target(&ipt_tcpmss_reg);
254} 254}
255 255
256module_init(init); 256module_init(ipt_tcpmss_init);
257module_exit(fini); 257module_exit(ipt_tcpmss_fini);
diff --git a/net/ipv4/netfilter/ipt_TOS.c b/net/ipv4/netfilter/ipt_TOS.c
index 9aa7817657f0..1c7a5ca399b3 100644
--- a/net/ipv4/netfilter/ipt_TOS.c
+++ b/net/ipv4/netfilter/ipt_TOS.c
@@ -81,15 +81,15 @@ static struct ipt_target ipt_tos_reg = {
81 .me = THIS_MODULE, 81 .me = THIS_MODULE,
82}; 82};
83 83
84static int __init init(void) 84static int __init ipt_tos_init(void)
85{ 85{
86 return ipt_register_target(&ipt_tos_reg); 86 return ipt_register_target(&ipt_tos_reg);
87} 87}
88 88
89static void __exit fini(void) 89static void __exit ipt_tos_fini(void)
90{ 90{
91 ipt_unregister_target(&ipt_tos_reg); 91 ipt_unregister_target(&ipt_tos_reg);
92} 92}
93 93
94module_init(init); 94module_init(ipt_tos_init);
95module_exit(fini); 95module_exit(ipt_tos_fini);
diff --git a/net/ipv4/netfilter/ipt_TTL.c b/net/ipv4/netfilter/ipt_TTL.c
index 5009a003d578..f48892ae0be5 100644
--- a/net/ipv4/netfilter/ipt_TTL.c
+++ b/net/ipv4/netfilter/ipt_TTL.c
@@ -94,15 +94,15 @@ static struct ipt_target ipt_TTL = {
94 .me = THIS_MODULE, 94 .me = THIS_MODULE,
95}; 95};
96 96
97static int __init init(void) 97static int __init ipt_ttl_init(void)
98{ 98{
99 return ipt_register_target(&ipt_TTL); 99 return ipt_register_target(&ipt_TTL);
100} 100}
101 101
102static void __exit fini(void) 102static void __exit ipt_ttl_fini(void)
103{ 103{
104 ipt_unregister_target(&ipt_TTL); 104 ipt_unregister_target(&ipt_TTL);
105} 105}
106 106
107module_init(init); 107module_init(ipt_ttl_init);
108module_exit(fini); 108module_exit(ipt_ttl_fini);
diff --git a/net/ipv4/netfilter/ipt_ULOG.c b/net/ipv4/netfilter/ipt_ULOG.c
index a82a32ed0e2f..c84cc03389d8 100644
--- a/net/ipv4/netfilter/ipt_ULOG.c
+++ b/net/ipv4/netfilter/ipt_ULOG.c
@@ -374,7 +374,7 @@ static struct nf_logger ipt_ulog_logger = {
374 .me = THIS_MODULE, 374 .me = THIS_MODULE,
375}; 375};
376 376
377static int __init init(void) 377static int __init ipt_ulog_init(void)
378{ 378{
379 int i; 379 int i;
380 380
@@ -407,7 +407,7 @@ static int __init init(void)
407 return 0; 407 return 0;
408} 408}
409 409
410static void __exit fini(void) 410static void __exit ipt_ulog_fini(void)
411{ 411{
412 ulog_buff_t *ub; 412 ulog_buff_t *ub;
413 int i; 413 int i;
@@ -435,5 +435,5 @@ static void __exit fini(void)
435 435
436} 436}
437 437
438module_init(init); 438module_init(ipt_ulog_init);
439module_exit(fini); 439module_exit(ipt_ulog_fini);
diff --git a/net/ipv4/netfilter/ipt_addrtype.c b/net/ipv4/netfilter/ipt_addrtype.c
index 5fdf85d0efcf..893dae210b04 100644
--- a/net/ipv4/netfilter/ipt_addrtype.c
+++ b/net/ipv4/netfilter/ipt_addrtype.c
@@ -51,15 +51,15 @@ static struct ipt_match addrtype_match = {
51 .me = THIS_MODULE 51 .me = THIS_MODULE
52}; 52};
53 53
54static int __init init(void) 54static int __init ipt_addrtype_init(void)
55{ 55{
56 return ipt_register_match(&addrtype_match); 56 return ipt_register_match(&addrtype_match);
57} 57}
58 58
59static void __exit fini(void) 59static void __exit ipt_addrtype_fini(void)
60{ 60{
61 ipt_unregister_match(&addrtype_match); 61 ipt_unregister_match(&addrtype_match);
62} 62}
63 63
64module_init(init); 64module_init(ipt_addrtype_init);
65module_exit(fini); 65module_exit(ipt_addrtype_fini);
diff --git a/net/ipv4/netfilter/ipt_ah.c b/net/ipv4/netfilter/ipt_ah.c
index 35a21fb1f8e0..2927135873d7 100644
--- a/net/ipv4/netfilter/ipt_ah.c
+++ b/net/ipv4/netfilter/ipt_ah.c
@@ -96,15 +96,15 @@ static struct ipt_match ah_match = {
96 .me = THIS_MODULE, 96 .me = THIS_MODULE,
97}; 97};
98 98
99static int __init init(void) 99static int __init ipt_ah_init(void)
100{ 100{
101 return ipt_register_match(&ah_match); 101 return ipt_register_match(&ah_match);
102} 102}
103 103
104static void __exit cleanup(void) 104static void __exit ipt_ah_fini(void)
105{ 105{
106 ipt_unregister_match(&ah_match); 106 ipt_unregister_match(&ah_match);
107} 107}
108 108
109module_init(init); 109module_init(ipt_ah_init);
110module_exit(cleanup); 110module_exit(ipt_ah_fini);
diff --git a/net/ipv4/netfilter/ipt_dscp.c b/net/ipv4/netfilter/ipt_dscp.c
index 11963c385dea..47177591aeb6 100644
--- a/net/ipv4/netfilter/ipt_dscp.c
+++ b/net/ipv4/netfilter/ipt_dscp.c
@@ -39,16 +39,16 @@ static struct ipt_match dscp_match = {
39 .me = THIS_MODULE, 39 .me = THIS_MODULE,
40}; 40};
41 41
42static int __init init(void) 42static int __init ipt_dscp_init(void)
43{ 43{
44 return ipt_register_match(&dscp_match); 44 return ipt_register_match(&dscp_match);
45} 45}
46 46
47static void __exit fini(void) 47static void __exit ipt_dscp_fini(void)
48{ 48{
49 ipt_unregister_match(&dscp_match); 49 ipt_unregister_match(&dscp_match);
50 50
51} 51}
52 52
53module_init(init); 53module_init(ipt_dscp_init);
54module_exit(fini); 54module_exit(ipt_dscp_fini);
diff --git a/net/ipv4/netfilter/ipt_ecn.c b/net/ipv4/netfilter/ipt_ecn.c
index d7e29f6a38d8..b28250414933 100644
--- a/net/ipv4/netfilter/ipt_ecn.c
+++ b/net/ipv4/netfilter/ipt_ecn.c
@@ -118,15 +118,15 @@ static struct ipt_match ecn_match = {
118 .me = THIS_MODULE, 118 .me = THIS_MODULE,
119}; 119};
120 120
121static int __init init(void) 121static int __init ipt_ecn_init(void)
122{ 122{
123 return ipt_register_match(&ecn_match); 123 return ipt_register_match(&ecn_match);
124} 124}
125 125
126static void __exit fini(void) 126static void __exit ipt_ecn_fini(void)
127{ 127{
128 ipt_unregister_match(&ecn_match); 128 ipt_unregister_match(&ecn_match);
129} 129}
130 130
131module_init(init); 131module_init(ipt_ecn_init);
132module_exit(fini); 132module_exit(ipt_ecn_fini);
diff --git a/net/ipv4/netfilter/ipt_esp.c b/net/ipv4/netfilter/ipt_esp.c
index af0d5ec79cb5..3840b417a3c5 100644
--- a/net/ipv4/netfilter/ipt_esp.c
+++ b/net/ipv4/netfilter/ipt_esp.c
@@ -97,15 +97,15 @@ static struct ipt_match esp_match = {
97 .me = THIS_MODULE, 97 .me = THIS_MODULE,
98}; 98};
99 99
100static int __init init(void) 100static int __init ipt_esp_init(void)
101{ 101{
102 return ipt_register_match(&esp_match); 102 return ipt_register_match(&esp_match);
103} 103}
104 104
105static void __exit cleanup(void) 105static void __exit ipt_esp_fini(void)
106{ 106{
107 ipt_unregister_match(&esp_match); 107 ipt_unregister_match(&esp_match);
108} 108}
109 109
110module_init(init); 110module_init(ipt_esp_init);
111module_exit(cleanup); 111module_exit(ipt_esp_fini);
diff --git a/net/ipv4/netfilter/ipt_hashlimit.c b/net/ipv4/netfilter/ipt_hashlimit.c
index ba5e23505e88..7c6836c4646e 100644
--- a/net/ipv4/netfilter/ipt_hashlimit.c
+++ b/net/ipv4/netfilter/ipt_hashlimit.c
@@ -719,15 +719,15 @@ cleanup_nothing:
719 719
720} 720}
721 721
722static int __init init(void) 722static int __init ipt_hashlimit_init(void)
723{ 723{
724 return init_or_fini(0); 724 return init_or_fini(0);
725} 725}
726 726
727static void __exit fini(void) 727static void __exit ipt_hashlimit_fini(void)
728{ 728{
729 init_or_fini(1); 729 init_or_fini(1);
730} 730}
731 731
732module_init(init); 732module_init(ipt_hashlimit_init);
733module_exit(fini); 733module_exit(ipt_hashlimit_fini);
diff --git a/net/ipv4/netfilter/ipt_iprange.c b/net/ipv4/netfilter/ipt_iprange.c
index ae70112f5e06..5202edd8d333 100644
--- a/net/ipv4/netfilter/ipt_iprange.c
+++ b/net/ipv4/netfilter/ipt_iprange.c
@@ -71,15 +71,15 @@ static struct ipt_match iprange_match = {
71 .me = THIS_MODULE 71 .me = THIS_MODULE
72}; 72};
73 73
74static int __init init(void) 74static int __init ipt_iprange_init(void)
75{ 75{
76 return ipt_register_match(&iprange_match); 76 return ipt_register_match(&iprange_match);
77} 77}
78 78
79static void __exit fini(void) 79static void __exit ipt_iprange_fini(void)
80{ 80{
81 ipt_unregister_match(&iprange_match); 81 ipt_unregister_match(&iprange_match);
82} 82}
83 83
84module_init(init); 84module_init(ipt_iprange_init);
85module_exit(fini); 85module_exit(ipt_iprange_fini);
diff --git a/net/ipv4/netfilter/ipt_multiport.c b/net/ipv4/netfilter/ipt_multiport.c
index bd07f7c53872..ac95d8390bcc 100644
--- a/net/ipv4/netfilter/ipt_multiport.c
+++ b/net/ipv4/netfilter/ipt_multiport.c
@@ -171,7 +171,7 @@ static struct ipt_match multiport_match_v1 = {
171 .me = THIS_MODULE, 171 .me = THIS_MODULE,
172}; 172};
173 173
174static int __init init(void) 174static int __init ipt_multiport_init(void)
175{ 175{
176 int err; 176 int err;
177 177
@@ -185,11 +185,11 @@ static int __init init(void)
185 return err; 185 return err;
186} 186}
187 187
188static void __exit fini(void) 188static void __exit ipt_multiport_fini(void)
189{ 189{
190 ipt_unregister_match(&multiport_match); 190 ipt_unregister_match(&multiport_match);
191 ipt_unregister_match(&multiport_match_v1); 191 ipt_unregister_match(&multiport_match_v1);
192} 192}
193 193
194module_init(init); 194module_init(ipt_multiport_init);
195module_exit(fini); 195module_exit(ipt_multiport_fini);
diff --git a/net/ipv4/netfilter/ipt_owner.c b/net/ipv4/netfilter/ipt_owner.c
index 3900428771f3..5ac6ac023b5e 100644
--- a/net/ipv4/netfilter/ipt_owner.c
+++ b/net/ipv4/netfilter/ipt_owner.c
@@ -78,15 +78,15 @@ static struct ipt_match owner_match = {
78 .me = THIS_MODULE, 78 .me = THIS_MODULE,
79}; 79};
80 80
81static int __init init(void) 81static int __init ipt_owner_init(void)
82{ 82{
83 return ipt_register_match(&owner_match); 83 return ipt_register_match(&owner_match);
84} 84}
85 85
86static void __exit fini(void) 86static void __exit ipt_owner_fini(void)
87{ 87{
88 ipt_unregister_match(&owner_match); 88 ipt_unregister_match(&owner_match);
89} 89}
90 90
91module_init(init); 91module_init(ipt_owner_init);
92module_exit(fini); 92module_exit(ipt_owner_fini);
diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c
index 06792ead1da4..143843285702 100644
--- a/net/ipv4/netfilter/ipt_recent.c
+++ b/net/ipv4/netfilter/ipt_recent.c
@@ -962,7 +962,7 @@ static struct ipt_match recent_match = {
962}; 962};
963 963
964/* Kernel module initialization. */ 964/* Kernel module initialization. */
965static int __init init(void) 965static int __init ipt_recent_init(void)
966{ 966{
967 int err, count; 967 int err, count;
968 968
@@ -995,7 +995,7 @@ static int __init init(void)
995} 995}
996 996
997/* Kernel module destruction. */ 997/* Kernel module destruction. */
998static void __exit fini(void) 998static void __exit ipt_recent_fini(void)
999{ 999{
1000 ipt_unregister_match(&recent_match); 1000 ipt_unregister_match(&recent_match);
1001 1001
@@ -1003,5 +1003,5 @@ static void __exit fini(void)
1003} 1003}
1004 1004
1005/* Register our module with the kernel. */ 1005/* Register our module with the kernel. */
1006module_init(init); 1006module_init(ipt_recent_init);
1007module_exit(fini); 1007module_exit(ipt_recent_fini);
diff --git a/net/ipv4/netfilter/ipt_tos.c b/net/ipv4/netfilter/ipt_tos.c
index e404e92ddd01..5549c39c7851 100644
--- a/net/ipv4/netfilter/ipt_tos.c
+++ b/net/ipv4/netfilter/ipt_tos.c
@@ -39,15 +39,15 @@ static struct ipt_match tos_match = {
39 .me = THIS_MODULE, 39 .me = THIS_MODULE,
40}; 40};
41 41
42static int __init init(void) 42static int __init ipt_multiport_init(void)
43{ 43{
44 return ipt_register_match(&tos_match); 44 return ipt_register_match(&tos_match);
45} 45}
46 46
47static void __exit fini(void) 47static void __exit ipt_multiport_fini(void)
48{ 48{
49 ipt_unregister_match(&tos_match); 49 ipt_unregister_match(&tos_match);
50} 50}
51 51
52module_init(init); 52module_init(ipt_multiport_init);
53module_exit(fini); 53module_exit(ipt_multiport_fini);
diff --git a/net/ipv4/netfilter/ipt_ttl.c b/net/ipv4/netfilter/ipt_ttl.c
index ae7ce4d8d90e..a5243bdb87d7 100644
--- a/net/ipv4/netfilter/ipt_ttl.c
+++ b/net/ipv4/netfilter/ipt_ttl.c
@@ -55,16 +55,16 @@ static struct ipt_match ttl_match = {
55 .me = THIS_MODULE, 55 .me = THIS_MODULE,
56}; 56};
57 57
58static int __init init(void) 58static int __init ipt_ttl_init(void)
59{ 59{
60 return ipt_register_match(&ttl_match); 60 return ipt_register_match(&ttl_match);
61} 61}
62 62
63static void __exit fini(void) 63static void __exit ipt_ttl_fini(void)
64{ 64{
65 ipt_unregister_match(&ttl_match); 65 ipt_unregister_match(&ttl_match);
66 66
67} 67}
68 68
69module_init(init); 69module_init(ipt_ttl_init);
70module_exit(fini); 70module_exit(ipt_ttl_fini);
diff --git a/net/ipv4/netfilter/iptable_filter.c b/net/ipv4/netfilter/iptable_filter.c
index 212a3079085b..3d80aefe9cfa 100644
--- a/net/ipv4/netfilter/iptable_filter.c
+++ b/net/ipv4/netfilter/iptable_filter.c
@@ -139,7 +139,7 @@ static struct nf_hook_ops ipt_ops[] = {
139static int forward = NF_ACCEPT; 139static int forward = NF_ACCEPT;
140module_param(forward, bool, 0000); 140module_param(forward, bool, 0000);
141 141
142static int __init init(void) 142static int __init iptable_filter_init(void)
143{ 143{
144 int ret; 144 int ret;
145 145
@@ -181,7 +181,7 @@ static int __init init(void)
181 return ret; 181 return ret;
182} 182}
183 183
184static void __exit fini(void) 184static void __exit iptable_filter_fini(void)
185{ 185{
186 unsigned int i; 186 unsigned int i;
187 187
@@ -191,5 +191,5 @@ static void __exit fini(void)
191 ipt_unregister_table(&packet_filter); 191 ipt_unregister_table(&packet_filter);
192} 192}
193 193
194module_init(init); 194module_init(iptable_filter_init);
195module_exit(fini); 195module_exit(iptable_filter_fini);
diff --git a/net/ipv4/netfilter/iptable_mangle.c b/net/ipv4/netfilter/iptable_mangle.c
index 3212a5cc4b6b..412fc96cc896 100644
--- a/net/ipv4/netfilter/iptable_mangle.c
+++ b/net/ipv4/netfilter/iptable_mangle.c
@@ -201,7 +201,7 @@ static struct nf_hook_ops ipt_ops[] = {
201 }, 201 },
202}; 202};
203 203
204static int __init init(void) 204static int __init iptable_mangle_init(void)
205{ 205{
206 int ret; 206 int ret;
207 207
@@ -247,7 +247,7 @@ static int __init init(void)
247 return ret; 247 return ret;
248} 248}
249 249
250static void __exit fini(void) 250static void __exit iptable_mangle_fini(void)
251{ 251{
252 unsigned int i; 252 unsigned int i;
253 253
@@ -257,5 +257,5 @@ static void __exit fini(void)
257 ipt_unregister_table(&packet_mangler); 257 ipt_unregister_table(&packet_mangler);
258} 258}
259 259
260module_init(init); 260module_init(iptable_mangle_init);
261module_exit(fini); 261module_exit(iptable_mangle_fini);
diff --git a/net/ipv4/netfilter/iptable_raw.c b/net/ipv4/netfilter/iptable_raw.c
index fdb9e9c81e81..03cc79a6160a 100644
--- a/net/ipv4/netfilter/iptable_raw.c
+++ b/net/ipv4/netfilter/iptable_raw.c
@@ -116,7 +116,7 @@ static struct nf_hook_ops ipt_ops[] = {
116 }, 116 },
117}; 117};
118 118
119static int __init init(void) 119static int __init iptable_raw_init(void)
120{ 120{
121 int ret; 121 int ret;
122 122
@@ -144,7 +144,7 @@ static int __init init(void)
144 return ret; 144 return ret;
145} 145}
146 146
147static void __exit fini(void) 147static void __exit iptable_raw_fini(void)
148{ 148{
149 unsigned int i; 149 unsigned int i;
150 150
@@ -154,6 +154,6 @@ static void __exit fini(void)
154 ipt_unregister_table(&packet_raw); 154 ipt_unregister_table(&packet_raw);
155} 155}
156 156
157module_init(init); 157module_init(iptable_raw_init);
158module_exit(fini); 158module_exit(iptable_raw_fini);
159MODULE_LICENSE("GPL"); 159MODULE_LICENSE("GPL");
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
index c8abc9d859b9..4afbc699d3ba 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
@@ -571,18 +571,18 @@ static int init_or_cleanup(int init)
571MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET)); 571MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET));
572MODULE_LICENSE("GPL"); 572MODULE_LICENSE("GPL");
573 573
574static int __init init(void) 574static int __init nf_conntrack_l3proto_ipv4_init(void)
575{ 575{
576 need_conntrack(); 576 need_conntrack();
577 return init_or_cleanup(1); 577 return init_or_cleanup(1);
578} 578}
579 579
580static void __exit fini(void) 580static void __exit nf_conntrack_l3proto_ipv4_fini(void)
581{ 581{
582 init_or_cleanup(0); 582 init_or_cleanup(0);
583} 583}
584 584
585module_init(init); 585module_init(nf_conntrack_l3proto_ipv4_init);
586module_exit(fini); 586module_exit(nf_conntrack_l3proto_ipv4_fini);
587 587
588EXPORT_SYMBOL(nf_ct_ipv4_gather_frags); 588EXPORT_SYMBOL(nf_ct_ipv4_gather_frags);
diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index e688c687d62d..91c2f41c7f58 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -223,7 +223,7 @@ void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 rtt, u32 in_flight,
223 223
224 /* In dangerous area, increase slowly. */ 224 /* In dangerous area, increase slowly. */
225 else if (sysctl_tcp_abc) { 225 else if (sysctl_tcp_abc) {
226 /* RFC3465: Apppriate Byte Count 226 /* RFC3465: Appropriate Byte Count
227 * increase once for each full cwnd acked 227 * increase once for each full cwnd acked
228 */ 228 */
229 if (tp->bytes_acked >= tp->snd_cwnd*tp->mss_cache) { 229 if (tp->bytes_acked >= tp->snd_cwnd*tp->mss_cache) {
diff --git a/net/ipv4/tunnel4.c b/net/ipv4/tunnel4.c
new file mode 100644
index 000000000000..0d7d386dac22
--- /dev/null
+++ b/net/ipv4/tunnel4.c
@@ -0,0 +1,113 @@
1/* tunnel4.c: Generic IP tunnel transformer.
2 *
3 * Copyright (C) 2003 David S. Miller (davem@redhat.com)
4 */
5
6#include <linux/init.h>
7#include <linux/module.h>
8#include <linux/mutex.h>
9#include <linux/netdevice.h>
10#include <linux/skbuff.h>
11#include <net/protocol.h>
12#include <net/xfrm.h>
13
14static struct xfrm_tunnel *tunnel4_handlers;
15static DEFINE_MUTEX(tunnel4_mutex);
16
17int xfrm4_tunnel_register(struct xfrm_tunnel *handler)
18{
19 struct xfrm_tunnel **pprev;
20 int ret = -EEXIST;
21 int priority = handler->priority;
22
23 mutex_lock(&tunnel4_mutex);
24
25 for (pprev = &tunnel4_handlers; *pprev; pprev = &(*pprev)->next) {
26 if ((*pprev)->priority > priority)
27 break;
28 if ((*pprev)->priority == priority)
29 goto err;
30 }
31
32 handler->next = *pprev;
33 *pprev = handler;
34
35 ret = 0;
36
37err:
38 mutex_unlock(&tunnel4_mutex);
39
40 return ret;
41}
42
43EXPORT_SYMBOL(xfrm4_tunnel_register);
44
45int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler)
46{
47 struct xfrm_tunnel **pprev;
48 int ret = -ENOENT;
49
50 mutex_lock(&tunnel4_mutex);
51
52 for (pprev = &tunnel4_handlers; *pprev; pprev = &(*pprev)->next) {
53 if (*pprev == handler) {
54 *pprev = handler->next;
55 ret = 0;
56 break;
57 }
58 }
59
60 mutex_unlock(&tunnel4_mutex);
61
62 synchronize_net();
63
64 return ret;
65}
66
67EXPORT_SYMBOL(xfrm4_tunnel_deregister);
68
69static int tunnel4_rcv(struct sk_buff *skb)
70{
71 struct xfrm_tunnel *handler;
72
73 for (handler = tunnel4_handlers; handler; handler = handler->next)
74 if (!handler->handler(skb))
75 return 0;
76
77 kfree_skb(skb);
78 return 0;
79}
80
81static void tunnel4_err(struct sk_buff *skb, u32 info)
82{
83 struct xfrm_tunnel *handler;
84
85 for (handler = tunnel4_handlers; handler; handler = handler->next)
86 if (!handler->err_handler(skb, info))
87 break;
88}
89
90static struct net_protocol tunnel4_protocol = {
91 .handler = tunnel4_rcv,
92 .err_handler = tunnel4_err,
93 .no_policy = 1,
94};
95
96static int __init tunnel4_init(void)
97{
98 if (inet_add_protocol(&tunnel4_protocol, IPPROTO_IPIP)) {
99 printk(KERN_ERR "tunnel4 init: can't add protocol\n");
100 return -EAGAIN;
101 }
102 return 0;
103}
104
105static void __exit tunnel4_fini(void)
106{
107 if (inet_del_protocol(&tunnel4_protocol, IPPROTO_IPIP))
108 printk(KERN_ERR "tunnel4 close: can't remove protocol\n");
109}
110
111module_init(tunnel4_init);
112module_exit(tunnel4_fini);
113MODULE_LICENSE("GPL");
diff --git a/net/ipv4/xfrm4_tunnel.c b/net/ipv4/xfrm4_tunnel.c
index b08d56b117f8..2d670935c2b5 100644
--- a/net/ipv4/xfrm4_tunnel.c
+++ b/net/ipv4/xfrm4_tunnel.c
@@ -26,64 +26,6 @@ static int ipip_xfrm_rcv(struct xfrm_state *x, struct xfrm_decap_state *decap, s
26 return 0; 26 return 0;
27} 27}
28 28
29static struct xfrm_tunnel *ipip_handler;
30static DEFINE_MUTEX(xfrm4_tunnel_mutex);
31
32int xfrm4_tunnel_register(struct xfrm_tunnel *handler)
33{
34 int ret;
35
36 mutex_lock(&xfrm4_tunnel_mutex);
37 ret = 0;
38 if (ipip_handler != NULL)
39 ret = -EINVAL;
40 if (!ret)
41 ipip_handler = handler;
42 mutex_unlock(&xfrm4_tunnel_mutex);
43
44 return ret;
45}
46
47EXPORT_SYMBOL(xfrm4_tunnel_register);
48
49int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler)
50{
51 int ret;
52
53 mutex_lock(&xfrm4_tunnel_mutex);
54 ret = 0;
55 if (ipip_handler != handler)
56 ret = -EINVAL;
57 if (!ret)
58 ipip_handler = NULL;
59 mutex_unlock(&xfrm4_tunnel_mutex);
60
61 synchronize_net();
62
63 return ret;
64}
65
66EXPORT_SYMBOL(xfrm4_tunnel_deregister);
67
68static int ipip_rcv(struct sk_buff *skb)
69{
70 struct xfrm_tunnel *handler = ipip_handler;
71
72 /* Tunnel devices take precedence. */
73 if (handler && handler->handler(skb) == 0)
74 return 0;
75
76 return xfrm4_rcv(skb);
77}
78
79static void ipip_err(struct sk_buff *skb, u32 info)
80{
81 struct xfrm_tunnel *handler = ipip_handler;
82
83 if (handler)
84 handler->err_handler(skb, info);
85}
86
87static int ipip_init_state(struct xfrm_state *x) 29static int ipip_init_state(struct xfrm_state *x)
88{ 30{
89 if (!x->props.mode) 31 if (!x->props.mode)
@@ -111,10 +53,15 @@ static struct xfrm_type ipip_type = {
111 .output = ipip_output 53 .output = ipip_output
112}; 54};
113 55
114static struct net_protocol ipip_protocol = { 56static int xfrm_tunnel_err(struct sk_buff *skb, u32 info)
115 .handler = ipip_rcv, 57{
116 .err_handler = ipip_err, 58 return -ENOENT;
117 .no_policy = 1, 59}
60
61static struct xfrm_tunnel xfrm_tunnel_handler = {
62 .handler = xfrm4_rcv,
63 .err_handler = xfrm_tunnel_err,
64 .priority = 2,
118}; 65};
119 66
120static int __init ipip_init(void) 67static int __init ipip_init(void)
@@ -123,8 +70,8 @@ static int __init ipip_init(void)
123 printk(KERN_INFO "ipip init: can't add xfrm type\n"); 70 printk(KERN_INFO "ipip init: can't add xfrm type\n");
124 return -EAGAIN; 71 return -EAGAIN;
125 } 72 }
126 if (inet_add_protocol(&ipip_protocol, IPPROTO_IPIP) < 0) { 73 if (xfrm4_tunnel_register(&xfrm_tunnel_handler)) {
127 printk(KERN_INFO "ipip init: can't add protocol\n"); 74 printk(KERN_INFO "ipip init: can't add xfrm handler\n");
128 xfrm_unregister_type(&ipip_type, AF_INET); 75 xfrm_unregister_type(&ipip_type, AF_INET);
129 return -EAGAIN; 76 return -EAGAIN;
130 } 77 }
@@ -133,8 +80,8 @@ static int __init ipip_init(void)
133 80
134static void __exit ipip_fini(void) 81static void __exit ipip_fini(void)
135{ 82{
136 if (inet_del_protocol(&ipip_protocol, IPPROTO_IPIP) < 0) 83 if (xfrm4_tunnel_deregister(&xfrm_tunnel_handler))
137 printk(KERN_INFO "ipip close: can't remove protocol\n"); 84 printk(KERN_INFO "ipip close: can't remove xfrm handler\n");
138 if (xfrm_unregister_type(&ipip_type, AF_INET) < 0) 85 if (xfrm_unregister_type(&ipip_type, AF_INET) < 0)
139 printk(KERN_INFO "ipip close: can't remove xfrm type\n"); 86 printk(KERN_INFO "ipip close: can't remove xfrm type\n");
140} 87}