2 Unix SMB
/CIFS implementation.
6 Copyright
(C
) 2005,2006 Tim Potter
<tpot@samba.org
>
7 Copyright
(C
) 2006 Simo Sorce
<idra@samba.org
>
9 ** NOTE
! The following LGPL license applies to the ldb
10 ** library. This does
NOT imply that all of Samba is released
13 This library is free software
; you can redistribute it and
/or
14 modify it under the terms of the GNU Lesser General Public
15 License as published by the Free Software Foundation
; either
16 version
2 of the License
, or
(at your option
) any later version.
18 This library is distributed in the hope that it will be useful
,
19 but WITHOUT
ANY WARRANTY
; without even the implied warranty of
20 MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU
21 Lesser General Public License for more details.
23 You should have received a copy of the GNU Lesser General Public
24 License along with this library
; if not
, write to the Free Software
25 Foundation
, Inc.
, 59 Temple Place
, Suite
330, Boston
, MA
02111-1307 USA
32 /* Some typedefs to help swig along
*/
34 typedef unsigned char uint8_t
;
35 typedef unsigned long long uint64_t
;
36 typedef long long int64_t
;
40 #include
"lib/ldb/include/ldb.h"
41 #include
"lib/talloc/talloc.h"
46 %include
"exception.i"
53 #define LDB_ERR_OPERATIONS_ERROR
1
54 #define LDB_ERR_PROTOCOL_ERROR
2
55 #define LDB_ERR_TIME_LIMIT_EXCEEDED
3
56 #define LDB_ERR_SIZE_LIMIT_EXCEEDED
4
57 #define LDB_ERR_COMPARE_FALSE
5
58 #define LDB_ERR_COMPARE_TRUE
6
59 #define LDB_ERR_AUTH_METHOD_NOT_SUPPORTED
7
60 #define LDB_ERR_STRONG_AUTH_REQUIRED
8
62 #define LDB_ERR_REFERRAL
10
63 #define LDB_ERR_ADMIN_LIMIT_EXCEEDED
11
64 #define LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION
12
65 #define LDB_ERR_CONFIDENTIALITY_REQUIRED
13
66 #define LDB_ERR_SASL_BIND_IN_PROGRESS
14
67 #define LDB_ERR_NO_SUCH_ATTRIBUTE
16
68 #define LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE
17
69 #define LDB_ERR_INAPPROPRIATE_MATCHING
18
70 #define LDB_ERR_CONSTRAINT_VIOLATION
19
71 #define LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
20
72 #define LDB_ERR_INVALID_ATTRIBUTE_SYNTAX
21
74 #define LDB_ERR_NO_SUCH_OBJECT
32
75 #define LDB_ERR_ALIAS_PROBLEM
33
76 #define LDB_ERR_INVALID_DN_SYNTAX
34
78 #define LDB_ERR_ALIAS_DEREFERENCING_PROBLEM
36
80 #define LDB_ERR_INAPPROPRIATE_AUTHENTICATION
48
81 #define LDB_ERR_INVALID_CREDENTIALS
49
82 #define LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS
50
83 #define LDB_ERR_BUSY
51
84 #define LDB_ERR_UNAVAILABLE
52
85 #define LDB_ERR_UNWILLING_TO_PERFORM
53
86 #define LDB_ERR_LOOP_DETECT
54
88 #define LDB_ERR_NAMING_VIOLATION
64
89 #define LDB_ERR_OBJECT_CLASS_VIOLATION
65
90 #define LDB_ERR_NOT_ALLOWED_ON_NON_LEAF
66
91 #define LDB_ERR_NOT_ALLOWED_ON_RDN
67
92 #define LDB_ERR_ENTRY_ALREADY_EXISTS
68
93 #define LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED
69
94 /* 70 RESERVED
FOR CLDAP
*/
95 #define LDB_ERR_AFFECTS_MULTIPLE_DSAS
71
97 #define LDB_ERR_OTHER
80
99 enum ldb_scope
{LDB_SCOPE_DEFAULT
=-1,
101 LDB_SCOPE_ONELEVEL
=1,
102 LDB_SCOPE_SUBTREE
=2};
105 * Wrap struct ldb_context
108 /* The ldb functions will crash if a
NULL ldb context is passed so
109 catch this before it happens.
*/
111 %typemap
(check
) struct ldb_context
* {
113 SWIG_exception
(SWIG_ValueError
,
114 "ldb context must be non-NULL");
118 * Wrap a small bit of talloc
121 /* Use talloc_init
() to create a parameter to pass to ldb_init
(). Don't
122 forget to free it using talloc_free
() afterwards.
*/
124 TALLOC_CTX
*talloc_init
(char
*name
);
125 int talloc_free
(TALLOC_CTX
*ptr
);
128 * Wrap struct ldb_val
131 %typemap
(in
) struct ldb_val
*INPUT (struct ldb_val temp
) {
133 if
(!PyString_Check
($input
)) {
134 PyErr_SetString
(PyExc_TypeError
, "string arg expected");
137 $
1->length
= PyString_Size
($input
);
138 $
1->data
= PyString_AsString
($input
);
141 %typemap
(out
) struct ldb_val
{
142 $result
= PyString_FromStringAndSize
($
1.data
, $
1.length
);
146 * Wrap struct ldb_result
149 %typemap
(in
, numinputs
=0) struct ldb_result
**OUT
(struct ldb_result
*temp_ldb_result
) {
150 $
1 = &temp_ldb_result;
153 %typemap
(argout
) struct ldb_result
** {
154 resultobj
= SWIG_NewPointerObj
(*$
1, SWIGTYPE_p_ldb_result
, 0);
157 %types
(struct ldb_result
*);
160 * Wrap struct ldb_message_element
163 %array_functions
(struct ldb_val
, ldb_val_array
);
165 struct ldb_message_element
{
168 unsigned int num_values
;
169 struct ldb_val
*values
;
173 * Wrap struct ldb_message
176 %array_functions
(struct ldb_message_element
, ldb_message_element_array
);
180 unsigned int num_elements
;
181 struct ldb_message_element
*elements
;
186 * Wrap struct ldb_result
189 %array_functions
(struct ldb_message
*, ldb_message_ptr_array
);
193 struct ldb_message
**msgs
;
195 struct ldb_control
**controls
;
204 int ldb_global_init
(void
);
205 struct ldb_context
*ldb_init
(TALLOC_CTX
*mem_ctx
);
209 const char
*ldb_errstring
(struct ldb_context
*ldb
);
210 const char
*ldb_strerror
(int ldb_err
);
212 /* Top-level ldb operations
*/
214 int ldb_connect
(struct ldb_context
*ldb
, const char
*url
, unsigned int flags
, const char
*options
[]);
216 int ldb_search
(struct ldb_context
*ldb
, const struct ldb_dn
*base
, enum ldb_scope scope
, const char
*expression
, const char
* const
*attrs
, struct ldb_result
**OUT
);
218 int ldb_delete
(struct ldb_context
*ldb
, const struct ldb_dn
*dn
);
220 int ldb_rename
(struct ldb_context
*ldb
, const struct ldb_dn
*olddn
, const struct ldb_dn
*newdn
);
222 int ldb_add
(struct ldb_context
*ldb
, const struct ldb_message
*message
);
224 /* Ldb message operations
*/
226 struct ldb_message
*ldb_msg_new
(void
*mem_ctx
);
228 struct ldb_message_element
*ldb_msg_find_element
(const struct ldb_message
*msg
, const char
*attr_name
);
230 int ldb_msg_add_value
(struct ldb_message
*msg
, const char
*attr_name
, const struct ldb_val
*INPUT);
232 void ldb_msg_remove_attr
(struct ldb_message
*msg
, const char
*attr
);
234 int ldb_msg_sanity_check
(struct ldb_message
*msg
);
238 struct ldb_dn
*ldb_dn_explode
(void
*mem_ctx
, const char
*dn
);
240 char
*ldb_dn_linearize
(void
*mem_ctx
, const struct ldb_dn
*dn
);