diff options
-rw-r--r-- | include/linux/seq_file.h | 22 | ||||
-rw-r--r-- | include/linux/seq_file_net.h | 27 | ||||
-rw-r--r-- | include/net/net_namespace.h | 2 |
3 files changed, 29 insertions, 22 deletions
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index 5da70c3f4417..1da1e6208a0a 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h | |||
@@ -5,7 +5,6 @@ | |||
5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
6 | #include <linux/string.h> | 6 | #include <linux/string.h> |
7 | #include <linux/mutex.h> | 7 | #include <linux/mutex.h> |
8 | #include <net/net_namespace.h> | ||
9 | 8 | ||
10 | struct seq_operations; | 9 | struct seq_operations; |
11 | struct file; | 10 | struct file; |
@@ -63,26 +62,5 @@ extern struct list_head *seq_list_start_head(struct list_head *head, | |||
63 | extern struct list_head *seq_list_next(void *v, struct list_head *head, | 62 | extern struct list_head *seq_list_next(void *v, struct list_head *head, |
64 | loff_t *ppos); | 63 | loff_t *ppos); |
65 | 64 | ||
66 | #ifdef CONFIG_NET | ||
67 | struct net; | ||
68 | struct seq_net_private { | ||
69 | #ifdef CONFIG_NET_NS | ||
70 | struct net *net; | ||
71 | #endif | ||
72 | }; | ||
73 | |||
74 | int seq_open_net(struct inode *, struct file *, | ||
75 | const struct seq_operations *, int); | ||
76 | int seq_release_net(struct inode *, struct file *); | ||
77 | static inline struct net *seq_file_net(struct seq_file *seq) | ||
78 | { | ||
79 | #ifdef CONFIG_NET_NS | ||
80 | return ((struct seq_net_private *)seq->private)->net; | ||
81 | #else | ||
82 | return &init_net; | ||
83 | #endif | ||
84 | } | ||
85 | #endif /* CONFIG_NET */ | ||
86 | |||
87 | #endif | 65 | #endif |
88 | #endif | 66 | #endif |
diff --git a/include/linux/seq_file_net.h b/include/linux/seq_file_net.h new file mode 100644 index 000000000000..4ac52542a563 --- /dev/null +++ b/include/linux/seq_file_net.h | |||
@@ -0,0 +1,27 @@ | |||
1 | #ifndef __SEQ_FILE_NET_H__ | ||
2 | #define __SEQ_FILE_NET_H__ | ||
3 | |||
4 | #include <linux/seq_file.h> | ||
5 | |||
6 | struct net; | ||
7 | extern struct net init_net; | ||
8 | |||
9 | struct seq_net_private { | ||
10 | #ifdef CONFIG_NET_NS | ||
11 | struct net *net; | ||
12 | #endif | ||
13 | }; | ||
14 | |||
15 | int seq_open_net(struct inode *, struct file *, | ||
16 | const struct seq_operations *, int); | ||
17 | int seq_release_net(struct inode *, struct file *); | ||
18 | static inline struct net *seq_file_net(struct seq_file *seq) | ||
19 | { | ||
20 | #ifdef CONFIG_NET_NS | ||
21 | return ((struct seq_net_private *)seq->private)->net; | ||
22 | #else | ||
23 | return &init_net; | ||
24 | #endif | ||
25 | } | ||
26 | |||
27 | #endif | ||
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 4a37037b1d17..6c9a48a46685 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -61,6 +61,8 @@ struct net { | |||
61 | 61 | ||
62 | 62 | ||
63 | #ifdef CONFIG_NET | 63 | #ifdef CONFIG_NET |
64 | #include <linux/seq_file_net.h> | ||
65 | |||
64 | /* Init's network namespace */ | 66 | /* Init's network namespace */ |
65 | extern struct net init_net; | 67 | extern struct net init_net; |
66 | #define INIT_NET_NS(net_ns) .net_ns = &init_net, | 68 | #define INIT_NET_NS(net_ns) .net_ns = &init_net, |