Skip to content

Commit

Permalink
[NETNS][IPV6]: Make bindv6only sysctl per namespace.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Daniel Lezcano authored and David S. Miller committed Jan 28, 2008
1 parent 760f2d0 commit 99bc9c4
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 5 deletions.
1 change: 0 additions & 1 deletion include/net/ipv6.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ struct frag_hdr {
#include <net/sock.h>

/* sysctls */
extern int sysctl_ipv6_bindv6only;
extern int sysctl_mld_max_msf;

extern struct ctl_path net_ipv6_ctl_path[];
Expand Down
1 change: 1 addition & 0 deletions include/net/netns/ipv6.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct netns_sysctl_ipv6 {
#ifdef CONFIG_SYSCTL
struct ctl_table_header *table;
#endif
int bindv6only;
};

struct netns_ipv6 {
Expand Down
5 changes: 2 additions & 3 deletions net/ipv6/af_inet6.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ MODULE_AUTHOR("Cast of dozens");
MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
MODULE_LICENSE("GPL");

int sysctl_ipv6_bindv6only __read_mostly;

/* The inetsw6 table contains everything that inet6_create needs to
* build a new socket.
*/
Expand Down Expand Up @@ -193,7 +191,7 @@ static int inet6_create(struct net *net, struct socket *sock, int protocol)
np->mcast_hops = -1;
np->mc_loop = 1;
np->pmtudisc = IPV6_PMTUDISC_WANT;
np->ipv6only = sysctl_ipv6_bindv6only;
np->ipv6only = init_net.ipv6.sysctl.bindv6only;

/* Init the ipv4 part of the socket since we can have sockets
* using v6 API for ipv4.
Expand Down Expand Up @@ -721,6 +719,7 @@ static void cleanup_ipv6_mibs(void)

static int inet6_net_init(struct net *net)
{
net->ipv6.sysctl.bindv6only = 0;
return 0;
}

Expand Down
4 changes: 3 additions & 1 deletion net/ipv6/sysctl_net_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ static ctl_table ipv6_table_template[] = {
{
.ctl_name = NET_IPV6_BINDV6ONLY,
.procname = "bindv6only",
.data = &sysctl_ipv6_bindv6only,
.data = &init_net.ipv6.sysctl.bindv6only,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
Expand Down Expand Up @@ -116,6 +116,8 @@ static int ipv6_sysctl_net_init(struct net *net)
ipv6_table[0].child = ipv6_route_table;
ipv6_table[1].child = ipv6_icmp_table;

ipv6_table[2].data = &net->ipv6.sysctl.bindv6only;

net->ipv6.sysctl.table = register_net_sysctl_table(net, net_ipv6_ctl_path,
ipv6_table);
if (!net->ipv6.sysctl.table)
Expand Down

0 comments on commit 99bc9c4

Please sign in to comment.