diff options
| author | Alexey Dobriyan <adobriyan@gmail.com> | 2008-11-25 18:00:14 -0800 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-11-25 18:00:14 -0800 | 
| commit | c68cd1a01ba56995d85a4a62b195b2b3f6415c64 (patch) | |
| tree | 69351005622aced7acf9085fa5c54134419286ba /net/xfrm/xfrm_proc.c | |
| parent | 59c9940ed0ef026673cac52f2eaed77af7d486da (diff) | |
| download | olio-linux-3.10-c68cd1a01ba56995d85a4a62b195b2b3f6415c64.tar.xz olio-linux-3.10-c68cd1a01ba56995d85a4a62b195b2b3f6415c64.zip  | |
netns xfrm: /proc/net/xfrm_stat in netns
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_proc.c')
| -rw-r--r-- | net/xfrm/xfrm_proc.c | 26 | 
1 files changed, 12 insertions, 14 deletions
diff --git a/net/xfrm/xfrm_proc.c b/net/xfrm/xfrm_proc.c index 27a2ab92d87..284eaef1dbf 100644 --- a/net/xfrm/xfrm_proc.c +++ b/net/xfrm/xfrm_proc.c @@ -59,17 +59,18 @@ fold_field(void *mib[], int offt)  static int xfrm_statistics_seq_show(struct seq_file *seq, void *v)  { +	struct net *net = seq->private;  	int i;  	for (i=0; xfrm_mib_list[i].name; i++)  		seq_printf(seq, "%-24s\t%lu\n", xfrm_mib_list[i].name, -			   fold_field((void **)init_net.mib.xfrm_statistics, +			   fold_field((void **)net->mib.xfrm_statistics,  				      xfrm_mib_list[i].entry));  	return 0;  }  static int xfrm_statistics_seq_open(struct inode *inode, struct file *file)  { -	return single_open(file, xfrm_statistics_seq_show, NULL); +	return single_open_net(inode, file, xfrm_statistics_seq_show);  }  static struct file_operations xfrm_statistics_seq_fops = { @@ -77,21 +78,18 @@ static struct file_operations xfrm_statistics_seq_fops = {  	.open	 = xfrm_statistics_seq_open,  	.read	 = seq_read,  	.llseek	 = seq_lseek, -	.release = single_release, +	.release = single_release_net,  }; -int __init xfrm_proc_init(void) +int __net_init xfrm_proc_init(struct net *net)  { -	int rc = 0; - -	if (!proc_net_fops_create(&init_net, "xfrm_stat", S_IRUGO, +	if (!proc_net_fops_create(net, "xfrm_stat", S_IRUGO,  				  &xfrm_statistics_seq_fops)) -		goto stat_fail; - - out: -	return rc; +		return -ENOMEM; +	return 0; +} - stat_fail: -	rc = -ENOMEM; -	goto out; +void xfrm_proc_fini(struct net *net) +{ +	proc_net_remove(net, "xfrm_stat");  }  |