From: ebiederm@xmission.com (Eric W. Biederman)
To: Karel Zak <kzak@redhat.com>
Cc: Mike Frysinger <vapier@gentoo.org>,
util-linux@vger.kernel.org, Neil Horman <nhorman@tuxdriver.com>,
"Serge E. Hallyn" <serge@hallyn.com>,
"Michael Kerrisk \(man-pages\)" <mtk.manpages@gmail.com>
Subject: [PATCH 5/5] unshare,nsenter: Move the old libc handling into a common header namespace.h
Date: Wed, 16 Jan 2013 16:36:32 -0800 [thread overview]
Message-ID: <87hamgk5m7.fsf_-_@xmission.com> (raw)
In-Reply-To: <87a9s8lkbq.fsf_-_@xmission.com> (Eric W. Biederman's message of "Wed, 16 Jan 2013 16:33:29 -0800")
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>
---
include/namespace.h | 43 +++++++++++++++++++++++++++++++++++++++++++
sys-utils/nsenter.c | 28 +---------------------------
sys-utils/unshare.c | 29 +----------------------------
3 files changed, 45 insertions(+), 55 deletions(-)
create mode 100644 include/namespace.h
diff --git a/include/namespace.h b/include/namespace.h
new file mode 100644
index 0000000..8ccc3f6
--- /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 <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 */
diff --git a/sys-utils/nsenter.c b/sys-utils/nsenter.c
index cc54ebe..a2d464e 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 <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;
diff --git a/sys-utils/unshare.c b/sys-utils/unshare.c
index 00cc2cf..9b849ee 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 <sys/syscall.h>
-
-static int unshare(int flags)
-{
- return syscall(SYS_unshare, flags);
-}
-#endif
+#include "namespace.h"
static void usage(int status)
{
--
1.7.5.4
next prev parent reply other threads:[~2013-01-17 0:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-11 10:29 [PATCH] enter: new command (light wrapper around setns) Eric W. Biederman
2013-01-11 10:54 ` Michael Kerrisk (man-pages)
2013-01-11 11:10 ` Eric W. Biederman
2013-01-11 13:13 ` Ángel González
2013-01-12 8:59 ` Michael Kerrisk (man-pages)
2013-01-11 16:13 ` Karel Zak
2013-01-11 22:11 ` Eric W. Biederman
2013-01-12 9:01 ` Michael Kerrisk (man-pages)
2013-01-11 22:46 ` [PATCH] nsenter: " Eric W. Biederman
2013-01-11 23:45 ` Mike Frysinger
2013-01-14 8:28 ` Karel Zak
2013-01-17 0:33 ` [PATCH 0/5] nsenter review comment fixes Eric W. Biederman
2013-01-17 0:34 ` [PATCH 1/5] nsenter: Enhance waiting for a child process Eric W. Biederman
2013-01-17 0:34 ` [PATCH 2/5] nsenter: Properly spell significant in a comment Eric W. Biederman
2013-01-17 0:35 ` [PATCH 3/5] nsenter: Add const to declarations where possible Eric W. Biederman
2013-01-17 0:35 ` [PATCH 4/5] nsenter: Replace a bare strtoul with strtoul_or_err Eric W. Biederman
2013-01-17 0:36 ` Eric W. Biederman [this message]
2013-01-17 3:11 ` [PATCH 0/5] nsenter review comment fixes Mike Frysinger
2013-01-17 12:35 ` Karel Zak
2013-01-15 18:51 ` [PATCH] nsenter: new command (light wrapper around setns) Serge E. Hallyn
2013-01-17 12:34 ` Karel Zak
2013-01-11 22:53 ` [PATCH] unshare: Add support for the pid and user namespaces Eric W. Biederman
2013-01-17 12:35 ` Karel Zak
2013-01-17 12:56 ` Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87hamgk5m7.fsf_-_@xmission.com \
--to=ebiederm@xmission.com \
--cc=kzak@redhat.com \
--cc=mtk.manpages@gmail.com \
--cc=nhorman@tuxdriver.com \
--cc=serge@hallyn.com \
--cc=util-linux@vger.kernel.org \
--cc=vapier@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox