diff options
Diffstat (limited to 'include/net/net_namespace.h')
| -rw-r--r-- | include/net/net_namespace.h | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 95e646641184..de644bcd8613 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -23,6 +23,7 @@  #endif  #include <net/netns/xfrm.h> +struct user_namespace;  struct proc_dir_entry;  struct net_device;  struct sock; @@ -53,6 +54,10 @@ struct net {  	struct list_head	cleanup_list;	/* namespaces on death row */  	struct list_head	exit_list;	/* Use only net_mutex */ +	struct user_namespace   *user_ns;	/* Owning user namespace */ + +	unsigned int		proc_inum; +  	struct proc_dir_entry 	*proc_net;  	struct proc_dir_entry 	*proc_net_stat; @@ -126,16 +131,21 @@ struct net {  /* Init's network namespace */  extern struct net init_net; -#ifdef CONFIG_NET -extern struct net *copy_net_ns(unsigned long flags, struct net *net_ns); - -#else /* CONFIG_NET */ -static inline struct net *copy_net_ns(unsigned long flags, struct net *net_ns) +#ifdef CONFIG_NET_NS +extern struct net *copy_net_ns(unsigned long flags, +	struct user_namespace *user_ns, struct net *old_net); + +#else /* CONFIG_NET_NS */ +#include <linux/sched.h> +#include <linux/nsproxy.h> +static inline struct net *copy_net_ns(unsigned long flags, +	struct user_namespace *user_ns, struct net *old_net)  { -	/* There is nothing to copy so this is a noop */ -	return net_ns; +	if (flags & CLONE_NEWNET) +		return ERR_PTR(-EINVAL); +	return old_net;  } -#endif /* CONFIG_NET */ +#endif /* CONFIG_NET_NS */  extern struct list_head net_namespace_list; |