diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-03-27 14:57:29 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2014-03-28 08:34:25 +0100 |
commit | 6d6427b7c8070f2350f337587f9db002056f1b64 (patch) | |
tree | ea1b1d9778230024a4c67b968787e269358cc8cd /source4/librpc | |
parent | ae02bf6f068d49478f159be726e628fa6287907a (diff) | |
download | samba-6d6427b7c8070f2350f337587f9db002056f1b64.tar.gz |
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.c | 52 |
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); } |