unshare,nsenter: Move the old libc handling into a common header namespace.h
Move the defitions of CLONE_NEWNS, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWUSER, CLONE_NEWPID into namespace.h in case sched.h does not provide those definitions. Are there systems around that are old enough that still need this? Move the definitions of unshare() and setns() into namespace.h for supporting old versions of libc that does not provice these. I have tested this support with setns as I still have systems old enough that glibc does not wrap setns. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
0d3ec8603b
commit
c91280a4bd
|
@ -0,0 +1,43 @@
|
|||
/* Compat code so unshare and setns can be used with older libcs */
|
||||
#ifndef UTIL_LINUX_NAMESPACE_H
|
||||
#define UTIL_LINUX_NAMESPACE_H
|
||||
|
||||
#include <sched.h>
|
||||
|
||||
#ifndef CLONE_NEWSNS
|
||||
# define CLONE_NEWNS 0x00020000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUTS
|
||||
# define CLONE_NEWUTS 0x04000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWIPC
|
||||
# define CLONE_NEWIPC 0x08000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWNET
|
||||
# define CLONE_NEWNET 0x40000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUSER
|
||||
# define CLONE_NEWUSER 0x10000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWPID
|
||||
# define CLONE_NEWPID 0x20000000
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_UNSHARE
|
||||
# include <sys/syscall.h>
|
||||
|
||||
static inline int unshare(int flags)
|
||||
{
|
||||
return syscall(SYS_unshare, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_SETNS
|
||||
# include <sys/syscall.h>
|
||||
static inline int setns(int fd, int nstype)
|
||||
{
|
||||
return syscall(SYS_setns, fd, nstype);
|
||||
}
|
||||
#endif /* HAVE_SETNS */
|
||||
|
||||
#endif /* UTIL_LINUX_NAMESPACE_H */
|
|
@ -31,33 +31,7 @@
|
|||
#include "nls.h"
|
||||
#include "c.h"
|
||||
#include "closestream.h"
|
||||
|
||||
#ifndef CLONE_NEWSNS
|
||||
# define CLONE_NEWNS 0x00020000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUTS
|
||||
# define CLONE_NEWUTS 0x04000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWIPC
|
||||
# define CLONE_NEWIPC 0x08000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWNET
|
||||
# define CLONE_NEWNET 0x40000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUSER
|
||||
# define CLONE_NEWUSER 0x10000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWPID
|
||||
# define CLONE_NEWPID 0x20000000
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_SETNS
|
||||
# include <sys/syscall.h>
|
||||
static int setns(int fd, int nstype)
|
||||
{
|
||||
return syscall(SYS_setns, fd, nstype);
|
||||
}
|
||||
#endif /* HAVE_SETNS */
|
||||
#include "namespace.h"
|
||||
|
||||
static struct namespace_file{
|
||||
int nstype;
|
||||
|
|
|
@ -28,34 +28,7 @@
|
|||
#include "nls.h"
|
||||
#include "c.h"
|
||||
#include "closestream.h"
|
||||
|
||||
#ifndef CLONE_NEWSNS
|
||||
# define CLONE_NEWNS 0x00020000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUTS
|
||||
# define CLONE_NEWUTS 0x04000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWIPC
|
||||
# define CLONE_NEWIPC 0x08000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWNET
|
||||
# define CLONE_NEWNET 0x40000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWUSER
|
||||
# define CLONE_NEWUSER 0x10000000
|
||||
#endif
|
||||
#ifndef CLONE_NEWPID
|
||||
# define CLONE_NEWPID 0x20000000
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_UNSHARE
|
||||
# include <sys/syscall.h>
|
||||
|
||||
static int unshare(int flags)
|
||||
{
|
||||
return syscall(SYS_unshare, flags);
|
||||
}
|
||||
#endif
|
||||
#include "namespace.h"
|
||||
|
||||
static void usage(int status)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue