1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef __SEQ_FILE_NET_H__
3  #define __SEQ_FILE_NET_H__
4  
5  #include <linux/seq_file.h>
6  #include <net/net_trackers.h>
7  
8  struct net;
9  extern struct net init_net;
10  
11  struct seq_net_private {
12  #ifdef CONFIG_NET_NS
13  	struct net	*net;
14  	netns_tracker	ns_tracker;
15  #endif
16  };
17  
seq_file_net(struct seq_file * seq)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  /*
28   * This one is needed for proc_create_net_single since net is stored directly
29   * in private not as a struct i.e. seq_file_net can't be used.
30   */
seq_file_single_net(struct seq_file * seq)31  static inline struct net *seq_file_single_net(struct seq_file *seq)
32  {
33  #ifdef CONFIG_NET_NS
34  	return (struct net *)seq->private;
35  #else
36  	return &init_net;
37  #endif
38  }
39  
40  #endif
41