- char* path;
- unsigned xid;
- struct vcmd_ctx_dlimit_base_v0 init;
- struct vcmd_ctx_dlimit_v0 data;
-
- memset(&data,0,sizeof(data));
- if (!PyArg_ParseTuple(args, "siiiiii", &path,
- &xid,
- &data.space_used,
- &data.space_total,
- &data.inodes_used,
- &data.inodes_total,
- &data.reserved))
- return NULL;
-
- data.name = path;
- data.flags = 0;
-
- memset(&init, 0, sizeof(init));
- init.name = path;
- init.flags = 0;
-
- if ((vserver(VCMD_add_dlimit, xid, &init) && errno != EEXIST) ||
- vserver(VCMD_set_dlimit, xid, &data))
- return PyErr_SetFromErrno(PyExc_OSError);
-
- return Py_None;
+ char* path;
+ unsigned xid;
+ struct vcmd_ctx_dlimit_base_v0 init;
+ struct vcmd_ctx_dlimit_v0 data;
+
+ memset(&data,0,sizeof(data));
+ if (!PyArg_ParseTuple(args, "siiiiii", &path,
+ &xid,
+ &data.space_used,
+ &data.space_total,
+ &data.inodes_used,
+ &data.inodes_total,
+ &data.reserved))
+ return NULL;
+
+ data.name = path;
+ data.flags = 0;
+
+ memset(&init, 0, sizeof(init));
+ init.name = path;
+ init.flags = 0;
+
+ if ((vserver(VCMD_add_dlimit, xid, &init) && errno != EEXIST) ||
+ vserver(VCMD_set_dlimit, xid, &data))
+ return PyErr_SetFromErrno(PyExc_OSError);
+
+ return NONE;
+}
+
+static PyObject *
+vserver_unset_dlimit(PyObject *self, PyObject *args)
+{
+ char *path;
+ unsigned xid;
+ struct vcmd_ctx_dlimit_base_v0 init;
+
+ if (!PyArg_ParseTuple(args, "si", &path, &xid))
+ return NULL;
+
+ memset(&init, 0, sizeof(init));
+ init.name = path;
+ init.flags = 0;
+
+ if (vserver(VCMD_rem_dlimit, xid, &init) && errno != ESRCH)
+ return PyErr_SetFromErrno(PyExc_OSError);
+
+ return NONE;
+}
+
+static PyObject *
+vserver_killall(PyObject *self, PyObject *args)
+{
+ xid_t ctx;
+ int sig;
+
+ if (!PyArg_ParseTuple(args, "Ii", &ctx, &sig))
+ return NULL;
+
+ if (vc_ctx_kill(ctx, 0, sig) && errno != ESRCH)
+ return PyErr_SetFromErrno(PyExc_OSError);
+
+ return NONE;