Lines Matching defs:net

18 #include <net/net_namespace.h>
19 #include <net/netns/generic.h>
32 struct net init_net = {
53 static int net_assign_generic(struct net *net, int id, void *data)
60 old_ng = rcu_dereference_protected(net->gen,
73 * The net_generic explores the net->gen array inside rcu
74 * read section. Besides once set the net->gen->ptr[x]
83 rcu_assign_pointer(net->gen, ng);
90 static int ops_init(const struct pernet_operations *ops, struct net *net)
100 err = net_assign_generic(net, *ops->id, data);
106 err = ops->init(net);
117 static void ops_free(const struct pernet_operations *ops, struct net *net)
121 kfree(net_generic(net, id));
128 struct net *net;
130 list_for_each_entry(net, net_exit_list, exit_list)
131 ops->exit(net);
140 struct net *net;
142 list_for_each_entry(net, net_exit_list, exit_list)
143 ops_free(ops, net);
150 static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
157 atomic_set(&net->count, 1);
158 atomic_set(&net->passive, 1);
159 net->dev_base_seq = 1;
160 net->user_ns = user_ns;
163 atomic_set(&net->use_count, 0);
167 error = ops_init(ops, net);
178 list_add(&net->exit_list, &net_exit_list);
196 static struct net *net_alloc(void)
198 struct net *net = NULL;
205 net = kmem_cache_zalloc(net_cachep, GFP_KERNEL);
206 if (!net)
209 rcu_assign_pointer(net->gen, ng);
211 return net;
218 static void net_free(struct net *net)
221 if (unlikely(atomic_read(&net->use_count) != 0)) {
223 atomic_read(&net->use_count));
227 kfree(rcu_access_pointer(net->gen));
228 kmem_cache_free(net_cachep, net);
233 struct net *ns = p;
238 struct net *copy_net_ns(unsigned long flags,
239 struct user_namespace *user_ns, struct net *old_net)
241 struct net *net;
247 net = net_alloc();
248 if (!net)
254 rv = setup_net(net, user_ns);
257 list_add_tail_rcu(&net->list, &net_namespace_list);
263 net_drop_ns(net);
266 return net;
275 struct net *net, *tmp;
288 list_for_each_entry(net, &net_kill_list, cleanup_list) {
289 list_del_rcu(&net->list);
290 list_add_tail(&net->exit_list, &net_exit_list);
305 /* Free the net generic variables */
317 list_for_each_entry_safe(net, tmp, &net_exit_list, exit_list) {
318 list_del_init(&net->exit_list);
319 put_user_ns(net->user_ns);
320 net_drop_ns(net);
325 void __put_net(struct net *net)
331 list_add(&net->cleanup_list, &cleanup_list);
338 struct net *get_net_ns_by_fd(int fd)
342 struct net *net;
350 net = get_net(ei->ns);
352 net = ERR_PTR(-EINVAL);
355 return net;
359 struct net *get_net_ns_by_fd(int fd)
365 struct net *get_net_ns_by_pid(pid_t pid)
368 struct net *net;
371 net = ERR_PTR(-ESRCH);
379 net = get_net(nsproxy->net_ns);
383 return net;
387 static __net_init int net_ns_net_init(struct net *net)
389 return proc_alloc_inum(&net->proc_inum);
392 static __net_exit void net_ns_net_exit(struct net *net)
394 proc_free_inum(net->proc_inum);
407 net_cachep = kmem_cache_create("net_namespace", sizeof(struct net),
444 struct net *net;
450 for_each_net(net) {
451 error = ops_init(ops, net);
454 list_add_tail(&net->exit_list, &net_exit_list);
469 struct net *net;
473 for_each_net(net)
474 list_add_tail(&net->exit_list, &net_exit_list);
634 struct net *net = NULL;
640 net = get_net(nsproxy->net_ns);
643 return net;
653 struct net *net = ns;
655 if (!ns_capable(net->user_ns, CAP_SYS_ADMIN) ||
660 nsproxy->net_ns = get_net(net);
666 struct net *net = ns;
667 return net->proc_inum;
671 .name = "net",