Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7534f7cc5 | ||
|
|
41a78397e3 |
4 changed files with 66 additions and 13 deletions
|
|
@ -42,6 +42,7 @@ install-exec-local:
|
||||||
--root=/$(DESTDIR) \
|
--root=/$(DESTDIR) \
|
||||||
--prefix=$(prefix) \
|
--prefix=$(prefix) \
|
||||||
--install-lib=$(pythondir) \
|
--install-lib=$(pythondir) \
|
||||||
|
--install-data=$(prefix) \
|
||||||
--single-version-externally-managed \
|
--single-version-externally-managed \
|
||||||
--no-compile
|
--no-compile
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,11 @@ static PyObject *netns_nsexecvp(PyObject *self, PyObject *args)
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
return PyErr_SetFromErrno(PyExc_OSError);
|
return PyErr_SetFromErrno(PyExc_OSError);
|
||||||
else
|
else
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
return PyLong_FromLong(pid);
|
||||||
|
#else
|
||||||
return PyInt_FromLong(pid);
|
return PyInt_FromLong(pid);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *netns_nsfork(PyObject *self, PyObject *args)
|
static PyObject *netns_nsfork(PyObject *self, PyObject *args)
|
||||||
|
|
@ -100,7 +104,11 @@ static PyObject *netns_nsfork(PyObject *self, PyObject *args)
|
||||||
if (pid == 0) /* child */
|
if (pid == 0) /* child */
|
||||||
PyOS_AfterFork();
|
PyOS_AfterFork();
|
||||||
|
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
return PyLong_FromLong(pid);
|
||||||
|
#else
|
||||||
return PyInt_FromLong(pid);
|
return PyInt_FromLong(pid);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyMethodDef netns_methods[] = {
|
static PyMethodDef netns_methods[] = {
|
||||||
|
|
@ -120,13 +128,35 @@ static PyMethodDef netns_methods[] = {
|
||||||
{NULL, NULL, 0, NULL},
|
{NULL, NULL, 0, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
#define INITERROR return NULL
|
||||||
|
static struct PyModuleDef moduledef = {
|
||||||
|
PyModuleDef_HEAD_INIT,
|
||||||
|
"netns", /* m_name */
|
||||||
|
"netns module", /* m_doc */
|
||||||
|
-1, /* m_size */
|
||||||
|
netns_methods, /* m_methods */
|
||||||
|
NULL, /* m_reload */
|
||||||
|
NULL, /* m_traverse */
|
||||||
|
NULL, /* m_clear */
|
||||||
|
NULL, /* m_free */
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
#define INITERROR return
|
||||||
|
#endif
|
||||||
|
|
||||||
PyMODINIT_FUNC initnetns(void)
|
PyMODINIT_FUNC initnetns(void)
|
||||||
{
|
{
|
||||||
PyObject *m;
|
PyObject *m;
|
||||||
|
|
||||||
m = Py_InitModule("netns", netns_methods);
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
m = PyModule_Create(&moduledef);
|
||||||
|
#else
|
||||||
|
m = Py_InitModule("netns", netns_methods);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m == NULL)
|
if (m == NULL)
|
||||||
return;
|
INITERROR;
|
||||||
|
|
||||||
#define MODADDINT(x) \
|
#define MODADDINT(x) \
|
||||||
do { \
|
do { \
|
||||||
|
|
@ -142,5 +172,5 @@ PyMODINIT_FUNC initnetns(void)
|
||||||
|
|
||||||
#undef MODADDINT
|
#undef MODADDINT
|
||||||
|
|
||||||
return;
|
INITERROR;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ setup(
|
||||||
name="core-netns",
|
name="core-netns",
|
||||||
version="@PACKAGE_VERSION@",
|
version="@PACKAGE_VERSION@",
|
||||||
description="Extension modules to support virtual nodes using Linux network namespaces",
|
description="Extension modules to support virtual nodes using Linux network namespaces",
|
||||||
scripts=["vcmd", "vnoded", "netns"],
|
data_files=[("bin", ["vcmd", "vnoded", "netns"])],
|
||||||
ext_modules=[
|
ext_modules=[
|
||||||
netns,
|
netns,
|
||||||
vcmd
|
vcmd
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ static void VCmdWait_dealloc(VCmdWait *self)
|
||||||
if (self->_vcmd != NULL)
|
if (self->_vcmd != NULL)
|
||||||
Py_DECREF(self->_vcmd);
|
Py_DECREF(self->_vcmd);
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject *)self);
|
Py_TYPE(self)->tp_free((PyObject *)self);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -363,7 +363,7 @@ static PyMethodDef VCmdWait_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static PyTypeObject vcmd_VCmdWaitType = {
|
static PyTypeObject vcmd_VCmdWaitType = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyVarObject_HEAD_INIT(NULL, 0)
|
||||||
.tp_name = "vcmd.VCmdWait",
|
.tp_name = "vcmd.VCmdWait",
|
||||||
.tp_basicsize = sizeof(VCmdWait),
|
.tp_basicsize = sizeof(VCmdWait),
|
||||||
.tp_dealloc = (destructor)VCmdWait_dealloc,
|
.tp_dealloc = (destructor)VCmdWait_dealloc,
|
||||||
|
|
@ -491,7 +491,7 @@ static void VCmd_dealloc(VCmd *self)
|
||||||
call_asyncfunc(async_delclientreq, &delclreq);
|
call_asyncfunc(async_delclientreq, &delclreq);
|
||||||
}
|
}
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject *)self);
|
Py_TYPE(self)->tp_free((PyObject *)self);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -902,7 +902,7 @@ static PyMethodDef VCmd_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static PyTypeObject vcmd_VCmdType = {
|
static PyTypeObject vcmd_VCmdType = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyVarObject_HEAD_INIT(NULL, 0)
|
||||||
.tp_name = "vcmd.VCmd",
|
.tp_name = "vcmd.VCmd",
|
||||||
.tp_basicsize = sizeof(VCmd),
|
.tp_basicsize = sizeof(VCmd),
|
||||||
.tp_dealloc = (destructor)VCmd_dealloc,
|
.tp_dealloc = (destructor)VCmd_dealloc,
|
||||||
|
|
@ -932,19 +932,41 @@ static PyMethodDef vcmd_methods[] = {
|
||||||
{NULL, NULL, 0, NULL},
|
{NULL, NULL, 0, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
#define INITERROR return NULL
|
||||||
|
static struct PyModuleDef moduledef = {
|
||||||
|
PyModuleDef_HEAD_INIT,
|
||||||
|
"vcmd", /* m_name */
|
||||||
|
"vcmd module that does stuff...", /* m_doc */
|
||||||
|
-1, /* m_size */
|
||||||
|
vcmd_methods, /* m_methods */
|
||||||
|
NULL, /* m_reload */
|
||||||
|
NULL, /* m_traverse */
|
||||||
|
NULL, /* m_clear */
|
||||||
|
NULL, /* m_free */
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
#define INITERROR return
|
||||||
|
#endif
|
||||||
|
|
||||||
PyMODINIT_FUNC initvcmd(void)
|
PyMODINIT_FUNC initvcmd(void)
|
||||||
{
|
{
|
||||||
PyObject *m;
|
PyObject *m;
|
||||||
|
|
||||||
if (PyType_Ready(&vcmd_VCmdType) < 0)
|
if (PyType_Ready(&vcmd_VCmdType) < 0)
|
||||||
return;
|
INITERROR;
|
||||||
|
|
||||||
if (PyType_Ready(&vcmd_VCmdWaitType) < 0)
|
if (PyType_Ready(&vcmd_VCmdWaitType) < 0)
|
||||||
return;
|
INITERROR;
|
||||||
|
|
||||||
m = Py_InitModule3("vcmd", vcmd_methods, "vcmd module that does stuff...");
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
m = PyModule_Create(&moduledef);
|
||||||
|
#else
|
||||||
|
m = Py_InitModule3("vcmd", vcmd_methods, "vcmd module that does stuff...");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!m)
|
if (!m)
|
||||||
return;
|
INITERROR;
|
||||||
|
|
||||||
Py_INCREF(&vcmd_VCmdType);
|
Py_INCREF(&vcmd_VCmdType);
|
||||||
PyModule_AddObject(m, "VCmd", (PyObject *)&vcmd_VCmdType);
|
PyModule_AddObject(m, "VCmd", (PyObject *)&vcmd_VCmdType);
|
||||||
|
|
@ -952,5 +974,5 @@ PyMODINIT_FUNC initvcmd(void)
|
||||||
Py_INCREF(&vcmd_VCmdWaitType);
|
Py_INCREF(&vcmd_VCmdWaitType);
|
||||||
PyModule_AddObject(m, "VCmdWait", (PyObject *)&vcmd_VCmdWaitType);
|
PyModule_AddObject(m, "VCmdWait", (PyObject *)&vcmd_VCmdWaitType);
|
||||||
|
|
||||||
return;
|
INITERROR;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue