aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/mcast.c
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2008-04-03 17:31:03 -0400
committerDavid S. Miller <davem@davemloft.net>2008-04-03 17:31:03 -0400
commit1ed8516f09e510e4595bc900ad9266c15aacfdd2 (patch)
treee41fa4151f3b13031291dae5b3ef5a83b3de23d8 /net/ipv6/mcast.c
parent5616bdd6dfeb4e36be499dbac245e4d3be90a138 (diff)
[IPV6]: Simplify IPv6 control sockets creation.
Do this by replacing sock_create_kern with inet_ctl_sock_create. Signed-off-by: Denis V. Lunev <den@openvz.org> Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/mcast.c')
-rw-r--r--net/ipv6/mcast.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index d810cff818cf..2e6a53f3cc38 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -59,6 +59,7 @@
59#include <net/ndisc.h> 59#include <net/ndisc.h>
60#include <net/addrconf.h> 60#include <net/addrconf.h>
61#include <net/ip6_route.h> 61#include <net/ip6_route.h>
62#include <net/inet_common.h>
62 63
63#include <net/ip6_checksum.h> 64#include <net/ip6_checksum.h>
64 65
@@ -2672,12 +2673,10 @@ static void igmp6_proc_exit(struct net *net)
2672 2673
2673static int igmp6_net_init(struct net *net) 2674static int igmp6_net_init(struct net *net)
2674{ 2675{
2675 struct ipv6_pinfo *np;
2676 struct socket *sock;
2677 struct sock *sk;
2678 int err; 2676 int err;
2679 2677
2680 err = sock_create_kern(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6, &sock); 2678 err = inet_ctl_sock_create(&net->ipv6.igmp_sk, PF_INET6,
2679 SOCK_RAW, IPPROTO_ICMPV6, net);
2681 if (err < 0) { 2680 if (err < 0) {
2682 printk(KERN_ERR 2681 printk(KERN_ERR
2683 "Failed to initialize the IGMP6 control socket (err %d).\n", 2682 "Failed to initialize the IGMP6 control socket (err %d).\n",
@@ -2685,13 +2684,7 @@ static int igmp6_net_init(struct net *net)
2685 goto out; 2684 goto out;
2686 } 2685 }
2687 2686
2688 net->ipv6.igmp_sk = sk = sock->sk; 2687 inet6_sk(net->ipv6.igmp_sk)->hop_limit = 1;
2689 sk_change_net(sk, net);
2690 sk->sk_allocation = GFP_ATOMIC;
2691 sk->sk_prot->unhash(sk);
2692
2693 np = inet6_sk(sk);
2694 np->hop_limit = 1;
2695 2688
2696 err = igmp6_proc_init(net); 2689 err = igmp6_proc_init(net);
2697 if (err) 2690 if (err)
@@ -2700,13 +2693,13 @@ out:
2700 return err; 2693 return err;
2701 2694
2702out_sock_create: 2695out_sock_create:
2703 sk_release_kernel(net->ipv6.igmp_sk); 2696 inet_ctl_sock_destroy(net->ipv6.igmp_sk);
2704 goto out; 2697 goto out;
2705} 2698}
2706 2699
2707static void igmp6_net_exit(struct net *net) 2700static void igmp6_net_exit(struct net *net)
2708{ 2701{
2709 sk_release_kernel(net->ipv6.igmp_sk); 2702 inet_ctl_sock_destroy(net->ipv6.igmp_sk);
2710 igmp6_proc_exit(net); 2703 igmp6_proc_exit(net);
2711} 2704}
2712 2705