]> git.ipfire.org Git - thirdparty/util-linux.git/blob - include/namespace.h
libmount: check for linux/mount.h
[thirdparty/util-linux.git] / include / namespace.h
1
2 /*
3 * No copyright is claimed. This code is in the public domain; do with
4 * it what you wish.
5 *
6 * Compat code so unshare and setns can be used with older libcs
7 */
8 #ifndef UTIL_LINUX_NAMESPACE_H
9 # define UTIL_LINUX_NAMESPACE_H
10
11 # include <sched.h>
12
13 # ifndef CLONE_NEWNS
14 # define CLONE_NEWNS 0x00020000
15 # endif
16 # ifndef CLONE_NEWCGROUP
17 # define CLONE_NEWCGROUP 0x02000000
18 # endif
19 # ifndef CLONE_NEWUTS
20 # define CLONE_NEWUTS 0x04000000
21 # endif
22 # ifndef CLONE_NEWIPC
23 # define CLONE_NEWIPC 0x08000000
24 # endif
25 # ifndef CLONE_NEWNET
26 # define CLONE_NEWNET 0x40000000
27 # endif
28 # ifndef CLONE_NEWUSER
29 # define CLONE_NEWUSER 0x10000000
30 # endif
31 # ifndef CLONE_NEWPID
32 # define CLONE_NEWPID 0x20000000
33 # endif
34 # ifndef CLONE_NEWTIME
35 # define CLONE_NEWTIME 0x00000080
36 # endif
37
38 # if !defined(HAVE_UNSHARE) || !defined(HAVE_SETNS)
39 # include <sys/syscall.h>
40 # endif
41
42 # if !defined(HAVE_UNSHARE) && defined(SYS_unshare)
43 static inline int unshare(int flags)
44 {
45 return syscall(SYS_unshare, flags);
46 }
47 # endif
48
49 # if !defined(HAVE_SETNS) && defined(SYS_setns)
50 static inline int setns(int fd, int nstype)
51 {
52 return syscall(SYS_setns, fd, nstype);
53 }
54 # endif
55
56 #endif /* UTIL_LINUX_NAMESPACE_H */