root/include/linux/kobject_ns.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 // SPDX-License-Identifier: GPL-2.0
   2 /* Kernel object name space definitions
   3  *
   4  * Copyright (c) 2002-2003 Patrick Mochel
   5  * Copyright (c) 2002-2003 Open Source Development Labs
   6  * Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com>
   7  * Copyright (c) 2006-2008 Novell Inc.
   8  *
   9  * Split from kobject.h by David Howells (dhowells@redhat.com)
  10  *
  11  * Please read Documentation/kobject.txt before using the kobject
  12  * interface, ESPECIALLY the parts about reference counts and object
  13  * destructors.
  14  */
  15 
  16 #ifndef _LINUX_KOBJECT_NS_H
  17 #define _LINUX_KOBJECT_NS_H
  18 
  19 struct sock;
  20 struct kobject;
  21 
  22 /*
  23  * Namespace types which are used to tag kobjects and sysfs entries.
  24  * Network namespace will likely be the first.
  25  */
  26 enum kobj_ns_type {
  27         KOBJ_NS_TYPE_NONE = 0,
  28         KOBJ_NS_TYPE_NET,
  29         KOBJ_NS_TYPES
  30 };
  31 
  32 /*
  33  * Callbacks so sysfs can determine namespaces
  34  *   @grab_current_ns: return a new reference to calling task's namespace
  35  *   @netlink_ns: return namespace to which a sock belongs (right?)
  36  *   @initial_ns: return the initial namespace (i.e. init_net_ns)
  37  *   @drop_ns: drops a reference to namespace
  38  */
  39 struct kobj_ns_type_operations {
  40         enum kobj_ns_type type;
  41         bool (*current_may_mount)(void);
  42         void *(*grab_current_ns)(void);
  43         const void *(*netlink_ns)(struct sock *sk);
  44         const void *(*initial_ns)(void);
  45         void (*drop_ns)(void *);
  46 };
  47 
  48 int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);
  49 int kobj_ns_type_registered(enum kobj_ns_type type);
  50 const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent);
  51 const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj);
  52 
  53 bool kobj_ns_current_may_mount(enum kobj_ns_type type);
  54 void *kobj_ns_grab_current(enum kobj_ns_type type);
  55 const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk);
  56 const void *kobj_ns_initial(enum kobj_ns_type type);
  57 void kobj_ns_drop(enum kobj_ns_type type, void *ns);
  58 
  59 #endif /* _LINUX_KOBJECT_NS_H */

/* [<][>][^][v][top][bottom][index][help] */