[RAW]: Wrong content of the /proc/net/raw6.
Denis V. Lunev [Thu, 31 Jan 2008 11:48:55 +0000 (03:48 -0800)]
The address of IPv6 raw sockets was shown in the wrong format, from
IPv4 ones.  The problem has been introduced by the commit
42a73808ed4f30b739eb52bcbb33a02fe62ceef5 ("[RAW]: Consolidate proc
interface.")

Thanks to Adrian Bunk who originally noticed the problem.

Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

include/net/raw.h
net/ipv4/raw.c
net/ipv6/raw.c

index c7ea7a2..1828f81 100644 (file)
@@ -48,7 +48,8 @@ struct raw_iter_state {
 void *raw_seq_start(struct seq_file *seq, loff_t *pos);
 void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
 void raw_seq_stop(struct seq_file *seq, void *v);
-int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h);
+int raw_seq_open(struct inode *ino, struct file *file,
+                struct raw_hashinfo *h, const struct seq_operations *ops);
 
 #endif
 
index 830f19e..a3002fe 100644 (file)
@@ -962,13 +962,13 @@ static const struct seq_operations raw_seq_ops = {
        .show  = raw_seq_show,
 };
 
-int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h)
+int raw_seq_open(struct inode *ino, struct file *file,
+                struct raw_hashinfo *h, const struct seq_operations *ops)
 {
        int err;
        struct raw_iter_state *i;
 
-       err = seq_open_net(ino, file, &raw_seq_ops,
-                       sizeof(struct raw_iter_state));
+       err = seq_open_net(ino, file, ops, sizeof(struct raw_iter_state));
        if (err < 0)
                return err;
 
@@ -980,7 +980,7 @@ EXPORT_SYMBOL_GPL(raw_seq_open);
 
 static int raw_v4_seq_open(struct inode *inode, struct file *file)
 {
-       return raw_seq_open(inode, file, &raw_v4_hashinfo);
+       return raw_seq_open(inode, file, &raw_v4_hashinfo, &raw_seq_ops);
 }
 
 static const struct file_operations raw_seq_fops = {
index a2cf499..8897ccf 100644 (file)
@@ -1262,7 +1262,7 @@ static const struct seq_operations raw6_seq_ops = {
 
 static int raw6_seq_open(struct inode *inode, struct file *file)
 {
-       return raw_seq_open(inode, file, &raw_v6_hashinfo);
+       return raw_seq_open(inode, file, &raw_v6_hashinfo, &raw6_seq_ops);
 }
 
 static const struct file_operations raw6_seq_fops = {