diff options
Diffstat (limited to 'net/ipv4')
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 |
236 | config NET_IPIP | 236 | config 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 | |||
395 | config INET_IPCOMP | 396 | config 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 | ||
408 | config INET_XFRM_TUNNEL | ||
409 | tristate | ||
410 | select INET_TUNNEL | ||
411 | default n | ||
412 | |||
407 | config INET_TUNNEL | 413 | config 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 | ||
416 | config INET_DIAG | 417 | config 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 | |||
22 | obj-$(CONFIG_INET_AH) += ah4.o | 22 | obj-$(CONFIG_INET_AH) += ah4.o |
23 | obj-$(CONFIG_INET_ESP) += esp4.o | 23 | obj-$(CONFIG_INET_ESP) += esp4.o |
24 | obj-$(CONFIG_INET_IPCOMP) += ipcomp.o | 24 | obj-$(CONFIG_INET_IPCOMP) += ipcomp.o |
25 | obj-$(CONFIG_INET_TUNNEL) += xfrm4_tunnel.o | 25 | obj-$(CONFIG_INET_XFRM_TUNNEL) += xfrm4_tunnel.o |
26 | obj-$(CONFIG_INET_TUNNEL) += tunnel4.o | ||
26 | obj-$(CONFIG_IP_PNP) += ipconfig.o | 27 | obj-$(CONFIG_IP_PNP) += ipconfig.o |
27 | obj-$(CONFIG_IP_ROUTE_MULTIPATH_RR) += multipath_rr.o | 28 | obj-$(CONFIG_IP_ROUTE_MULTIPATH_RR) += multipath_rr.o |
28 | obj-$(CONFIG_IP_ROUTE_MULTIPATH_RANDOM) += multipath_random.o | 29 | obj-$(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 | ||
277 | static void ipip_err(struct sk_buff *skb, u32 info) | 276 | static 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; |
330 | out: | 334 | out: |
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 | ||
859 | static struct xfrm_tunnel ipip_handler = { | 862 | static 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 | ||
864 | static inline int ipip_register(void) | ||
865 | { | ||
866 | return xfrm4_tunnel_register(&ipip_handler); | ||
867 | } | ||
868 | |||
869 | static inline int ipip_unregister(void) | ||
870 | { | ||
871 | return xfrm4_tunnel_deregister(&ipip_handler); | ||
872 | } | ||
873 | #else | ||
874 | static struct net_protocol ipip_protocol = { | ||
875 | .handler = ipip_rcv, | ||
876 | .err_handler = ipip_err, | ||
877 | .no_policy = 1, | ||
878 | }; | ||
879 | |||
880 | static inline int ipip_register(void) | ||
881 | { | ||
882 | return inet_add_protocol(&ipip_protocol, IPPROTO_IPIP); | ||
883 | } | ||
884 | |||
885 | static inline int ipip_unregister(void) | ||
886 | { | ||
887 | return inet_del_protocol(&ipip_protocol, IPPROTO_IPIP); | ||
888 | } | ||
889 | #endif | ||
890 | |||
891 | static char banner[] __initdata = | 868 | static 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 | ||
940 | static void __exit ipip_fini(void) | 917 | static 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 | ||
170 | static int init(void) | 170 | static 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 | ||
175 | static void fini(void) | 175 | static 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 | ||
180 | module_init(init); | 180 | module_init(ipv4_netfilter_init); |
181 | module_exit(fini); | 181 | module_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 | ||
1169 | static int __init init(void) | 1169 | static 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 | ||
1190 | static void __exit fini(void) | 1190 | static 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); | |||
1197 | EXPORT_SYMBOL(arpt_unregister_table); | 1197 | EXPORT_SYMBOL(arpt_unregister_table); |
1198 | EXPORT_SYMBOL(arpt_do_table); | 1198 | EXPORT_SYMBOL(arpt_do_table); |
1199 | 1199 | ||
1200 | module_init(init); | 1200 | module_init(arp_tables_init); |
1201 | module_exit(fini); | 1201 | module_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 | ||
92 | static int __init init(void) | 92 | static 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 | ||
100 | static void __exit fini(void) | 100 | static 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 | ||
105 | module_init(init); | 105 | module_init(arpt_mangle_init); |
106 | module_exit(fini); | 106 | module_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 | ||
182 | static int __init init(void) | 182 | static 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 | ||
204 | static void __exit fini(void) | 204 | static 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 | ||
214 | module_init(init); | 214 | module_init(arptable_filter_init); |
215 | module_exit(fini); | 215 | module_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 | ||
156 | static void __exit fini(void) | 156 | static 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 | ||
162 | static int __init init(void) | 162 | static 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 | ||
180 | module_init(init); | 180 | module_init(ip_conntrack_amanda_init); |
181 | module_exit(fini); | 181 | module_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]; | |||
453 | static char ftp_names[MAX_PORTS][sizeof("ftp-65535")]; | 453 | static char ftp_names[MAX_PORTS][sizeof("ftp-65535")]; |
454 | 454 | ||
455 | /* Not __exit: called from init() */ | 455 | /* Not __exit: called from init() */ |
456 | static void fini(void) | 456 | static 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 | ||
468 | static int __init init(void) | 468 | static 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 | ||
509 | module_init(init); | 509 | module_init(ip_conntrack_ftp_init); |
510 | module_exit(fini); | 510 | module_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); | |||
766 | extern int __init ip_ct_proto_gre_init(void); | 766 | extern int __init ip_ct_proto_gre_init(void); |
767 | 767 | ||
768 | /* ip_conntrack_pptp initialization */ | 768 | /* ip_conntrack_pptp initialization */ |
769 | static int __init init(void) | 769 | static 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 | ||
789 | static void __exit fini(void) | 789 | static 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 | ||
796 | module_init(init); | 796 | module_init(ip_conntrack_helper_pptp_init); |
797 | module_exit(fini); | 797 | module_exit(ip_conntrack_helper_pptp_fini); |
798 | 798 | ||
799 | EXPORT_SYMBOL(ip_nat_pptp_hook_outbound); | 799 | EXPORT_SYMBOL(ip_nat_pptp_hook_outbound); |
800 | EXPORT_SYMBOL(ip_nat_pptp_hook_inbound); | 800 | EXPORT_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, | |||
242 | static struct ip_conntrack_helper irc_helpers[MAX_PORTS]; | 242 | static struct ip_conntrack_helper irc_helpers[MAX_PORTS]; |
243 | static char irc_names[MAX_PORTS][sizeof("irc-65535")]; | 243 | static char irc_names[MAX_PORTS][sizeof("irc-65535")]; |
244 | 244 | ||
245 | static void fini(void); | 245 | static void ip_conntrack_irc_fini(void); |
246 | 246 | ||
247 | static int __init init(void) | 247 | static 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 */ |
300 | static void fini(void) | 300 | static 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 | ||
311 | module_init(init); | 311 | module_init(ip_conntrack_irc_init); |
312 | module_exit(fini); | 312 | module_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 | ||
130 | static int __init init(void) | 130 | static 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 | ||
136 | static void __exit fini(void) | 136 | static 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 | ||
141 | module_init(init); | 141 | module_init(ip_conntrack_netbios_ns_init); |
142 | module_exit(fini); | 142 | module_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[] = { | |||
609 | static struct ctl_table_header *ip_ct_sysctl_header; | 609 | static struct ctl_table_header *ip_ct_sysctl_header; |
610 | #endif | 610 | #endif |
611 | 611 | ||
612 | static int __init init(void) | 612 | static 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 | ||
643 | static void __exit fini(void) | 643 | static 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 | ||
652 | module_init(init); | 652 | module_init(ip_conntrack_proto_sctp_init); |
653 | module_exit(fini); | 653 | module_exit(ip_conntrack_proto_sctp_fini); |
654 | 654 | ||
655 | MODULE_LICENSE("GPL"); | 655 | MODULE_LICENSE("GPL"); |
656 | MODULE_AUTHOR("Kiran Kumar Immidi"); | 656 | MODULE_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 | ||
932 | static int __init init(void) | 932 | static 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 | ||
937 | static void __exit fini(void) | 937 | static void __exit ip_conntrack_standalone_fini(void) |
938 | { | 938 | { |
939 | init_or_cleanup(0); | 939 | init_or_cleanup(0); |
940 | } | 940 | } |
941 | 941 | ||
942 | module_init(init); | 942 | module_init(ip_conntrack_standalone_init); |
943 | module_exit(fini); | 943 | module_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, | |||
103 | static struct ip_conntrack_helper tftp[MAX_PORTS]; | 103 | static struct ip_conntrack_helper tftp[MAX_PORTS]; |
104 | static char tftp_names[MAX_PORTS][sizeof("tftp-65535")]; | 104 | static char tftp_names[MAX_PORTS][sizeof("tftp-65535")]; |
105 | 105 | ||
106 | static void fini(void) | 106 | static 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 | ||
117 | static int __init init(void) | 117 | static 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 | ||
158 | module_init(init); | 158 | module_init(ip_conntrack_tftp_init); |
159 | module_exit(fini); | 159 | module_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 | ||
71 | static void __exit fini(void) | 71 | static 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 | ||
78 | static int __init init(void) | 78 | static 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 | ||
85 | module_init(init); | 85 | module_init(ip_nat_amanda_init); |
86 | module_exit(fini); | 86 | module_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 | ||
157 | static void __exit fini(void) | 157 | static 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 | ||
164 | static int __init init(void) | 164 | static 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 | } |
178 | module_param_call(ports, warn_set, NULL, NULL, 0); | 178 | module_param_call(ports, warn_set, NULL, NULL, 0); |
179 | 179 | ||
180 | module_init(init); | 180 | module_init(ip_nat_ftp_init); |
181 | module_exit(fini); | 181 | module_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, | |||
370 | extern int __init ip_nat_proto_gre_init(void); | 370 | extern int __init ip_nat_proto_gre_init(void); |
371 | extern void __exit ip_nat_proto_gre_fini(void); | 371 | extern void __exit ip_nat_proto_gre_fini(void); |
372 | 372 | ||
373 | static int __init init(void) | 373 | static 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 | ||
399 | static void __exit fini(void) | 399 | static 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 | ||
415 | module_init(init); | 415 | module_init(ip_nat_helper_pptp_init); |
416 | module_exit(fini); | 416 | module_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 | ||
99 | static void __exit fini(void) | 99 | static 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 | ||
106 | static int __init init(void) | 106 | static 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 | } |
120 | module_param_call(ports, warn_set, NULL, NULL, 0); | 120 | module_param_call(ports, warn_set, NULL, NULL, 0); |
121 | 121 | ||
122 | module_init(init); | 122 | module_init(ip_nat_irc_init); |
123 | module_exit(fini); | 123 | module_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 | ||
1327 | static int __init init(void) | 1327 | static 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 | ||
1342 | static void __exit fini(void) | 1342 | static 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 | ||
1348 | module_init(init); | 1348 | module_init(ip_nat_snmp_basic_init); |
1349 | module_exit(fini); | 1349 | module_exit(ip_nat_snmp_basic_fini); |
1350 | 1350 | ||
1351 | module_param(debug, bool, 0600); | 1351 | module_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 | ||
428 | static int __init init(void) | 428 | static 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 | ||
433 | static void __exit fini(void) | 433 | static void __exit ip_nat_standalone_fini(void) |
434 | { | 434 | { |
435 | init_or_cleanup(0); | 435 | init_or_cleanup(0); |
436 | } | 436 | } |
437 | 437 | ||
438 | module_init(init); | 438 | module_init(ip_nat_standalone_init); |
439 | module_exit(fini); | 439 | module_exit(ip_nat_standalone_fini); |
440 | 440 | ||
441 | MODULE_LICENSE("GPL"); | 441 | MODULE_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 | ||
56 | static void __exit fini(void) | 56 | static 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 | ||
63 | static int __init init(void) | 63 | static 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 | ||
70 | module_init(init); | 70 | module_init(ip_nat_tftp_init); |
71 | module_exit(fini); | 71 | module_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 | ||
720 | static int __init init(void) | 720 | static 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 | ||
726 | static void __exit fini(void) | 726 | static 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"); | |||
732 | MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>"); | 732 | MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>"); |
733 | MODULE_LICENSE("GPL"); | 733 | MODULE_LICENSE("GPL"); |
734 | 734 | ||
735 | module_init(init); | 735 | module_init(ip_queue_init); |
736 | module_exit(fini); | 736 | module_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 | ||
1367 | static int __init init(void) | 1367 | static 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 | ||
1389 | static void __exit fini(void) | 1389 | static 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) | |||
1400 | EXPORT_SYMBOL(ipt_register_table); | 1400 | EXPORT_SYMBOL(ipt_register_table); |
1401 | EXPORT_SYMBOL(ipt_unregister_table); | 1401 | EXPORT_SYMBOL(ipt_unregister_table); |
1402 | EXPORT_SYMBOL(ipt_do_table); | 1402 | EXPORT_SYMBOL(ipt_do_table); |
1403 | module_init(init); | 1403 | module_init(ip_tables_init); |
1404 | module_exit(fini); | 1404 | module_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 | ||
773 | static int __init init(void) | 773 | static int __init ipt_clusterip_init(void) |
774 | { | 774 | { |
775 | return init_or_cleanup(0); | 775 | return init_or_cleanup(0); |
776 | } | 776 | } |
777 | 777 | ||
778 | static void __exit fini(void) | 778 | static void __exit ipt_clusterip_fini(void) |
779 | { | 779 | { |
780 | init_or_cleanup(1); | 780 | init_or_cleanup(1); |
781 | } | 781 | } |
782 | 782 | ||
783 | module_init(init); | 783 | module_init(ipt_clusterip_init); |
784 | module_exit(fini); | 784 | module_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 | ||
85 | static int __init init(void) | 85 | static 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 | ||
90 | static void __exit fini(void) | 90 | static 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 | ||
95 | module_init(init); | 95 | module_init(ipt_dscp_init); |
96 | module_exit(fini); | 96 | module_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 | ||
154 | static int __init init(void) | 154 | static 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 | ||
159 | static void __exit fini(void) | 159 | static 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 | ||
164 | module_init(init); | 164 | module_init(ipt_ecn_init); |
165 | module_exit(fini); | 165 | module_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 | ||
474 | static int __init init(void) | 474 | static 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 | ||
488 | static void __exit fini(void) | 488 | static 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 | ||
494 | module_init(init); | 494 | module_init(ipt_log_init); |
495 | module_exit(fini); | 495 | module_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 | ||
178 | static int __init init(void) | 178 | static 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 | ||
194 | static void __exit fini(void) | 194 | static 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 | ||
201 | module_init(init); | 201 | module_init(ipt_masquerade_init); |
202 | module_exit(fini); | 202 | module_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 | ||
101 | static int __init init(void) | 101 | static 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 | ||
106 | static void __exit fini(void) | 106 | static void __exit ipt_netmap_fini(void) |
107 | { | 107 | { |
108 | ipt_unregister_target(&target_module); | 108 | ipt_unregister_target(&target_module); |
109 | } | 109 | } |
110 | 110 | ||
111 | module_init(init); | 111 | module_init(ipt_netmap_init); |
112 | module_exit(fini); | 112 | module_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 | ||
115 | static int __init init(void) | 115 | static 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 | ||
120 | static void __exit fini(void) | 120 | static void __exit ipt_redirect_fini(void) |
121 | { | 121 | { |
122 | ipt_unregister_target(&redirect_reg); | 122 | ipt_unregister_target(&redirect_reg); |
123 | } | 123 | } |
124 | 124 | ||
125 | module_init(init); | 125 | module_init(ipt_redirect_init); |
126 | module_exit(fini); | 126 | module_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 | ||
316 | static int __init init(void) | 316 | static 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 | ||
321 | static void __exit fini(void) | 321 | static 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 | ||
326 | module_init(init); | 326 | module_init(ipt_reject_init); |
327 | module_exit(fini); | 327 | module_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 | ||
192 | static int __init init(void) | 192 | static 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 | ||
197 | static void __exit fini(void) | 197 | static void __exit ipt_same_fini(void) |
198 | { | 198 | { |
199 | ipt_unregister_target(&same_reg); | 199 | ipt_unregister_target(&same_reg); |
200 | } | 200 | } |
201 | 201 | ||
202 | module_init(init); | 202 | module_init(ipt_same_init); |
203 | module_exit(fini); | 203 | module_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 | ||
246 | static int __init init(void) | 246 | static 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 | ||
251 | static void __exit fini(void) | 251 | static 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 | ||
256 | module_init(init); | 256 | module_init(ipt_tcpmss_init); |
257 | module_exit(fini); | 257 | module_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 | ||
84 | static int __init init(void) | 84 | static 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 | ||
89 | static void __exit fini(void) | 89 | static 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 | ||
94 | module_init(init); | 94 | module_init(ipt_tos_init); |
95 | module_exit(fini); | 95 | module_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 | ||
97 | static int __init init(void) | 97 | static 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 | ||
102 | static void __exit fini(void) | 102 | static void __exit ipt_ttl_fini(void) |
103 | { | 103 | { |
104 | ipt_unregister_target(&ipt_TTL); | 104 | ipt_unregister_target(&ipt_TTL); |
105 | } | 105 | } |
106 | 106 | ||
107 | module_init(init); | 107 | module_init(ipt_ttl_init); |
108 | module_exit(fini); | 108 | module_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 | ||
377 | static int __init init(void) | 377 | static 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 | ||
410 | static void __exit fini(void) | 410 | static 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 | ||
438 | module_init(init); | 438 | module_init(ipt_ulog_init); |
439 | module_exit(fini); | 439 | module_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 | ||
54 | static int __init init(void) | 54 | static 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 | ||
59 | static void __exit fini(void) | 59 | static void __exit ipt_addrtype_fini(void) |
60 | { | 60 | { |
61 | ipt_unregister_match(&addrtype_match); | 61 | ipt_unregister_match(&addrtype_match); |
62 | } | 62 | } |
63 | 63 | ||
64 | module_init(init); | 64 | module_init(ipt_addrtype_init); |
65 | module_exit(fini); | 65 | module_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 | ||
99 | static int __init init(void) | 99 | static 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 | ||
104 | static void __exit cleanup(void) | 104 | static void __exit ipt_ah_fini(void) |
105 | { | 105 | { |
106 | ipt_unregister_match(&ah_match); | 106 | ipt_unregister_match(&ah_match); |
107 | } | 107 | } |
108 | 108 | ||
109 | module_init(init); | 109 | module_init(ipt_ah_init); |
110 | module_exit(cleanup); | 110 | module_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 | ||
42 | static int __init init(void) | 42 | static 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 | ||
47 | static void __exit fini(void) | 47 | static 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 | ||
53 | module_init(init); | 53 | module_init(ipt_dscp_init); |
54 | module_exit(fini); | 54 | module_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 | ||
121 | static int __init init(void) | 121 | static 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 | ||
126 | static void __exit fini(void) | 126 | static void __exit ipt_ecn_fini(void) |
127 | { | 127 | { |
128 | ipt_unregister_match(&ecn_match); | 128 | ipt_unregister_match(&ecn_match); |
129 | } | 129 | } |
130 | 130 | ||
131 | module_init(init); | 131 | module_init(ipt_ecn_init); |
132 | module_exit(fini); | 132 | module_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 | ||
100 | static int __init init(void) | 100 | static 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 | ||
105 | static void __exit cleanup(void) | 105 | static void __exit ipt_esp_fini(void) |
106 | { | 106 | { |
107 | ipt_unregister_match(&esp_match); | 107 | ipt_unregister_match(&esp_match); |
108 | } | 108 | } |
109 | 109 | ||
110 | module_init(init); | 110 | module_init(ipt_esp_init); |
111 | module_exit(cleanup); | 111 | module_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 | ||
722 | static int __init init(void) | 722 | static int __init ipt_hashlimit_init(void) |
723 | { | 723 | { |
724 | return init_or_fini(0); | 724 | return init_or_fini(0); |
725 | } | 725 | } |
726 | 726 | ||
727 | static void __exit fini(void) | 727 | static void __exit ipt_hashlimit_fini(void) |
728 | { | 728 | { |
729 | init_or_fini(1); | 729 | init_or_fini(1); |
730 | } | 730 | } |
731 | 731 | ||
732 | module_init(init); | 732 | module_init(ipt_hashlimit_init); |
733 | module_exit(fini); | 733 | module_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 | ||
74 | static int __init init(void) | 74 | static 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 | ||
79 | static void __exit fini(void) | 79 | static void __exit ipt_iprange_fini(void) |
80 | { | 80 | { |
81 | ipt_unregister_match(&iprange_match); | 81 | ipt_unregister_match(&iprange_match); |
82 | } | 82 | } |
83 | 83 | ||
84 | module_init(init); | 84 | module_init(ipt_iprange_init); |
85 | module_exit(fini); | 85 | module_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 | ||
174 | static int __init init(void) | 174 | static 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 | ||
188 | static void __exit fini(void) | 188 | static 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 | ||
194 | module_init(init); | 194 | module_init(ipt_multiport_init); |
195 | module_exit(fini); | 195 | module_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 | ||
81 | static int __init init(void) | 81 | static 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 | ||
86 | static void __exit fini(void) | 86 | static void __exit ipt_owner_fini(void) |
87 | { | 87 | { |
88 | ipt_unregister_match(&owner_match); | 88 | ipt_unregister_match(&owner_match); |
89 | } | 89 | } |
90 | 90 | ||
91 | module_init(init); | 91 | module_init(ipt_owner_init); |
92 | module_exit(fini); | 92 | module_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. */ |
965 | static int __init init(void) | 965 | static 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. */ |
998 | static void __exit fini(void) | 998 | static 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. */ |
1006 | module_init(init); | 1006 | module_init(ipt_recent_init); |
1007 | module_exit(fini); | 1007 | module_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 | ||
42 | static int __init init(void) | 42 | static 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 | ||
47 | static void __exit fini(void) | 47 | static void __exit ipt_multiport_fini(void) |
48 | { | 48 | { |
49 | ipt_unregister_match(&tos_match); | 49 | ipt_unregister_match(&tos_match); |
50 | } | 50 | } |
51 | 51 | ||
52 | module_init(init); | 52 | module_init(ipt_multiport_init); |
53 | module_exit(fini); | 53 | module_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 | ||
58 | static int __init init(void) | 58 | static 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 | ||
63 | static void __exit fini(void) | 63 | static 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 | ||
69 | module_init(init); | 69 | module_init(ipt_ttl_init); |
70 | module_exit(fini); | 70 | module_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[] = { | |||
139 | static int forward = NF_ACCEPT; | 139 | static int forward = NF_ACCEPT; |
140 | module_param(forward, bool, 0000); | 140 | module_param(forward, bool, 0000); |
141 | 141 | ||
142 | static int __init init(void) | 142 | static 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 | ||
184 | static void __exit fini(void) | 184 | static 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 | ||
194 | module_init(init); | 194 | module_init(iptable_filter_init); |
195 | module_exit(fini); | 195 | module_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 | ||
204 | static int __init init(void) | 204 | static 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 | ||
250 | static void __exit fini(void) | 250 | static 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 | ||
260 | module_init(init); | 260 | module_init(iptable_mangle_init); |
261 | module_exit(fini); | 261 | module_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 | ||
119 | static int __init init(void) | 119 | static 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 | ||
147 | static void __exit fini(void) | 147 | static 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 | ||
157 | module_init(init); | 157 | module_init(iptable_raw_init); |
158 | module_exit(fini); | 158 | module_exit(iptable_raw_fini); |
159 | MODULE_LICENSE("GPL"); | 159 | MODULE_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) | |||
571 | MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET)); | 571 | MODULE_ALIAS("nf_conntrack-" __stringify(AF_INET)); |
572 | MODULE_LICENSE("GPL"); | 572 | MODULE_LICENSE("GPL"); |
573 | 573 | ||
574 | static int __init init(void) | 574 | static 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 | ||
580 | static void __exit fini(void) | 580 | static void __exit nf_conntrack_l3proto_ipv4_fini(void) |
581 | { | 581 | { |
582 | init_or_cleanup(0); | 582 | init_or_cleanup(0); |
583 | } | 583 | } |
584 | 584 | ||
585 | module_init(init); | 585 | module_init(nf_conntrack_l3proto_ipv4_init); |
586 | module_exit(fini); | 586 | module_exit(nf_conntrack_l3proto_ipv4_fini); |
587 | 587 | ||
588 | EXPORT_SYMBOL(nf_ct_ipv4_gather_frags); | 588 | EXPORT_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 | |||
14 | static struct xfrm_tunnel *tunnel4_handlers; | ||
15 | static DEFINE_MUTEX(tunnel4_mutex); | ||
16 | |||
17 | int 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 | |||
37 | err: | ||
38 | mutex_unlock(&tunnel4_mutex); | ||
39 | |||
40 | return ret; | ||
41 | } | ||
42 | |||
43 | EXPORT_SYMBOL(xfrm4_tunnel_register); | ||
44 | |||
45 | int 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 | |||
67 | EXPORT_SYMBOL(xfrm4_tunnel_deregister); | ||
68 | |||
69 | static 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 | |||
81 | static 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 | |||
90 | static struct net_protocol tunnel4_protocol = { | ||
91 | .handler = tunnel4_rcv, | ||
92 | .err_handler = tunnel4_err, | ||
93 | .no_policy = 1, | ||
94 | }; | ||
95 | |||
96 | static 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 | |||
105 | static 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 | |||
111 | module_init(tunnel4_init); | ||
112 | module_exit(tunnel4_fini); | ||
113 | MODULE_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 | ||
29 | static struct xfrm_tunnel *ipip_handler; | ||
30 | static DEFINE_MUTEX(xfrm4_tunnel_mutex); | ||
31 | |||
32 | int 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 | |||
47 | EXPORT_SYMBOL(xfrm4_tunnel_register); | ||
48 | |||
49 | int 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 | |||
66 | EXPORT_SYMBOL(xfrm4_tunnel_deregister); | ||
67 | |||
68 | static 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 | |||
79 | static 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 | |||
87 | static int ipip_init_state(struct xfrm_state *x) | 29 | static 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 | ||
114 | static struct net_protocol ipip_protocol = { | 56 | static 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 | |||
61 | static struct xfrm_tunnel xfrm_tunnel_handler = { | ||
62 | .handler = xfrm4_rcv, | ||
63 | .err_handler = xfrm_tunnel_err, | ||
64 | .priority = 2, | ||
118 | }; | 65 | }; |
119 | 66 | ||
120 | static int __init ipip_init(void) | 67 | static 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 | ||
134 | static void __exit ipip_fini(void) | 81 | static 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 | } |