]> git.sur5r.net Git - openldap/blob - servers/slapd/slapi/slapi.h
41afe283f97ef70819ee357b1cccfe8a22988d3d
[openldap] / servers / slapd / slapi / slapi.h
1 /*
2  * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5 /*
6  * (C) Copyright IBM Corp. 1997,2002
7  * Redistribution and use in source and binary forms are permitted
8  * provided that this notice is preserved and that due credit is 
9  * given to IBM Corporation. This software is provided ``as is'' 
10  * without express or implied warranty.
11  */
12
13 #ifndef _SLAPI_H
14 #define _SLAPI_H
15
16 #include <ibm_pblock_params.h> 
17
18 LDAP_BEGIN_DECL
19
20 typedef struct  slapi_pblock    Slapi_PBlock;
21 typedef struct  slap_entry      Slapi_Entry;
22 typedef struct  slap_attr       Slapi_Attr;
23 typedef struct  berval          Slapi_Value;
24 typedef BerVarray               Slapi_ValueSet;
25 typedef Filter                  Slapi_Filter;
26
27 LDAP_END_DECL
28
29 #include <slapi_utils.h>
30 #ifndef NO_PBLOCK_CLASS
31 #include <slapi_pblock.h>
32 #endif /* NO_PBLOCK_CLASS */
33 #include <plugin.h>
34 #include <slapi_ops.h>
35 #if 0 /* unused (yet?) */
36 #include <slapi_cl.h>
37 #endif /* 0 */
38
39 LDAP_BEGIN_DECL
40
41 /*
42  * Attribute flags returned by slapi_attr_get_flags()
43  */
44 #define SLAPI_ATTR_FLAG_SINGLE          0x0001
45 #define SLAPI_ATTR_FLAG_OPATTR          0x0002
46 #define SLAPI_ATTR_FLAG_READONLY        0x0004
47 #define SLAPI_ATTR_FLAG_STD_ATTR        SLAPI_ATTR_FLAG_READONLY
48 #define SLAPI_ATTR_FLAG_OBSOLETE        0x0040
49 #define SLAPI_ATTR_FLAG_COLLECTIVE      0x0080
50 #define SLAPI_ATTR_FLAG_NOUSERMOD       0x0100
51
52 /*
53  * ACL levels
54  */
55 #define SLAPI_ACL_COMPARE       0x01
56 #define SLAPI_ACL_SEARCH        0x02
57 #define SLAPI_ACL_READ          0x04
58 #define SLAPI_ACL_WRITE         0x08
59 #define SLAPI_ACL_DELETE        0x10
60 #define SLAPI_ACL_ADD           0x20
61 #define SLAPI_ACL_SELF          0x40
62 #define SLAPI_ACL_PROXY         0x80
63 #define SLAPI_ACL_ALL           0x7f
64
65 /*
66  * Plugin types universally supported by SLAPI
67  * implementations
68  */
69 #define SLAPI_PLUGIN_DATABASE           1
70 #define SLAPI_PLUGIN_EXTENDEDOP         2
71 #define SLAPI_PLUGIN_PREOPERATION       3
72 #define SLAPI_PLUGIN_POSTOPERATION      4
73 #define SLAPI_PLUGIN_MATCHINGRULE       5
74 #define SLAPI_PLUGIN_SYNTAX             6
75 /* XXX this is SLAPI_PLUGIN_ACL in SunDS */
76 #define SLAPI_PLUGIN_AUDIT              7
77 /*
78  * The following plugin types are reserved for future
79  * Sun ONE DS compatability.
80  */
81 #define SLAPI_PLUGIN_BEPREOPERATION             8       
82 #define SLAPI_PLUGIN_BEPOSTOPERATION            9       
83 #define SLAPI_PLUGIN_ENTRY                      10      
84 #define SLAPI_PLUGIN_TYPE_OBJECT                11      
85 #define SLAPI_PLUGIN_INTERNAL_PREOPERATION      12      
86 #define SLAPI_PLUGIN_INTERNAL_POSTOPERATION     13
87 #define SLAPI_PLUGIN_PWD_STORAGE_SCHEME         14
88 #define SLAPI_PLUGIN_VATTR_SP                   15
89 #define SLAPI_PLUGIN_REVER_PWD_STORAGE_SCHEME   16
90
91 #define SLAPI_PLUGIN_EXTENDED_SENT_RESULT       -1
92 #define SLAPI_PLUGIN_EXTENDED_NOT_HANDLED       -2
93
94 #define SLAPI_BIND_SUCCESS              0
95 #define SLAPI_BIND_FAIL                 2
96 #define SLAPI_BIND_ANONYMOUS            3
97
98 #define SLAPI_BACKEND                           130
99 #define SLAPI_CONNECTION                        131
100 #define SLAPI_OPERATION                         132
101 #define SLAPI_REQUESTOR_ISROOT                  133
102 #define SLAPI_BE_MONITORDN                      134
103 #define SLAPI_BE_TYPE                           135
104 #define SLAPI_BE_READONLY                       136
105 #define SLAPI_BE_LASTMOD                        137
106 #define SLAPI_OPERATION_PARAMETERS              138
107 #define SLAPI_CONN_ID                           139
108
109 #define SLAPI_OPINITIATED_TIME                  140
110 #define SLAPI_REQUESTOR_DN                      141
111 #define SLAPI_REQUESTOR_ISUPDATEDN              142
112 #define SLAPI_IS_REPLICATED_OPERATION           SLAPI_REQUESTOR_ISUPDATEDN
113 #define SLAPI_CONN_DN                           143
114 #define SLAPI_CONN_AUTHTYPE                     144
115 #define SLAPI_CONN_CLIENTIP                     145
116 #define SLAPI_CONN_SERVERIP                     146
117 #define SLAPI_X_CONN_CLIENTPATH                 1300
118 #define SLAPI_X_CONN_SERVERPATH                 1301
119 #define SLAPI_X_CONN_IS_UDP                     1302
120
121 #define SLAPD_AUTH_NONE   "none"
122 #define SLAPD_AUTH_SIMPLE "simple"
123 #define SLAPD_AUTH_SSL    "SSL"
124 #define SLAPD_AUTH_SASL   "SASL "
125
126 #define SLAPI_PLUGIN                            3
127 #define SLAPI_PLUGIN_PRIVATE                    4
128 #define SLAPI_PLUGIN_TYPE                       5
129 #define SLAPI_PLUGIN_ARGV                       6
130 #define SLAPI_PLUGIN_ARGC                       7
131 #define SLAPI_PLUGIN_VERSION                    8
132
133 #define SLAPI_PLUGIN_OPRETURN                   9
134 #define SLAPI_PLUGIN_OBJECT                     10
135 #define SLAPI_PLUGIN_DESTROY_FN                 11
136
137 #define SLAPI_PLUGIN_DESCRIPTION                12
138
139 #define SLAPI_PLUGIN_INTOP_RESULT               15
140 #define SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES       16
141 #define SLAPI_PLUGIN_INTOP_SEARCH_REFERRALS     17
142
143 #define SLAPI_PLUGIN_DB_BIND_FN                 200
144 #define SLAPI_PLUGIN_DB_UNBIND_FN               201
145 #define SLAPI_PLUGIN_DB_SEARCH_FN               202
146 #define SLAPI_PLUGIN_DB_COMPARE_FN              203
147 #define SLAPI_PLUGIN_DB_MODIFY_FN               204
148 #define SLAPI_PLUGIN_DB_MODRDN_FN               205
149 #define SLAPI_PLUGIN_DB_ADD_FN                  206
150 #define SLAPI_PLUGIN_DB_DELETE_FN               207
151 #define SLAPI_PLUGIN_DB_ABANDON_FN              208
152 #define SLAPI_PLUGIN_DB_CONFIG_FN               209
153 #define SLAPI_PLUGIN_CLOSE_FN                   210
154 #define SLAPI_PLUGIN_DB_FLUSH_FN                211
155 #define SLAPI_PLUGIN_START_FN                   212
156 #define SLAPI_PLUGIN_DB_SEQ_FN                  213
157 #define SLAPI_PLUGIN_DB_ENTRY_FN                214
158 #define SLAPI_PLUGIN_DB_REFERRAL_FN             215
159 #define SLAPI_PLUGIN_DB_RESULT_FN               216
160 #define SLAPI_PLUGIN_DB_LDIF2DB_FN              217
161 #define SLAPI_PLUGIN_DB_DB2LDIF_FN              218
162 #define SLAPI_PLUGIN_DB_BEGIN_FN                219
163 #define SLAPI_PLUGIN_DB_COMMIT_FN               220
164 #define SLAPI_PLUGIN_DB_ABORT_FN                221
165 #define SLAPI_PLUGIN_DB_ARCHIVE2DB_FN           222
166 #define SLAPI_PLUGIN_DB_DB2ARCHIVE_FN           223
167 #define SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN    224
168 #define SLAPI_PLUGIN_DB_FREE_RESULT_SET_FN      225
169 #define SLAPI_PLUGIN_DB_SIZE_FN                 226
170 #define SLAPI_PLUGIN_DB_TEST_FN                 227
171 #define SLAPI_PLUGIN_DB_NO_ACL                  250
172
173 #define SLAPI_PLUGIN_EXT_OP_FN                  300
174 #define SLAPI_PLUGIN_EXT_OP_OIDLIST             301
175 #define SLAPI_PLUGIN_PRE_BIND_FN                401
176 #define SLAPI_PLUGIN_PRE_UNBIND_FN              402
177 #define SLAPI_PLUGIN_PRE_SEARCH_FN              403
178 #define SLAPI_PLUGIN_PRE_COMPARE_FN             404
179 #define SLAPI_PLUGIN_PRE_MODIFY_FN              405
180 #define SLAPI_PLUGIN_PRE_MODRDN_FN              406
181 #define SLAPI_PLUGIN_PRE_ADD_FN                 407
182 #define SLAPI_PLUGIN_PRE_DELETE_FN              408
183 #define SLAPI_PLUGIN_PRE_ABANDON_FN             409
184 #define SLAPI_PLUGIN_PRE_ENTRY_FN               410
185 #define SLAPI_PLUGIN_PRE_REFERRAL_FN            411
186 #define SLAPI_PLUGIN_PRE_RESULT_FN              412
187 #define SLAPI_PLUGIN_POST_BIND_FN               501
188 #define SLAPI_PLUGIN_POST_UNBIND_FN             502
189 #define SLAPI_PLUGIN_POST_SEARCH_FN             503
190 #define SLAPI_PLUGIN_POST_COMPARE_FN            504
191 #define SLAPI_PLUGIN_POST_MODIFY_FN             505
192 #define SLAPI_PLUGIN_POST_MODRDN_FN             506
193 #define SLAPI_PLUGIN_POST_ADD_FN                507
194 #define SLAPI_PLUGIN_POST_DELETE_FN             508
195 #define SLAPI_PLUGIN_POST_ABANDON_FN            509
196 #define SLAPI_PLUGIN_POST_ENTRY_FN              510
197 #define SLAPI_PLUGIN_POST_REFERRAL_FN           511
198 #define SLAPI_PLUGIN_POST_RESULT_FN             512
199
200 #define SLAPI_OPERATION_TYPE                    590
201
202 #define SLAPI_PLUGIN_MR_FILTER_CREATE_FN        600
203 #define SLAPI_PLUGIN_MR_INDEXER_CREATE_FN       601
204 #define SLAPI_PLUGIN_MR_FILTER_MATCH_FN         602
205 #define SLAPI_PLUGIN_MR_FILTER_INDEX_FN         603
206 #define SLAPI_PLUGIN_MR_FILTER_RESET_FN         604
207 #define SLAPI_PLUGIN_MR_INDEX_FN                605
208 #define SLAPI_PLUGIN_MR_OID                     610
209 #define SLAPI_PLUGIN_MR_TYPE                    611
210 #define SLAPI_PLUGIN_MR_VALUE                   612
211 #define SLAPI_PLUGIN_MR_VALUES                  613
212 #define SLAPI_PLUGIN_MR_KEYS                    614
213 #define SLAPI_PLUGIN_MR_FILTER_REUSABLE         615
214 #define SLAPI_PLUGIN_MR_QUERY_OPERATOR          616
215 #define SLAPI_PLUGIN_MR_USAGE                   617
216
217 #define SLAPI_OP_LESS                                   1
218 #define SLAPI_OP_LESS_OR_EQUAL                          2
219 #define SLAPI_OP_EQUAL                                  3
220 #define SLAPI_OP_GREATER_OR_EQUAL                       4
221 #define SLAPI_OP_GREATER                                5
222 #define SLAPI_OP_SUBSTRING                              6
223
224 #define SLAPI_PLUGIN_MR_USAGE_INDEX             0
225 #define SLAPI_PLUGIN_MR_USAGE_SORT              1
226
227 #define SLAPI_MATCHINGRULE_NAME                 1
228 #define SLAPI_MATCHINGRULE_OID                  2
229 #define SLAPI_MATCHINGRULE_DESC                 3
230 #define SLAPI_MATCHINGRULE_SYNTAX               4
231 #define SLAPI_MATCHINGRULE_OBSOLETE             5
232
233 #define SLAPI_PLUGIN_SYNTAX_FILTER_AVA          700
234 #define SLAPI_PLUGIN_SYNTAX_FILTER_SUB          701
235 #define SLAPI_PLUGIN_SYNTAX_VALUES2KEYS         702
236 #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_AVA  703
237 #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_SUB  704
238 #define SLAPI_PLUGIN_SYNTAX_NAMES               705
239 #define SLAPI_PLUGIN_SYNTAX_OID                 706
240 #define SLAPI_PLUGIN_SYNTAX_FLAGS               707
241 #define SLAPI_PLUGIN_SYNTAX_COMPARE             708
242
243 #define SLAPI_OPERATION_AUTHTYPE                741
244 #define SLAPI_OPERATION_ID                      742
245 #define SLAPI_CONN_CERT                         743
246 #define SLAPI_CONN_AUTHMETHOD                   746
247
248 #define SLAPI_RESULT_CODE                       881
249 #define SLAPI_RESULT_TEXT                       882
250 #define SLAPI_RESULT_MATCHED                    883
251
252 #define SLAPI_PLUGIN_SYNTAX_FLAG_ORKEYS                 1
253 #define SLAPI_PLUGIN_SYNTAX_FLAG_ORDERING               2
254
255 #define SLAPI_PLUGIN_AUDIT_DATA                 1100
256 #define SLAPI_PLUGIN_AUDIT_FN                   1101
257
258 /* DS 5.x Computed Attribute Callbacks (not exposed) */
259 #define SLAPI_PLUGIN_COMPUTE_EVALUATOR_FN       1200
260 #define SLAPI_PLUGIN_COMPUTE_SEARCH_REWRITER_FN 1201
261
262 #define SLAPI_MANAGEDSAIT                       1000
263
264 #define SLAPI_CONFIG_FILENAME                   40
265 #define SLAPI_CONFIG_LINENO                     41
266 #define SLAPI_CONFIG_ARGC                       42
267 #define SLAPI_CONFIG_ARGV                       43
268
269 #define SLAPI_TARGET_DN                         50
270 #define SLAPI_REQCONTROLS                       51
271
272 #define SLAPI_ENTRY_PRE_OP                      52
273 #define SLAPI_ENTRY_POST_OP                     53
274
275 #define SLAPI_RESCONTROLS                       55
276 #define SLAPI_ADD_RESCONTROL                    56
277
278 #define SLAPI_ADD_TARGET                        SLAPI_TARGET_DN
279 #define SLAPI_ADD_ENTRY                         60
280
281 #define SLAPI_BIND_TARGET                       SLAPI_TARGET_DN
282 #define SLAPI_BIND_METHOD                       70
283 #define SLAPI_BIND_CREDENTIALS                  71
284 #define SLAPI_BIND_SASLMECHANISM                72
285 #define SLAPI_BIND_RET_SASLCREDS                73
286
287 #define SLAPI_COMPARE_TARGET                    SLAPI_TARGET_DN
288 #define SLAPI_COMPARE_TYPE                      80
289 #define SLAPI_COMPARE_VALUE                     81
290
291 #define SLAPI_DELETE_TARGET                     SLAPI_TARGET_DN
292
293 #define SLAPI_MODIFY_TARGET                     SLAPI_TARGET_DN
294 #define SLAPI_MODIFY_MODS                       90
295
296 #define SLAPI_MODRDN_TARGET                     SLAPI_TARGET_DN
297 #define SLAPI_MODRDN_NEWRDN                     100
298 #define SLAPI_MODRDN_DELOLDRDN                  101
299 #define SLAPI_MODRDN_NEWSUPERIOR                102
300
301 #define SLAPI_SEARCH_TARGET                     SLAPI_TARGET_DN
302 #define SLAPI_SEARCH_SCOPE                      110
303 #define SLAPI_SEARCH_DEREF                      111
304 #define SLAPI_SEARCH_SIZELIMIT                  112
305 #define SLAPI_SEARCH_TIMELIMIT                  113
306 #define SLAPI_SEARCH_FILTER                     114
307 #define SLAPI_SEARCH_STRFILTER                  115
308 #define SLAPI_SEARCH_ATTRS                      116
309 #define SLAPI_SEARCH_ATTRSONLY                  117
310
311 #define SLAPI_ABANDON_MSGID                     120
312
313 #define SLAPI_SEQ_TYPE                          150
314 #define SLAPI_SEQ_ATTRNAME                      151
315 #define SLAPI_SEQ_VAL                           152
316
317 #define SLAPI_EXT_OP_REQ_OID                    160
318 #define SLAPI_EXT_OP_REQ_VALUE                  161
319 #define SLAPI_EXT_OP_RET_OID                    162
320 #define SLAPI_EXT_OP_RET_VALUE                  163
321
322 #define SLAPI_MR_FILTER_ENTRY                   170     
323 #define SLAPI_MR_FILTER_TYPE                    171
324 #define SLAPI_MR_FILTER_VALUE                   172
325 #define SLAPI_MR_FILTER_OID                     173
326 #define SLAPI_MR_FILTER_DNATTRS                 174
327
328 #define SLAPI_LDIF2DB_FILE                      180
329 #define SLAPI_LDIF2DB_REMOVEDUPVALS             185
330
331 #define SLAPI_DB2LDIF_PRINTKEY                  183
332
333 #define SLAPI_PARENT_TXN                        190
334 #define SLAPI_TXN                               191
335
336 #define SLAPI_SEARCH_RESULT_SET                 193
337 #define SLAPI_SEARCH_RESULT_ENTRY               194
338 #define SLAPI_NENTRIES                          195
339 #define SLAPI_SEARCH_REFERRALS                  196
340
341 #define SLAPI_CHANGENUMBER                      197
342 #define SLAPI_LOG_OPERATION                     198
343
344 #define SLAPI_DBSIZE                            199
345
346 #define SLAPI_LOG_FATAL                         0
347 #define SLAPI_LOG_TRACE                         1
348 #define SLAPI_LOG_PACKETS                       2
349 #define SLAPI_LOG_ARGS                          3
350 #define SLAPI_LOG_CONNS                         4
351 #define SLAPI_LOG_BER                           5
352 #define SLAPI_LOG_FILTER                        6
353 #define SLAPI_LOG_CONFIG                        7
354 #define SLAPI_LOG_ACL                           8
355 #define SLAPI_LOG_SHELL                         9
356 #define SLAPI_LOG_PARSE                         10
357 #define SLAPI_LOG_HOUSE                         11
358 #define SLAPI_LOG_REPL                          12
359 #define SLAPI_LOG_CACHE                         13
360 #define SLAPI_LOG_PLUGIN                        14
361
362 #define SLAPI_OPERATION_BIND                    0x00000001L
363 #define SLAPI_OPERATION_UNBIND                  0x00000002L
364 #define SLAPI_OPERATION_SEARCH                  0x00000004L
365 #define SLAPI_OPERATION_MODIFY                  0x00000008L
366 #define SLAPI_OPERATION_ADD                     0x00000010L
367 #define SLAPI_OPERATION_DELETE                  0x00000020L
368 #define SLAPI_OPERATION_MODDN                   0x00000040L
369 #define SLAPI_OPERATION_MODRDN                  SLAPI_OPERATION_MODDN
370 #define SLAPI_OPERATION_COMPARE                 0x00000080L
371 #define SLAPI_OPERATION_ABANDON                 0x00000100L
372 #define SLAPI_OPERATION_EXTENDED                0x00000200L
373 #define SLAPI_OPERATION_ANY                     0xFFFFFFFFL
374 #define SLAPI_OPERATION_NONE                    0x00000000L
375
376 LDAP_END_DECL
377
378 #endif /* _SLAPI_H */
379