root/source4/librpc/rpc/pyrpc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. PyAPI_DATA

   1 /* 
   2    Unix SMB/CIFS implementation.
   3    Samba utility functions
   4    Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
   5    
   6    This program is free software; you can redistribute it and/or modify
   7    it under the terms of the GNU General Public License as published by
   8    the Free Software Foundation; either version 3 of the License, or
   9    (at your option) any later version.
  10    
  11    This program is distributed in the hope that it will be useful,
  12    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14    GNU General Public License for more details.
  15    
  16    You should have received a copy of the GNU General Public License
  17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18 */
  19 
  20 #ifndef _PYRPC_H_
  21 #define _PYRPC_H_
  22 
  23 #include "libcli/util/pyerrors.h"
  24 #include "librpc/rpc/dcerpc.h"
  25 
  26 #define PY_CHECK_TYPE(type, var, fail) \
  27         if (!PyObject_TypeCheck(var, type)) {\
  28                 PyErr_Format(PyExc_TypeError, "Expected type %s", (type)->tp_name); \
  29                 fail; \
  30         }
  31 
  32 #define dom_sid0_Type dom_sid_Type
  33 #define dom_sid2_Type dom_sid_Type
  34 #define dom_sid28_Type dom_sid_Type
  35 #define dom_sid0_Check dom_sid_Check
  36 #define dom_sid2_Check dom_sid_Check
  37 #define dom_sid28_Check dom_sid_Check
  38 
  39 /* This macro is only provided by Python >= 2.3 */
  40 #ifndef PyAPI_DATA
  41 #   define PyAPI_DATA(RTYPE) extern RTYPE
  42 #endif
  43 
  44 typedef struct {
  45         PyObject_HEAD
  46         struct dcerpc_pipe *pipe;
  47 } dcerpc_InterfaceObject;
  48 
  49 PyAPI_DATA(PyTypeObject) dcerpc_InterfaceType;
     /* [<][>][^][v][top][bottom][index][help] */
  50 
  51 #define PyErr_FromNdrError(err) Py_BuildValue("(is)", err, ndr_map_error2string(err))
  52 
  53 #define PyErr_SetNdrError(err) \
  54                 PyErr_SetObject(PyExc_RuntimeError, PyErr_FromNdrError(err))
  55 
  56 void PyErr_SetDCERPCStatus(struct dcerpc_pipe *pipe, NTSTATUS status);
  57 
  58 typedef bool (*py_data_pack_fn) (PyObject *args, PyObject *kwargs, void *r);
  59 typedef PyObject *(*py_data_unpack_fn) (void *r);
  60 
  61 struct PyNdrRpcMethodDef {
  62         const char *name;
  63         const char *doc;
  64         dcerpc_call_fn call;
  65         py_data_pack_fn pack_in_data;
  66         py_data_unpack_fn unpack_out_data;
  67         uint32_t opnum;
  68         const struct ndr_interface_table *table;
  69 };
  70 
  71 bool PyInterface_AddNdrRpcMethods(PyTypeObject *object, const struct PyNdrRpcMethodDef *mds);
  72 PyObject *py_dcerpc_interface_init_helper(PyTypeObject *type, PyObject *args, PyObject *kwargs, const struct ndr_interface_table *table);
  73 
  74 #endif /* _PYRPC_H_ */

/* [<][>][^][v][top][bottom][index][help] */