Signed-off-by: Christian Seiler <christ...@iwakd.de> --- src/python-lxc/lxc.c | 36 ++++++++++++++++++++++++++++-------- src/python-lxc/lxc/__init__.py | 6 ++++++ 2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c index f4de169..b2abf38 100644 --- a/src/python-lxc/lxc.c +++ b/src/python-lxc/lxc.c @@ -25,6 +25,7 @@ #include "structmember.h" #include <lxc/lxccontainer.h> #include <lxc/utils.h> +#include <lxc/namespace.h> #include <stdio.h> #include <sys/wait.h> @@ -718,6 +719,8 @@ static int lxc_attach_python_exec(void* _payload) return -1; } +static void lxc_attach_free_options(lxc_attach_options_t *options); + static lxc_attach_options_t *lxc_attach_parse_options(PyObject *kwds) { static char *kwlist[] = {"attach_flags", "namespaces", "personality", "initial_cwd", "uid", "gid", "env_policy", "extra_env_vars", "extra_keep_env", "stdin", "stdout", "stderr", NULL}; @@ -1170,14 +1173,31 @@ PyInit__lxc(void) /* add constants */ d = PyModule_GetDict(m); - PyDict_SetItemString(d, "LXC_ATTACH_KEEP_ENV", PyLong_FromLong(LXC_ATTACH_KEEP_ENV)); - PyDict_SetItemString(d, "LXC_ATTACH_CLEAR_ENV", PyLong_FromLong(LXC_ATTACH_CLEAR_ENV)); - PyDict_SetItemString(d, "LXC_ATTACH_MOVE_TO_CGROUP", PyLong_FromLong(LXC_ATTACH_MOVE_TO_CGROUP)); - PyDict_SetItemString(d, "LXC_ATTACH_DROP_CAPABILITIES", PyLong_FromLong(LXC_ATTACH_DROP_CAPABILITIES)); - PyDict_SetItemString(d, "LXC_ATTACH_SET_PERSONALITY", PyLong_FromLong(LXC_ATTACH_SET_PERSONALITY)); - PyDict_SetItemString(d, "LXC_ATTACH_APPARMOR", PyLong_FromLong(LXC_ATTACH_APPARMOR)); - PyDict_SetItemString(d, "LXC_ATTACH_REMOUNT_PROC_SYS", PyLong_FromLong(LXC_ATTACH_REMOUNT_PROC_SYS)); - PyDict_SetItemString(d, "LXC_ATTACH_DEFAULT", PyLong_FromLong(LXC_ATTACH_DEFAULT)); + + #define PYLXC_EXPORT_CONST(c) PyDict_SetItemString(d, #c, PyLong_FromLong(c)) + + /* environment variable handling */ + PYLXC_EXPORT_CONST(LXC_ATTACH_KEEP_ENV); + PYLXC_EXPORT_CONST(LXC_ATTACH_CLEAR_ENV); + + /* attach options */ + PYLXC_EXPORT_CONST(LXC_ATTACH_MOVE_TO_CGROUP); + PYLXC_EXPORT_CONST(LXC_ATTACH_DROP_CAPABILITIES); + PYLXC_EXPORT_CONST(LXC_ATTACH_SET_PERSONALITY); + PYLXC_EXPORT_CONST(LXC_ATTACH_APPARMOR); + PYLXC_EXPORT_CONST(LXC_ATTACH_REMOUNT_PROC_SYS); + PYLXC_EXPORT_CONST(LXC_ATTACH_DEFAULT); + + /* namespace flags (no other python lib exports this) */ + PYLXC_EXPORT_CONST(CLONE_NEWUTS); + PYLXC_EXPORT_CONST(CLONE_NEWIPC); + PYLXC_EXPORT_CONST(CLONE_NEWUSER); + PYLXC_EXPORT_CONST(CLONE_NEWPID); + PYLXC_EXPORT_CONST(CLONE_NEWNET); + PYLXC_EXPORT_CONST(CLONE_NEWNS); + + #undef PYLXC_EXPORT_CONST + return m; } diff --git a/src/python-lxc/lxc/__init__.py b/src/python-lxc/lxc/__init__.py index 1748bac..95d33e5 100644 --- a/src/python-lxc/lxc/__init__.py +++ b/src/python-lxc/lxc/__init__.py @@ -459,3 +459,9 @@ LXC_ATTACH_SET_PERSONALITY = _lxc.LXC_ATTACH_SET_PERSONALITY LXC_ATTACH_APPARMOR = _lxc.LXC_ATTACH_APPARMOR LXC_ATTACH_REMOUNT_PROC_SYS = _lxc.LXC_ATTACH_REMOUNT_PROC_SYS LXC_ATTACH_DEFAULT = _lxc.LXC_ATTACH_DEFAULT +CLONE_NEWUTS = _lxc.CLONE_NEWUTS +CLONE_NEWIPC = _lxc.CLONE_NEWIPC +CLONE_NEWUSER = _lxc.CLONE_NEWUSER +CLONE_NEWPID = _lxc.CLONE_NEWPID +CLONE_NEWNET = _lxc.CLONE_NEWNET +CLONE_NEWNS = _lxc.CLONE_NEWNS -- 1.7.10.4 ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel