conf: make it more obvious how auto-mount flags are defined

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner 2021-10-21 15:44:58 +02:00
parent 94e0a5292f
commit 62054cf35e
No known key found for this signature in database
GPG Key ID: 8EB056D53EECB12D
2 changed files with 51 additions and 21 deletions

View File

@ -253,35 +253,63 @@ struct lxc_rootfs {
* Automatic mounts for LXC to perform inside the container * Automatic mounts for LXC to perform inside the container
*/ */
enum { enum {
LXC_AUTO_PROC_RW = 0x001, /* /proc read-write */ /* /proc read-write */
LXC_AUTO_PROC_MIXED = 0x002, /* /proc/sys and /proc/sysrq-trigger read-only */ LXC_AUTO_PROC_RW = BIT(0),
LXC_AUTO_PROC_MASK = 0x003, /* /proc/sys and /proc/sysrq-trigger read-only */
LXC_AUTO_PROC_MIXED = BIT(1),
LXC_AUTO_PROC_MASK = LXC_AUTO_PROC_RW |
LXC_AUTO_PROC_MIXED,
/* /sys read-write */
LXC_AUTO_SYS_RW = BIT(2),
/* /sys read-only */
LXC_AUTO_SYS_RO = BIT(3),
/* /sys read-only and /sys/class/net read-write */
LXC_AUTO_SYS_MIXED = LXC_AUTO_SYS_RW |
LXC_AUTO_SYS_RO,
LXC_AUTO_SYS_MASK = LXC_AUTO_SYS_MIXED,
LXC_AUTO_SYS_RW = 0x004, /* /sys */ /* /sys/fs/cgroup (partial mount, read-only) */
LXC_AUTO_SYS_RO = 0x008, /* /sys read-only */ LXC_AUTO_CGROUP_RO = BIT(4),
LXC_AUTO_SYS_MIXED = 0x00C, /* /sys read-only and /sys/class/net read-write */ /* /sys/fs/cgroup (partial mount, read-write) */
LXC_AUTO_SYS_MASK = 0x00C, LXC_AUTO_CGROUP_RW = BIT(5),
/* /sys/fs/cgroup (partial mount, paths r/o, cgroup r/w) */
LXC_AUTO_CGROUP_RO = 0x010, /* /sys/fs/cgroup (partial mount, read-only) */ LXC_AUTO_CGROUP_MIXED = LXC_AUTO_CGROUP_RO |
LXC_AUTO_CGROUP_RW = 0x020, /* /sys/fs/cgroup (partial mount, read-write) */ LXC_AUTO_CGROUP_RW,
LXC_AUTO_CGROUP_MIXED = 0x030, /* /sys/fs/cgroup (partial mount, paths r/o, cgroup r/w) */ /* /sys/fs/cgroup (full mount, read-only) */
LXC_AUTO_CGROUP_FULL_RO = 0x040, /* /sys/fs/cgroup (full mount, read-only) */ LXC_AUTO_CGROUP_FULL_RO = BIT(6),
LXC_AUTO_CGROUP_FULL_RW = 0x050, /* /sys/fs/cgroup (full mount, read-write) */ /* /sys/fs/cgroup (full mount, read-write) */
LXC_AUTO_CGROUP_FULL_MIXED = 0x060, /* /sys/fs/cgroup (full mount, parent r/o, own r/w) */ LXC_AUTO_CGROUP_FULL_RW = BIT(7),
/* /sys/fs/cgroup (full mount, parent r/o, own r/w) */
LXC_AUTO_CGROUP_FULL_MIXED = LXC_AUTO_CGROUP_FULL_RO |
LXC_AUTO_CGROUP_FULL_RW,
/* /*
* These are defined in such a way as to retain binary compatibility * These are defined in such a way as to retain binary compatibility
* with earlier versions of this code. If the previous mask is applied, * with earlier versions of this code. If the previous mask is applied,
* both of these will default back to the _MIXED variants, which is * both of these will default back to the _MIXED variants, which is
* safe. * safe.
*/ */
LXC_AUTO_CGROUP_NOSPEC = 0x0B0, /* /sys/fs/cgroup (partial mount, r/w or mixed, depending on caps) */ /* /sys/fs/cgroup (partial mount, r/w or mixed, depending on caps) */
LXC_AUTO_CGROUP_FULL_NOSPEC = 0x0E0, /* /sys/fs/cgroup (full mount, r/w or mixed, depending on caps) */ LXC_AUTO_CGROUP_NOSPEC = 0x0B0,
LXC_AUTO_CGROUP_FORCE = 0x100, /* mount cgroups even when cgroup namespaces are supported */ /* /sys/fs/cgroup (full mount, r/w or mixed, depending on caps) */
LXC_AUTO_CGROUP_MASK = 0x1F0, /* all known cgroup options */ LXC_AUTO_CGROUP_FULL_NOSPEC = 0x0E0,
/* mount cgroups even when cgroup namespaces are supported */
LXC_AUTO_CGROUP_FORCE = BIT(8),
/* all known cgroup options */
LXC_AUTO_CGROUP_MASK = LXC_AUTO_CGROUP_MIXED |
LXC_AUTO_CGROUP_FULL_MIXED |
LXC_AUTO_CGROUP_NOSPEC |
LXC_AUTO_CGROUP_FULL_NOSPEC |
LXC_AUTO_CGROUP_FORCE,
LXC_AUTO_SHMOUNTS = 0x200, /* shared mount point */ /* shared mount point */
LXC_AUTO_SHMOUNTS_MASK = 0x200, /* shared mount point mask */ LXC_AUTO_SHMOUNTS = BIT(9),
LXC_AUTO_ALL_MASK = 0x1FF, /* all known settings */ /* shared mount point mask */
LXC_AUTO_SHMOUNTS_MASK = LXC_AUTO_SHMOUNTS,
/* all known settings */
LXC_AUTO_ALL_MASK = LXC_AUTO_PROC_MASK |
LXC_AUTO_SYS_MASK |
LXC_AUTO_CGROUP_MASK,
}; };
enum lxchooks { enum lxchooks {

View File

@ -785,4 +785,6 @@ static inline bool is_set(__u32 bit, __u32 *bitarr)
return (bitarr[bit / NBITS] & ((__u32)1 << (bit % NBITS))) != 0; return (bitarr[bit / NBITS] & ((__u32)1 << (bit % NBITS))) != 0;
} }
#define BIT(nr) (1UL << (nr))
#endif /* __LXC_MACRO_H */ #endif /* __LXC_MACRO_H */