summaryrefslogtreecommitdiffstats
path: root/source/scripting
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2005-02-04 06:35:45 +0000
committerTim Potter <tpot@samba.org>2005-02-04 06:35:45 +0000
commit7d2d848657b0c83746f3f234d07f0e05c6307125 (patch)
treeb0a2c148528313006b2b1730a5e90b5cf835ab2d /source/scripting
parentd1441f3ef1fab90a2e9264f5cd6075a9848730b2 (diff)
downloadsamba-7d2d848657b0c83746f3f234d07f0e05c6307125.tar.gz
samba-7d2d848657b0c83746f3f234d07f0e05c6307125.tar.xz
samba-7d2d848657b0c83746f3f234d07f0e05c6307125.zip
r5224: Add in/out typemaps for resume handles. This saves us having to much
around with pointers to just one uint32. Add an output typemap to copy a policy handle as the talloc context is destroyed before the wrapper function returns. More work here needed to avoid memory leaks. Use the swig carrays.i file to create accessor and setter functions for fixed width integer types. Also add functions for struct samr_SamEntry as it's returned by the LookupDomain RPC. This really needs to be done by pidl so I don't have to go through and find all the structures that are returned in arrays. Include security.i to give us SIDs and security descriptors.
Diffstat (limited to 'source/scripting')
-rw-r--r--source/scripting/swig/dcerpc.i39
1 files changed, 39 insertions, 0 deletions
diff --git a/source/scripting/swig/dcerpc.i b/source/scripting/swig/dcerpc.i
index 52cd8335089..53aaf29b1f1 100644
--- a/source/scripting/swig/dcerpc.i
+++ b/source/scripting/swig/dcerpc.i
@@ -169,10 +169,49 @@ NTSTATUS dcerpc_pipe_connect(struct dcerpc_pipe **OUT,
const char *dcerpc_server_name(struct dcerpc_pipe *p);
+/* 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);
+}
+
+/* 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 * {
+ 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);
+}
+
%{
#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);
+
%include "librpc/gen_ndr/misc.i"
+%include "librpc/gen_ndr/security.i"
%include "librpc/gen_ndr/samr.i"