X-Git-Url: http://git.onelab.eu/?p=lxc-userspace.git;a=blobdiff_plain;f=setns.c;h=84116d951b9aa4561c793fe1ea7c049b3effee60;hp=aa907b03a323f460af10e1df74a66a17d5d7b0c9;hb=HEAD;hpb=df40f9604c78752536de9314f1f03744531d7915 diff --git a/setns.c b/setns.c index aa907b0..84116d9 100644 --- a/setns.c +++ b/setns.c @@ -10,9 +10,11 @@ static PyObject * drop_caps(PyObject *self, PyObject *args) { - unsigned int to_drop[128] = {CAP_NET_ADMIN,CAP_SYS_ADMIN,CAP_SYS_BOOT,CAP_MKNOD,CAP_MAC_ADMIN,CAP_SYS_MODULE}; + unsigned int to_drop[128] + = {CAP_NET_ADMIN, CAP_SYS_ADMIN, CAP_SYS_BOOT, + CAP_MKNOD, CAP_MAC_ADMIN, CAP_SYS_MODULE}; unsigned int i; - for (i = 0;i<6;i++) { + for (i = 0; i<6 ; i++) { if (prctl(PR_CAPBSET_DROP, to_drop[i], 0, 0, 0) == -1) { perror("prctl"); return Py_BuildValue("i", 2); @@ -24,7 +26,7 @@ drop_caps(PyObject *self, PyObject *args) static PyObject * proc_mount(PyObject *self, PyObject *args) { - int sts; + int sts; sts = mount("none","/proc","proc",0,NULL); return Py_BuildValue("i", sts); @@ -33,7 +35,7 @@ proc_mount(PyObject *self, PyObject *args) static PyObject * proc_umount(PyObject *self, PyObject *args) { - int sts; + int sts; sts = umount("/proc"); return Py_BuildValue("i", sts); @@ -53,7 +55,7 @@ chfscontext(PyObject *self, PyObject *args) sts = -errno; goto out; } - + if (setns(fd, 0)) { sts = -errno; } @@ -78,7 +80,7 @@ chcontext(PyObject *self, PyObject *args) sts = -errno; goto out; } - + if (setns(fd, 0)) { sts = -errno; } @@ -91,17 +93,29 @@ out: static PyMethodDef SetnsMethods[] = { - {"proc_mount", proc_mount, METH_VARARGS, "Mount a volume via the mount system call."}, - {"proc_umount", proc_umount, METH_VARARGS, "Umount a volume via the umount system call."}, - {"chcontext", chcontext, METH_VARARGS, "Switch into an lxc container."}, - {"drop_caps", drop_caps, METH_VARARGS, "Drop dangerous capabilities."}, - {"chfscontext", chfscontext, METH_VARARGS, "Switch into an lxc container."}, - {NULL, NULL, 0, NULL} + {"proc_mount", proc_mount, METH_VARARGS, "Mount a volume via the mount system call."}, + {"proc_umount", proc_umount, METH_VARARGS, "Umount a volume via the umount system call."}, + {"chcontext", chcontext, METH_VARARGS, "Switch into an lxc container."}, + {"drop_caps", drop_caps, METH_VARARGS, "Drop dangerous capabilities."}, + {"chfscontext", chfscontext, METH_VARARGS, "Switch into an lxc container."}, + {NULL, NULL, 0, NULL} }; - -PyMODINIT_FUNC - -initsetns(void) -{ - (void) Py_InitModule("setns", SetnsMethods); + +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + "setns", + "http://git.onelab.eu/?p=lxc-userspace.git;a=summary", + -1, + SetnsMethods, + NULL, + NULL, + NULL, + NULL +}; + +PyObject *PyInit_setns(void){ + PyObject *module = PyModule_Create(&moduledef); + if (module == NULL) + return NULL; + return module; }