aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/af_inet6.c5
-rw-r--r--net/ipv6/sysctl_net_ipv6.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 72b898fe2dde..70662bf8ab98 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -66,8 +66,6 @@ MODULE_AUTHOR("Cast of dozens");
66MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); 66MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
67MODULE_LICENSE("GPL"); 67MODULE_LICENSE("GPL");
68 68
69int sysctl_ipv6_bindv6only __read_mostly;
70
71/* The inetsw6 table contains everything that inet6_create needs to 69/* The inetsw6 table contains everything that inet6_create needs to
72 * build a new socket. 70 * build a new socket.
73 */ 71 */
@@ -193,7 +191,7 @@ lookup_protocol:
193 np->mcast_hops = -1; 191 np->mcast_hops = -1;
194 np->mc_loop = 1; 192 np->mc_loop = 1;
195 np->pmtudisc = IPV6_PMTUDISC_WANT; 193 np->pmtudisc = IPV6_PMTUDISC_WANT;
196 np->ipv6only = sysctl_ipv6_bindv6only; 194 np->ipv6only = init_net.ipv6.sysctl.bindv6only;
197 195
198 /* Init the ipv4 part of the socket since we can have sockets 196 /* Init the ipv4 part of the socket since we can have sockets
199 * using v6 API for ipv4. 197 * using v6 API for ipv4.
@@ -721,6 +719,7 @@ static void cleanup_ipv6_mibs(void)
721 719
722static int inet6_net_init(struct net *net) 720static int inet6_net_init(struct net *net)
723{ 721{
722 net->ipv6.sysctl.bindv6only = 0;
724 return 0; 723 return 0;
725} 724}
726 725
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
index 7970f3366f87..13be97a928cb 100644
--- a/net/ipv6/sysctl_net_ipv6.c
+++ b/net/ipv6/sysctl_net_ipv6.c
@@ -35,7 +35,7 @@ static ctl_table ipv6_table_template[] = {
35 { 35 {
36 .ctl_name = NET_IPV6_BINDV6ONLY, 36 .ctl_name = NET_IPV6_BINDV6ONLY,
37 .procname = "bindv6only", 37 .procname = "bindv6only",
38 .data = &sysctl_ipv6_bindv6only, 38 .data = &init_net.ipv6.sysctl.bindv6only,
39 .maxlen = sizeof(int), 39 .maxlen = sizeof(int),
40 .mode = 0644, 40 .mode = 0644,
41 .proc_handler = &proc_dointvec 41 .proc_handler = &proc_dointvec
@@ -116,6 +116,8 @@ static int ipv6_sysctl_net_init(struct net *net)
116 ipv6_table[0].child = ipv6_route_table; 116 ipv6_table[0].child = ipv6_route_table;
117 ipv6_table[1].child = ipv6_icmp_table; 117 ipv6_table[1].child = ipv6_icmp_table;
118 118
119 ipv6_table[2].data = &net->ipv6.sysctl.bindv6only;
120
119 net->ipv6.sysctl.table = register_net_sysctl_table(net, net_ipv6_ctl_path, 121 net->ipv6.sysctl.table = register_net_sysctl_table(net, net_ipv6_ctl_path,
120 ipv6_table); 122 ipv6_table);
121 if (!net->ipv6.sysctl.table) 123 if (!net->ipv6.sysctl.table)