Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f8b13bc authored by Daniel Lezcano's avatar Daniel Lezcano Committed by David S. Miller
Browse files

[NETNS][IPV6] tcp6 - make proc per namespace



Make the proc for tcp6 to be per namespace.

Signed-off-by: default avatarDaniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0c96d8c5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -595,8 +595,8 @@ extern int ac6_proc_init(void);
extern void ac6_proc_exit(void);
extern int  raw6_proc_init(void);
extern void raw6_proc_exit(void);
extern int  tcp6_proc_init(void);
extern void tcp6_proc_exit(void);
extern int  tcp6_proc_init(struct net *net);
extern void tcp6_proc_exit(struct net *net);
extern int  udp6_proc_init(struct net *net);
extern void udp6_proc_exit(struct net *net);
extern int  udplite6_proc_init(void);
+2 −2
Original line number Diff line number Diff line
@@ -1336,8 +1336,8 @@ struct tcp_iter_state {
	struct seq_operations	seq_ops;
};

extern int tcp_proc_register(struct tcp_seq_afinfo *afinfo);
extern void tcp_proc_unregister(struct tcp_seq_afinfo *afinfo);
extern int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo);
extern void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo);

extern struct request_sock_ops tcp_request_sock_ops;
extern struct request_sock_ops tcp6_request_sock_ops;
+6 −6
Original line number Diff line number Diff line
@@ -2253,7 +2253,7 @@ static int tcp_seq_release(struct inode *inode, struct file *file)
	return 0;
}

int tcp_proc_register(struct tcp_seq_afinfo *afinfo)
int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo)
{
	int rc = 0;
	struct proc_dir_entry *p;
@@ -2266,7 +2266,7 @@ int tcp_proc_register(struct tcp_seq_afinfo *afinfo)
	afinfo->seq_fops->llseek	= seq_lseek;
	afinfo->seq_fops->release	= tcp_seq_release;

	p = proc_net_fops_create(&init_net, afinfo->name, S_IRUGO, afinfo->seq_fops);
	p = proc_net_fops_create(net, afinfo->name, S_IRUGO, afinfo->seq_fops);
	if (p)
		p->data = afinfo;
	else
@@ -2274,11 +2274,11 @@ int tcp_proc_register(struct tcp_seq_afinfo *afinfo)
	return rc;
}

void tcp_proc_unregister(struct tcp_seq_afinfo *afinfo)
void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo)
{
	if (!afinfo)
		return;
	proc_net_remove(&init_net, afinfo->name);
	proc_net_remove(net, afinfo->name);
	memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops));
}

@@ -2419,12 +2419,12 @@ static struct tcp_seq_afinfo tcp4_seq_afinfo = {

int __init tcp4_proc_init(void)
{
	return tcp_proc_register(&tcp4_seq_afinfo);
	return tcp_proc_register(&init_net, &tcp4_seq_afinfo);
}

void tcp4_proc_exit(void)
{
	tcp_proc_unregister(&tcp4_seq_afinfo);
	tcp_proc_unregister(&init_net, &tcp4_seq_afinfo);
}
#endif /* CONFIG_PROC_FS */

+10 −5
Original line number Diff line number Diff line
@@ -859,15 +859,25 @@ static int inet6_net_init(struct net *net)
	err = udp6_proc_init(net);
	if (err)
		goto out;
	err = tcp6_proc_init(net);
	if (err)
		goto proc_tcp6_fail;
out:
#endif
	return err;

#ifdef CONFIG_PROC_FS
proc_tcp6_fail:
	udp6_proc_exit(net);
	goto out;
#endif
}

static void inet6_net_exit(struct net *net)
{
#ifdef CONFIG_PROC_FS
	udp6_proc_exit(net);
	tcp6_proc_exit(net);
#endif
}

@@ -951,8 +961,6 @@ static int __init inet6_init(void)
	err = -ENOMEM;
	if (raw6_proc_init())
		goto proc_raw6_fail;
	if (tcp6_proc_init())
		goto proc_tcp6_fail;
	if (udplite6_proc_init())
		goto proc_udplite6_fail;
	if (ipv6_misc_proc_init())
@@ -1037,8 +1045,6 @@ static int __init inet6_init(void)
proc_misc6_fail:
	udplite6_proc_exit();
proc_udplite6_fail:
	tcp6_proc_exit();
proc_tcp6_fail:
	raw6_proc_exit();
proc_raw6_fail:
#endif
@@ -1098,7 +1104,6 @@ static void __exit inet6_exit(void)
	ac6_proc_exit();
	ipv6_misc_proc_exit();
	udplite6_proc_exit();
	tcp6_proc_exit();
	raw6_proc_exit();
#endif
	ipv6_netfilter_fini();
+4 −4
Original line number Diff line number Diff line
@@ -2129,14 +2129,14 @@ static struct tcp_seq_afinfo tcp6_seq_afinfo = {
	.seq_fops	= &tcp6_seq_fops,
};

int __init tcp6_proc_init(void)
int tcp6_proc_init(struct net *net)
{
	return tcp_proc_register(&tcp6_seq_afinfo);
	return tcp_proc_register(net, &tcp6_seq_afinfo);
}

void tcp6_proc_exit(void)
void tcp6_proc_exit(struct net *net)
{
	tcp_proc_unregister(&tcp6_seq_afinfo);
	tcp_proc_unregister(net, &tcp6_seq_afinfo);
}
#endif