diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2008-01-10 05:54:53 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:01:18 -0500 |
commit | 99bc9c4e45e7e783cf0b0a25cc03a103c038f254 (patch) | |
tree | e6598bc44e2003761e9ee65f06c4062287c1ed0d /net | |
parent | 760f2d0186225f06d46e07232d65219c5055cad3 (diff) |
[NETNS][IPV6]: Make bindv6only sysctl per namespace.
This patch moves the bindv6only sysctl to the network namespace
structure. Until the ipv6 protocol is not per namespace, the sysctl
variable is always from the initial network namespace.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/af_inet6.c | 5 | ||||
-rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 4 |
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"); | |||
66 | MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); | 66 | MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); |
67 | MODULE_LICENSE("GPL"); | 67 | MODULE_LICENSE("GPL"); |
68 | 68 | ||
69 | int 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 | ||
722 | static int inet6_net_init(struct net *net) | 720 | static 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) |