summaryrefslogtreecommitdiffstats
path: root/source4/librpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-03-27 14:57:29 +0100
committerAndrew Bartlett <abartlet@samba.org>2014-03-28 08:34:25 +0100
commit6d6427b7c8070f2350f337587f9db002056f1b64 (patch)
treeea1b1d9778230024a4c67b968787e269358cc8cd /source4/librpc
parentae02bf6f068d49478f159be726e628fa6287907a (diff)
downloadsamba-6d6427b7c8070f2350f337587f9db002056f1b64.tar.gz
samba-6d6427b7c8070f2350f337587f9db002056f1b64.tar.xz
samba-6d6427b7c8070f2350f337587f9db002056f1b64.zip
s4:pyrpc: add base.transfer_syntax_ndr*()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/rpc/pyrpc.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 140d86cfeef..360fb24224c 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -32,6 +32,8 @@ void initbase(void);
staticforward PyTypeObject dcerpc_InterfaceType;
+static PyTypeObject *ndr_syntax_id_Type;
+
static bool PyString_AsGUID(PyObject *object, struct GUID *uuid)
{
NTSTATUS status;
@@ -368,17 +370,67 @@ static PyTypeObject dcerpc_InterfaceType = {
.tp_new = dcerpc_interface_new,
};
+static PyObject *py_transfer_syntax_ndr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+ return py_dcerpc_syntax_init_helper(type, args, kwargs, &ndr_transfer_syntax_ndr);
+}
+
+static PyTypeObject py_transfer_syntax_ndr_SyntaxType = {
+ PyObject_HEAD_INIT(NULL) 0,
+ .tp_name = "base.transfer_syntax_ndr",
+ .tp_basicsize = sizeof(pytalloc_Object),
+ .tp_doc = "transfer_syntax_ndr()\n",
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+ .tp_new = py_transfer_syntax_ndr_new,
+};
+
+static PyObject *py_transfer_syntax_ndr64_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+ return py_dcerpc_syntax_init_helper(type, args, kwargs, &ndr_transfer_syntax_ndr64);
+}
+
+static PyTypeObject py_transfer_syntax_ndr64_SyntaxType = {
+ PyObject_HEAD_INIT(NULL) 0,
+ .tp_name = "base.transfer_syntax_ndr64",
+ .tp_basicsize = sizeof(pytalloc_Object),
+ .tp_doc = "transfer_syntax_ndr64()\n",
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+ .tp_new = py_transfer_syntax_ndr64_new,
+};
+
void initbase(void)
{
PyObject *m;
+ PyObject *dep_samba_dcerpc_misc;
+
+ dep_samba_dcerpc_misc = PyImport_ImportModule("samba.dcerpc.misc");
+ if (dep_samba_dcerpc_misc == NULL)
+ return;
+
+ ndr_syntax_id_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_misc, "ndr_syntax_id");
+ if (ndr_syntax_id_Type == NULL)
+ return;
+
+ py_transfer_syntax_ndr_SyntaxType.tp_base = ndr_syntax_id_Type;
+ py_transfer_syntax_ndr64_SyntaxType.tp_base = ndr_syntax_id_Type;
if (PyType_Ready(&dcerpc_InterfaceType) < 0)
return;
+ if (PyType_Ready(&py_transfer_syntax_ndr_SyntaxType) < 0)
+ return;
+ if (PyType_Ready(&py_transfer_syntax_ndr64_SyntaxType) < 0)
+ return;
+
m = Py_InitModule3("base", NULL, "DCE/RPC protocol implementation");
if (m == NULL)
return;
Py_INCREF((PyObject *)&dcerpc_InterfaceType);
PyModule_AddObject(m, "ClientConnection", (PyObject *)&dcerpc_InterfaceType);
+
+ Py_INCREF((PyObject *)(void *)&py_transfer_syntax_ndr_SyntaxType);
+ PyModule_AddObject(m, "transfer_syntax_ndr", (PyObject *)(void *)&py_transfer_syntax_ndr_SyntaxType);
+ Py_INCREF((PyObject *)(void *)&py_transfer_syntax_ndr64_SyntaxType);
+ PyModule_AddObject(m, "transfer_syntax_ndr64", (PyObject *)(void *)&py_transfer_syntax_ndr64_SyntaxType);
}