| 1 |
|
| 2 |
|
| 3 | #ifndef __SAMPLES_VFS_H
|
| 4 | #define __SAMPLES_VFS_H
|
| 5 |
|
| 6 | #include <errno.h>
|
| 7 | #include <linux/types.h>
|
| 8 | #include <sys/ioctl.h>
|
| 9 | #include <sys/syscall.h>
|
| 10 |
|
| 11 | #define die_errno(format, ...) \
|
| 12 | do { \
|
| 13 | fprintf(stderr, "%m | %s: %d: %s: " format "\n", __FILE__, \
|
| 14 | __LINE__, __func__, ##__VA_ARGS__); \
|
| 15 | exit(EXIT_FAILURE); \
|
| 16 | } while (0)
|
| 17 |
|
| 18 | struct statmount {
|
| 19 | __u32 size;
|
| 20 | __u32 mnt_opts;
|
| 21 | __u64 mask;
|
| 22 | __u32 sb_dev_major;
|
| 23 | __u32 sb_dev_minor;
|
| 24 | __u64 sb_magic;
|
| 25 | __u32 sb_flags;
|
| 26 | __u32 fs_type;
|
| 27 | __u64 mnt_id;
|
| 28 | __u64 mnt_parent_id;
|
| 29 | __u32 mnt_id_old;
|
| 30 | __u32 mnt_parent_id_old;
|
| 31 | __u64 mnt_attr;
|
| 32 | __u64 mnt_propagation;
|
| 33 | __u64 mnt_peer_group;
|
| 34 | __u64 mnt_master;
|
| 35 | __u64 propagate_from;
|
| 36 | __u32 mnt_root;
|
| 37 | __u32 mnt_point;
|
| 38 | __u64 mnt_ns_id;
|
| 39 | __u32 fs_subtype;
|
| 40 | __u32 sb_source;
|
| 41 | __u32 opt_num;
|
| 42 | __u32 opt_array;
|
| 43 | __u32 opt_sec_num;
|
| 44 | __u32 opt_sec_array;
|
| 45 | __u32 mnt_uidmap_num;
|
| 46 | __u32 mnt_uidmap;
|
| 47 | __u32 mnt_gidmap_num;
|
| 48 | __u32 mnt_gidmap;
|
| 49 | __u64 __spare2[44];
|
| 50 | char str[];
|
| 51 | };
|
| 52 |
|
| 53 | struct mnt_id_req {
|
| 54 | __u32 size;
|
| 55 | __u32 spare;
|
| 56 | __u64 mnt_id;
|
| 57 | __u64 param;
|
| 58 | __u64 mnt_ns_id;
|
| 59 | };
|
| 60 |
|
| 61 | #ifndef MNT_ID_REQ_SIZE_VER0
|
| 62 | #define MNT_ID_REQ_SIZE_VER0 24
|
| 63 | #endif
|
| 64 |
|
| 65 | #ifndef MNT_ID_REQ_SIZE_VER1
|
| 66 | #define MNT_ID_REQ_SIZE_VER1 32
|
| 67 | #endif
|
| 68 |
|
| 69 |
|
| 70 | #ifndef NS_GET_MNTNS_ID
|
| 71 | #define NS_GET_MNTNS_ID _IO(0xb7, 0x5)
|
| 72 | #endif
|
| 73 |
|
| 74 | struct mnt_ns_info {
|
| 75 | __u32 size;
|
| 76 | __u32 nr_mounts;
|
| 77 | __u64 mnt_ns_id;
|
| 78 | };
|
| 79 |
|
| 80 | #ifndef MNT_NS_INFO_SIZE_VER0
|
| 81 | #define MNT_NS_INFO_SIZE_VER0 16
|
| 82 | #endif
|
| 83 |
|
| 84 | #ifndef NS_MNT_GET_INFO
|
| 85 | #define NS_MNT_GET_INFO _IOR(0xb7, 10, struct mnt_ns_info)
|
| 86 | #endif
|
| 87 |
|
| 88 | #ifndef NS_MNT_GET_NEXT
|
| 89 | #define NS_MNT_GET_NEXT _IOR(0xb7, 11, struct mnt_ns_info)
|
| 90 | #endif
|
| 91 |
|
| 92 | #ifndef NS_MNT_GET_PREV
|
| 93 | #define NS_MNT_GET_PREV _IOR(0xb7, 12, struct mnt_ns_info)
|
| 94 | #endif
|
| 95 |
|
| 96 | #ifndef PIDFD_GET_MNT_NAMESPACE
|
| 97 | #define PIDFD_GET_MNT_NAMESPACE _IO(0xFF, 3)
|
| 98 | #endif
|
| 99 |
|
| 100 | #ifndef __NR_listmount
|
| 101 | #define __NR_listmount 458
|
| 102 | #endif
|
| 103 |
|
| 104 | #ifndef __NR_statmount
|
| 105 | #define __NR_statmount 457
|
| 106 | #endif
|
| 107 |
|
| 108 | #ifndef LSMT_ROOT
|
| 109 | #define LSMT_ROOT 0xffffffffffffffff
|
| 110 | #endif
|
| 111 |
|
| 112 |
|
| 113 | #ifndef STATMOUNT_SB_BASIC
|
| 114 | #define STATMOUNT_SB_BASIC 0x00000001U
|
| 115 | #endif
|
| 116 |
|
| 117 | #ifndef STATMOUNT_MNT_BASIC
|
| 118 | #define STATMOUNT_MNT_BASIC 0x00000002U
|
| 119 | #endif
|
| 120 |
|
| 121 | #ifndef STATMOUNT_PROPAGATE_FROM
|
| 122 | #define STATMOUNT_PROPAGATE_FROM 0x00000004U
|
| 123 | #endif
|
| 124 |
|
| 125 | #ifndef STATMOUNT_MNT_ROOT
|
| 126 | #define STATMOUNT_MNT_ROOT 0x00000008U
|
| 127 | #endif
|
| 128 |
|
| 129 | #ifndef STATMOUNT_MNT_POINT
|
| 130 | #define STATMOUNT_MNT_POINT 0x00000010U
|
| 131 | #endif
|
| 132 |
|
| 133 | #ifndef STATMOUNT_FS_TYPE
|
| 134 | #define STATMOUNT_FS_TYPE 0x00000020U
|
| 135 | #endif
|
| 136 |
|
| 137 | #ifndef STATMOUNT_MNT_NS_ID
|
| 138 | #define STATMOUNT_MNT_NS_ID 0x00000040U
|
| 139 | #endif
|
| 140 |
|
| 141 | #ifndef STATMOUNT_MNT_OPTS
|
| 142 | #define STATMOUNT_MNT_OPTS 0x00000080U
|
| 143 | #endif
|
| 144 |
|
| 145 | #ifndef STATMOUNT_FS_SUBTYPE
|
| 146 | #define STATMOUNT_FS_SUBTYPE 0x00000100U
|
| 147 | #endif
|
| 148 |
|
| 149 | #ifndef STATMOUNT_SB_SOURCE
|
| 150 | #define STATMOUNT_SB_SOURCE 0x00000200U
|
| 151 | #endif
|
| 152 |
|
| 153 | #ifndef STATMOUNT_OPT_ARRAY
|
| 154 | #define STATMOUNT_OPT_ARRAY 0x00000400U
|
| 155 | #endif
|
| 156 |
|
| 157 | #ifndef STATMOUNT_OPT_SEC_ARRAY
|
| 158 | #define STATMOUNT_OPT_SEC_ARRAY 0x00000800U
|
| 159 | #endif
|
| 160 |
|
| 161 | #ifndef STATX_MNT_ID_UNIQUE
|
| 162 | #define STATX_MNT_ID_UNIQUE 0x00004000U
|
| 163 | #endif
|
| 164 |
|
| 165 | #ifndef STATMOUNT_MNT_UIDMAP
|
| 166 | #define STATMOUNT_MNT_UIDMAP 0x00002000U
|
| 167 | #endif
|
| 168 |
|
| 169 | #ifndef STATMOUNT_MNT_GIDMAP
|
| 170 | #define STATMOUNT_MNT_GIDMAP 0x00004000U
|
| 171 | #endif
|
| 172 |
|
| 173 | #ifndef MOUNT_ATTR_RDONLY
|
| 174 | #define MOUNT_ATTR_RDONLY 0x00000001
|
| 175 | #endif
|
| 176 |
|
| 177 | #ifndef MOUNT_ATTR_NOSUID
|
| 178 | #define MOUNT_ATTR_NOSUID 0x00000002
|
| 179 | #endif
|
| 180 |
|
| 181 | #ifndef MOUNT_ATTR_NODEV
|
| 182 | #define MOUNT_ATTR_NODEV 0x00000004
|
| 183 | #endif
|
| 184 |
|
| 185 | #ifndef MOUNT_ATTR_NOEXEC
|
| 186 | #define MOUNT_ATTR_NOEXEC 0x00000008
|
| 187 | #endif
|
| 188 |
|
| 189 | #ifndef MOUNT_ATTR__ATIME
|
| 190 | #define MOUNT_ATTR__ATIME 0x00000070
|
| 191 | #endif
|
| 192 |
|
| 193 | #ifndef MOUNT_ATTR_RELATIME
|
| 194 | #define MOUNT_ATTR_RELATIME 0x00000000
|
| 195 | #endif
|
| 196 |
|
| 197 | #ifndef MOUNT_ATTR_NOATIME
|
| 198 | #define MOUNT_ATTR_NOATIME 0x00000010
|
| 199 | #endif
|
| 200 |
|
| 201 | #ifndef MOUNT_ATTR_STRICTATIME
|
| 202 | #define MOUNT_ATTR_STRICTATIME 0x00000020
|
| 203 | #endif
|
| 204 |
|
| 205 | #ifndef MOUNT_ATTR_NODIRATIME
|
| 206 | #define MOUNT_ATTR_NODIRATIME 0x00000080
|
| 207 | #endif
|
| 208 |
|
| 209 | #ifndef MOUNT_ATTR_IDMAP
|
| 210 | #define MOUNT_ATTR_IDMAP 0x00100000
|
| 211 | #endif
|
| 212 |
|
| 213 | #ifndef MOUNT_ATTR_NOSYMFOLLOW
|
| 214 | #define MOUNT_ATTR_NOSYMFOLLOW 0x00200000
|
| 215 | #endif
|
| 216 |
|
| 217 | #ifndef MS_RDONLY
|
| 218 | #define MS_RDONLY 1
|
| 219 | #endif
|
| 220 |
|
| 221 | #ifndef MS_SYNCHRONOUS
|
| 222 | #define MS_SYNCHRONOUS 16
|
| 223 | #endif
|
| 224 |
|
| 225 | #ifndef MS_MANDLOCK
|
| 226 | #define MS_MANDLOCK 64
|
| 227 | #endif
|
| 228 |
|
| 229 | #ifndef MS_DIRSYNC
|
| 230 | #define MS_DIRSYNC 128
|
| 231 | #endif
|
| 232 |
|
| 233 | #ifndef MS_UNBINDABLE
|
| 234 | #define MS_UNBINDABLE (1<<17)
|
| 235 | #endif
|
| 236 |
|
| 237 | #ifndef MS_PRIVATE
|
| 238 | #define MS_PRIVATE (1<<18)
|
| 239 | #endif
|
| 240 |
|
| 241 | #ifndef MS_SLAVE
|
| 242 | #define MS_SLAVE (1<<19)
|
| 243 | #endif
|
| 244 |
|
| 245 | #ifndef MS_SHARED
|
| 246 | #define MS_SHARED (1<<20)
|
| 247 | #endif
|
| 248 |
|
| 249 | #ifndef MS_LAZYTIME
|
| 250 | #define MS_LAZYTIME (1<<25)
|
| 251 | #endif
|
| 252 |
|
| 253 | #endif
|