From f47bc82561707130be5d56c22300f11175401d66 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 21 Nov 2007 12:31:19 +0100 Subject: r26071: Move DCE/RPC SWIG bindings closer to the code they're wrapping. (This used to be commit 93eba0a3a984e9cd08ab2cf74b409938c991824a) --- source4/scripting/swig/config.mk | 15 --- source4/scripting/swig/dcerpc.i | 238 --------------------------------------- 2 files changed, 253 deletions(-) delete mode 100644 source4/scripting/swig/dcerpc.i (limited to 'source4/scripting') diff --git a/source4/scripting/swig/config.mk b/source4/scripting/swig/config.mk index 67c1f841f7..944e33b9b4 100644 --- a/source4/scripting/swig/config.mk +++ b/source4/scripting/swig/config.mk @@ -1,13 +1,3 @@ -####################### -# Start LIBRARY swig_dcerpc -[LIBRARY::swig_dcerpc] -ENABLE = NO -LIBRARY_REALNAME = _dcerpc.$(SHLIBEXT) -PUBLIC_DEPENDENCIES = LIBCLI_SMB NDR_MISC LIBSAMBA-UTIL LIBSAMBA-CONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG -OBJ_FILES = dcerpc_wrap.o -# End LIBRARY swig_dcerpc -####################### - # Swig extensions swig: lib/tdb/swig/_tdb.$(SHLIBEXT) lib/ldb/swig/_ldb.$(SHLIBEXT) \ libcli/swig/_libcli_nbt.$(SHLIBEXT) libcli/swig/_libcli_smb.$(SHLIBEXT) @@ -17,15 +7,10 @@ swig: lib/tdb/swig/_tdb.$(SHLIBEXT) lib/ldb/swig/_ldb.$(SHLIBEXT) \ .i_wrap.c: swig -I$(srcdir)/scripting/swig -python $< -SWIG_INCLUDES = librpc/gen_ndr/samr.i librpc/gen_ndr/lsa.i librpc/gen_ndr/spoolss.i - -scripting/swig/dcerpc_wrap.c: scripting/swig/dcerpc.i scripting/swig/samba.i scripting/swig/status_codes.i $(SWIG_INCLUDES) - clean:: @echo "Removing SWIG output files" @-rm -f scripting/swig/tdb.pyc scripting/swig/tdb.py # Swig testing - swigtest: swig ./selftest/test_swig.sh diff --git a/source4/scripting/swig/dcerpc.i b/source4/scripting/swig/dcerpc.i deleted file mode 100644 index cf394ba338..0000000000 --- a/source4/scripting/swig/dcerpc.i +++ /dev/null @@ -1,238 +0,0 @@ -/* Tastes like -*- C -*- */ - -/* - Unix SMB/CIFS implementation. - - Swig interface to librpc functions. - - Copyright (C) Tim Potter 2004 - - 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 . -*/ - -%module dcerpc - -%{ - -/* This symbol is used in both includes.h and Python.h which causes an - annoying compiler warning. */ - -#ifdef HAVE_FSTAT -#undef HAVE_FSTAT -#endif - -#include "includes.h" -#include "dynconfig.h" - -#undef strcpy - -PyObject *ntstatus_exception, *werror_exception; - -/* Set up return of a dcerpc.NTSTATUS exception */ - -void set_ntstatus_exception(int status) -{ - PyObject *obj = Py_BuildValue("(i,s)", status, - nt_errstr(NT_STATUS(status))); - - PyErr_SetObject(ntstatus_exception, obj); -} - -void set_werror_exception(int status) -{ - PyObject *obj = Py_BuildValue("(i,s)", status, - win_errstr(W_ERROR(status))); - - PyErr_SetObject(werror_exception, obj); -} - -%} - -%include "samba.i" - -%pythoncode %{ - NTSTATUS = _dcerpc.NTSTATUS - WERROR = _dcerpc.WERROR -%} - -%init %{ - setup_logging("python", DEBUG_STDOUT); - lp_load(); - ntstatus_exception = PyErr_NewException("_dcerpc.NTSTATUS", NULL, NULL); - werror_exception = PyErr_NewException("_dcerpc.WERROR", NULL, NULL); - PyDict_SetItemString(d, "NTSTATUS", ntstatus_exception); - PyDict_SetItemString(d, "WERROR", werror_exception); - -/* BINARY swig_dcerpc INIT */ - - extern NTSTATUS dcerpc_misc_init(void); - extern NTSTATUS dcerpc_krb5pac_init(void); - extern NTSTATUS dcerpc_samr_init(void); - extern NTSTATUS dcerpc_dcerpc_init(void); - extern NTSTATUS auth_sam_init(void); - extern NTSTATUS dcerpc_lsa_init(void); - extern NTSTATUS dcerpc_netlogon_init(void); - extern NTSTATUS gensec_init(void); - extern NTSTATUS auth_developer_init(void); - extern NTSTATUS gensec_spnego_init(void); - extern NTSTATUS auth_winbind_init(void); - extern NTSTATUS gensec_gssapi_init(void); - extern NTSTATUS gensec_ntlmssp_init(void); - extern NTSTATUS dcerpc_nbt_init(void); - extern NTSTATUS auth_anonymous_init(void); - extern NTSTATUS gensec_krb5_init(void); - extern NTSTATUS dcerpc_schannel_init(void); - extern NTSTATUS dcerpc_epmapper_init(void); - if (NT_STATUS_IS_ERR(dcerpc_misc_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_krb5pac_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_samr_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_dcerpc_init())) exit(1); - if (NT_STATUS_IS_ERR(auth_sam_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_lsa_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_netlogon_init())) exit(1); - if (NT_STATUS_IS_ERR(gensec_init())) exit(1); - if (NT_STATUS_IS_ERR(auth_developer_init())) exit(1); - if (NT_STATUS_IS_ERR(gensec_spnego_init())) exit(1); - if (NT_STATUS_IS_ERR(auth_winbind_init())) exit(1); - if (NT_STATUS_IS_ERR(gensec_gssapi_init())) exit(1); - if (NT_STATUS_IS_ERR(gensec_ntlmssp_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_nbt_init())) exit(1); - if (NT_STATUS_IS_ERR(auth_anonymous_init())) exit(1); - if (NT_STATUS_IS_ERR(gensec_krb5_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_schannel_init())) exit(1); - if (NT_STATUS_IS_ERR(dcerpc_epmapper_init())) exit(1); - -%} - -%typemap(in, numinputs=0) struct dcerpc_pipe **OUT (struct dcerpc_pipe *temp_dcerpc_pipe) { - $1 = &temp_dcerpc_pipe; -} - -%typemap(in, numinputs=0) TALLOC_CTX * { - $1 = talloc_init("$symname"); -} - -%typemap(freearg) TALLOC_CTX * { -// talloc_free($1); -} - -%typemap(argout) struct dcerpc_pipe ** { - long status = PyLong_AsLong(resultobj); - - /* Throw exception if result was not OK */ - - if (status != 0) { - set_ntstatus_exception(status); - return NULL; - } - - /* Set REF_ALLOC flag so we don't have to do too much extra - mucking around with ref variables in ndr unmarshalling. */ - - (*$1)->conn->flags |= DCERPC_NDR_REF_ALLOC; - - /* Return swig handle on dcerpc_pipe */ - - resultobj = SWIG_NewPointerObj(*$1, SWIGTYPE_p_dcerpc_pipe, 0); -} - -%types(struct dcerpc_pipe *); - -%rename(pipe_connect) dcerpc_pipe_connect; - -NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, - struct dcerpc_pipe **OUT, - const char *binding, - const char *pipe_uuid, - uint32_t pipe_version, - struct cli_credentials *credentials); - -%typemap(in) DATA_BLOB * (DATA_BLOB temp_data_blob) { - temp_data_blob.data = PyString_AsString($input); - temp_data_blob.length = PyString_Size($input); - $1 = &temp_data_blob; -} - -const char *dcerpc_server_name(struct dcerpc_pipe *p); - -char *nt_errstr(NTSTATUS nt_code); - -/* Some typemaps for easier access to resume handles. Really this can - also be done using the uint32 carray functions, but it's a bit of a - hassle. TODO: Fix memory leak here. */ - -%typemap(in) uint32_t *resume_handle { - $1 = malloc(sizeof(*$1)); - *$1 = PyLong_AsLong($input); -} - -%typemap(out) uint32_t *resume_handle { - $result = PyLong_FromLong(*$1); -} - -%typemap(in) struct policy_handle * { - - if ((SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, - SWIG_POINTER_EXCEPTION)) == -1) - return NULL; - - if ($1 == NULL) { - PyErr_SetString(PyExc_TypeError, "None is not a valid policy handle"); - return NULL; - } -} - -/* When returning a policy handle to Python we need to make a copy of - as the talloc context it is created under is destroyed after the - wrapper function returns. TODO: Fix memory leak created here. */ - -%typemap(out) struct policy_handle * { - if ($1) { - struct policy_handle *temp = (struct policy_handle *)malloc(sizeof(struct policy_handle)); - memcpy(temp, $1, sizeof(struct policy_handle)); - $result = SWIG_NewPointerObj(temp, SWIGTYPE_p_policy_handle, 0); - } else { - Py_INCREF(Py_None); - $result = Py_None; - } -} - -%{ -#include "librpc/gen_ndr/ndr_misc.h" -#include "librpc/gen_ndr/ndr_security.h" -#include "librpc/gen_ndr/ndr_samr.h" -%} - -%include "carrays.i" - -/* Some functions for accessing arrays of fixed-width integers. */ - -%array_functions(uint8_t, uint8_array); -%array_functions(uint16_t, uint16_array); -%array_functions(uint32_t, uint32_array); - -/* Functions for handling arrays of structures. It would be nice for - pidl to automatically generating these instead of having to find - them all by hand. */ - -%array_functions(struct samr_SamEntry, samr_SamEntry_array); -%array_functions(union samr_ConnectInfo, samr_ConnectInfo_array); -%array_functions(struct samr_RidWithAttribute, samr_RidWithAttribute_array); - -%array_functions(struct lsa_SidPtr, lsa_SidPtr_array); - -%include "librpc/gen_ndr/misc.i" -%include "librpc/gen_ndr/security.i" -%include "librpc/gen_ndr/samr.i" -%include "librpc/gen_ndr/lsa.i" -- cgit