at v6.18 2.3 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef __LINUX_NSFS_H 3#define __LINUX_NSFS_H 4 5#include <linux/ioctl.h> 6#include <linux/types.h> 7 8#define NSIO 0xb7 9 10/* Returns a file descriptor that refers to an owning user namespace */ 11#define NS_GET_USERNS _IO(NSIO, 0x1) 12/* Returns a file descriptor that refers to a parent namespace */ 13#define NS_GET_PARENT _IO(NSIO, 0x2) 14/* Returns the type of namespace (CLONE_NEW* value) referred to by 15 file descriptor */ 16#define NS_GET_NSTYPE _IO(NSIO, 0x3) 17/* Get owner UID (in the caller's user namespace) for a user namespace */ 18#define NS_GET_OWNER_UID _IO(NSIO, 0x4) 19/* Translate pid from target pid namespace into the caller's pid namespace. */ 20#define NS_GET_PID_FROM_PIDNS _IOR(NSIO, 0x6, int) 21/* Return thread-group leader id of pid in the callers pid namespace. */ 22#define NS_GET_TGID_FROM_PIDNS _IOR(NSIO, 0x7, int) 23/* Translate pid from caller's pid namespace into a target pid namespace. */ 24#define NS_GET_PID_IN_PIDNS _IOR(NSIO, 0x8, int) 25/* Return thread-group leader id of pid in the target pid namespace. */ 26#define NS_GET_TGID_IN_PIDNS _IOR(NSIO, 0x9, int) 27 28struct mnt_ns_info { 29 __u32 size; 30 __u32 nr_mounts; 31 __u64 mnt_ns_id; 32}; 33 34#define MNT_NS_INFO_SIZE_VER0 16 /* size of first published struct */ 35 36/* Get information about namespace. */ 37#define NS_MNT_GET_INFO _IOR(NSIO, 10, struct mnt_ns_info) 38/* Get next namespace. */ 39#define NS_MNT_GET_NEXT _IOR(NSIO, 11, struct mnt_ns_info) 40/* Get previous namespace. */ 41#define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info) 42 43/* Retrieve namespace identifiers. */ 44#define NS_GET_MNTNS_ID _IOR(NSIO, 5, __u64) 45#define NS_GET_ID _IOR(NSIO, 13, __u64) 46 47enum init_ns_ino { 48 IPC_NS_INIT_INO = 0xEFFFFFFFU, 49 UTS_NS_INIT_INO = 0xEFFFFFFEU, 50 USER_NS_INIT_INO = 0xEFFFFFFDU, 51 PID_NS_INIT_INO = 0xEFFFFFFCU, 52 CGROUP_NS_INIT_INO = 0xEFFFFFFBU, 53 TIME_NS_INIT_INO = 0xEFFFFFFAU, 54 NET_NS_INIT_INO = 0xEFFFFFF9U, 55 MNT_NS_INIT_INO = 0xEFFFFFF8U, 56#ifdef __KERNEL__ 57 MNT_NS_ANON_INO = 0xEFFFFFF7U, 58#endif 59}; 60 61struct nsfs_file_handle { 62 __u64 ns_id; 63 __u32 ns_type; 64 __u32 ns_inum; 65}; 66 67#define NSFS_FILE_HANDLE_SIZE_VER0 16 /* sizeof first published struct */ 68#define NSFS_FILE_HANDLE_SIZE_LATEST sizeof(struct nsfs_file_handle) /* sizeof latest published struct */ 69 70#endif /* __LINUX_NSFS_H */