|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef __SEQ_FILE_NET_H__ | 
|  | #define __SEQ_FILE_NET_H__ | 
|  |  | 
|  | #include <linux/seq_file.h> | 
|  |  | 
|  | struct net; | 
|  | extern struct net init_net; | 
|  |  | 
|  | struct seq_net_private { | 
|  | #ifdef CONFIG_NET_NS | 
|  | struct net *net; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | static inline struct net *seq_file_net(struct seq_file *seq) | 
|  | { | 
|  | #ifdef CONFIG_NET_NS | 
|  | return ((struct seq_net_private *)seq->private)->net; | 
|  | #else | 
|  | return &init_net; | 
|  | #endif | 
|  | } | 
|  |  | 
|  | /* | 
|  | * This one is needed for proc_create_net_single since net is stored directly | 
|  | * in private not as a struct i.e. seq_file_net can't be used. | 
|  | */ | 
|  | static inline struct net *seq_file_single_net(struct seq_file *seq) | 
|  | { | 
|  | #ifdef CONFIG_NET_NS | 
|  | return (struct net *)seq->private; | 
|  | #else | 
|  | return &init_net; | 
|  | #endif | 
|  | } | 
|  |  | 
|  | #endif |