2010-08-27 04:17:26 +04:00
/*
Unix SMB / CIFS implementation .
Python interface to DCE / RPC library - utility functions .
Copyright ( C ) 2010 Jelmer Vernooij < jelmer @ samba . org >
Copyright ( C ) 2010 Andrew Tridgell < tridge @ samba . org >
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __PYRPC_UTIL_H__
# define __PYRPC_UTIL_H__
2010-09-03 04:39:38 +04:00
# include "librpc/rpc/pyrpc.h"
# define PyErr_FromNdrError(err) Py_BuildValue("(is)", err, ndr_map_error2string(err))
# define PyErr_SetNdrError(err) \
PyErr_SetObject ( PyExc_RuntimeError , PyErr_FromNdrError ( err ) )
void PyErr_SetDCERPCStatus ( struct dcerpc_pipe * p , NTSTATUS status ) ;
typedef NTSTATUS ( * py_dcerpc_call_fn ) ( struct dcerpc_binding_handle * , TALLOC_CTX * , void * ) ;
typedef bool ( * py_data_pack_fn ) ( PyObject * args , PyObject * kwargs , void * r ) ;
typedef PyObject * ( * py_data_unpack_fn ) ( void * r ) ;
struct PyNdrRpcMethodDef {
const char * name ;
const char * doc ;
py_dcerpc_call_fn call ;
py_data_pack_fn pack_in_data ;
py_data_unpack_fn unpack_out_data ;
uint32_t opnum ;
const struct ndr_interface_table * table ;
} ;
2010-12-09 11:59:52 +03:00
bool py_check_dcerpc_type ( PyObject * obj , const char * module , const char * type_name ) ;
2010-09-03 04:39:38 +04:00
bool PyInterface_AddNdrRpcMethods ( PyTypeObject * object , const struct PyNdrRpcMethodDef * mds ) ;
PyObject * py_dcerpc_interface_init_helper ( PyTypeObject * type , PyObject * args , PyObject * kwargs , const struct ndr_interface_table * table ) ;
2010-08-27 04:17:26 +04:00
2014-03-27 17:54:29 +04:00
struct ndr_syntax_id ;
PyObject * py_dcerpc_syntax_init_helper ( PyTypeObject * type , PyObject * args , PyObject * kwargs ,
const struct ndr_syntax_id * syntax ) ;
2010-09-15 12:49:06 +04:00
PyObject * py_return_ndr_struct ( const char * module_name , const char * type_name ,
TALLOC_CTX * r_ctx , void * r ) ;
2010-12-08 17:07:32 +03:00
PyObject * PyString_FromStringOrNULL ( const char * str ) ;
2010-08-27 04:17:26 +04:00
# endif /* __PYRPC_UTIL_H__ */