diff --git a/include/namespace.h b/include/namespace.h new file mode 100644 index 000000000..8ccc3f6b3 --- /dev/null +++ b/include/namespace.h @@ -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 + +#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 + +static inline int unshare(int flags) +{ + return syscall(SYS_unshare, flags); +} +#endif + +#ifndef HAVE_SETNS +# include +static inline int setns(int fd, int nstype) +{ + return syscall(SYS_setns, fd, nstype); +} +#endif /* HAVE_SETNS */ + +#endif /* UTIL_LINUX_NAMESPACE_H */ diff --git a/sys-utils/nsenter.c b/sys-utils/nsenter.c index 99b18b05f..0b5d17da7 100644 --- a/sys-utils/nsenter.c +++ b/sys-utils/nsenter.c @@ -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 -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; diff --git a/sys-utils/unshare.c b/sys-utils/unshare.c index 00cc2cf79..9b849ee9e 100644 --- a/sys-utils/unshare.c +++ b/sys-utils/unshare.c @@ -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 - -static int unshare(int flags) -{ - return syscall(SYS_unshare, flags); -} -#endif +#include "namespace.h" static void usage(int status) {