diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 22 | 
1 files changed, 12 insertions, 10 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 0ea10eefa60..939c55eceb5 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -2339,7 +2339,7 @@ static void tcp_seq_stop(struct seq_file *seq, void *v)  	}  } -static int tcp_seq_open(struct inode *inode, struct file *file) +int tcp_seq_open(struct inode *inode, struct file *file)  {  	struct tcp_seq_afinfo *afinfo = PDE(inode)->data;  	struct tcp_iter_state *s; @@ -2355,23 +2355,19 @@ static int tcp_seq_open(struct inode *inode, struct file *file)  	s->last_pos 		= 0;  	return 0;  } +EXPORT_SYMBOL(tcp_seq_open);  int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo)  {  	int rc = 0;  	struct proc_dir_entry *p; -	afinfo->seq_fops.open		= tcp_seq_open; -	afinfo->seq_fops.read		= seq_read; -	afinfo->seq_fops.llseek		= seq_lseek; -	afinfo->seq_fops.release	= seq_release_net; -  	afinfo->seq_ops.start		= tcp_seq_start;  	afinfo->seq_ops.next		= tcp_seq_next;  	afinfo->seq_ops.stop		= tcp_seq_stop;  	p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, -			     &afinfo->seq_fops, afinfo); +			     afinfo->seq_fops, afinfo);  	if (!p)  		rc = -ENOMEM;  	return rc; @@ -2520,12 +2516,18 @@ out:  	return 0;  } +static const struct file_operations tcp_afinfo_seq_fops = { +	.owner   = THIS_MODULE, +	.open    = tcp_seq_open, +	.read    = seq_read, +	.llseek  = seq_lseek, +	.release = seq_release_net +}; +  static struct tcp_seq_afinfo tcp4_seq_afinfo = {  	.name		= "tcp",  	.family		= AF_INET, -	.seq_fops	= { -		.owner		= THIS_MODULE, -	}, +	.seq_fops	= &tcp_afinfo_seq_fops,  	.seq_ops	= {  		.show		= tcp4_seq_show,  	},  |