Skip to content

Commit

Permalink
conf: make it more obvious how auto-mount flags are defined
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Oct 25, 2021
1 parent 429233c commit 1505f07
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 23 deletions.
74 changes: 51 additions & 23 deletions src/lxc/conf.h
Expand Up @@ -253,35 +253,63 @@ struct lxc_rootfs {
* Automatic mounts for LXC to perform inside the container
*/
enum {
LXC_AUTO_PROC_RW = 0x001, /* /proc read-write */
LXC_AUTO_PROC_MIXED = 0x002, /* /proc/sys and /proc/sysrq-trigger read-only */
LXC_AUTO_PROC_MASK = 0x003,

LXC_AUTO_SYS_RW = 0x004, /* /sys */
LXC_AUTO_SYS_RO = 0x008, /* /sys read-only */
LXC_AUTO_SYS_MIXED = 0x00C, /* /sys read-only and /sys/class/net read-write */
LXC_AUTO_SYS_MASK = 0x00C,

LXC_AUTO_CGROUP_RO = 0x010, /* /sys/fs/cgroup (partial mount, read-only) */
LXC_AUTO_CGROUP_RW = 0x020, /* /sys/fs/cgroup (partial mount, read-write) */
LXC_AUTO_CGROUP_MIXED = 0x030, /* /sys/fs/cgroup (partial mount, paths r/o, cgroup r/w) */
LXC_AUTO_CGROUP_FULL_RO = 0x040, /* /sys/fs/cgroup (full mount, read-only) */
LXC_AUTO_CGROUP_FULL_RW = 0x050, /* /sys/fs/cgroup (full mount, read-write) */
LXC_AUTO_CGROUP_FULL_MIXED = 0x060, /* /sys/fs/cgroup (full mount, parent r/o, own r/w) */
/* /proc read-write */
LXC_AUTO_PROC_RW = BIT(0),
/* /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,

/* /sys/fs/cgroup (partial mount, read-only) */
LXC_AUTO_CGROUP_RO = BIT(4),
/* /sys/fs/cgroup (partial mount, read-write) */
LXC_AUTO_CGROUP_RW = BIT(5),
/* /sys/fs/cgroup (partial mount, paths r/o, cgroup r/w) */
LXC_AUTO_CGROUP_MIXED = LXC_AUTO_CGROUP_RO |
LXC_AUTO_CGROUP_RW,
/* /sys/fs/cgroup (full mount, read-only) */
LXC_AUTO_CGROUP_FULL_RO = BIT(6),
/* /sys/fs/cgroup (full mount, read-write) */
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
* with earlier versions of this code. If the previous mask is applied,
* both of these will default back to the _MIXED variants, which is
* safe.
*/
LXC_AUTO_CGROUP_NOSPEC = 0x0B0, /* /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_FORCE = 0x100, /* mount cgroups even when cgroup namespaces are supported */
LXC_AUTO_CGROUP_MASK = 0x1F0, /* all known cgroup options */

LXC_AUTO_SHMOUNTS = 0x200, /* shared mount point */
LXC_AUTO_SHMOUNTS_MASK = 0x200, /* shared mount point mask */
LXC_AUTO_ALL_MASK = 0x1FF, /* all known settings */
/* /sys/fs/cgroup (partial mount, r/w or mixed, depending on caps) */
LXC_AUTO_CGROUP_NOSPEC = 0x0B0,
/* /sys/fs/cgroup (full mount, r/w or mixed, depending on caps) */
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,

/* shared mount point */
LXC_AUTO_SHMOUNTS = BIT(9),
/* 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 {
Expand Down
2 changes: 2 additions & 0 deletions src/lxc/macro.h
Expand Up @@ -785,4 +785,6 @@ static inline bool is_set(__u32 bit, __u32 *bitarr)
return (bitarr[bit / NBITS] & ((__u32)1 << (bit % NBITS))) != 0;
}

#define BIT(nr) (1UL << (nr))

#endif /* __LXC_MACRO_H */

0 comments on commit 1505f07

Please sign in to comment.