DBA Data[Home] [Help]

PACKAGE: SYS.DBMS_LDAP

Source


1 PACKAGE DBMS_LDAP AUTHID CURRENT_USER AS
2 
3     VERSION                         CONSTANT VARCHAR2(256) := '2';
4     INTERFACE_VERSION               CONSTANT VARCHAR2(256) := '2';
5 
6     --
7     -- DBMS_LDAP data type definitions
8     --
9 
10     -- We use RAW(32) as a data structure to store external pointers
11     -- It is big enough to store 256 bit pointers!
12 
13     -- this data structure holds a pointer to an LDAP session
14     SUBTYPE SESSION IS RAW(32);
15 
16     -- this data structure holds a pointer to an LDAP message
17     SUBTYPE MESSAGE IS RAW(32);
18 
19     -- this data structure holds a pointer to an LDAP mod array
20     SUBTYPE MOD_ARRAY IS RAW(32);
21 
22     -- this data structure is used to hold binary value
23     SUBTYPE BERVAL IS raw(32000);
24 
25     -- this data structure is used to pass time limit information to
26     -- the LDAP api.
27     TYPE TIMEVAL IS RECORD
28       ( seconds  PLS_INTEGER,
29         useconds PLS_INTEGER
30         );
31 
32     -- this data structure is used to pass LDAP control to the api.
33     TYPE ldapcontrol IS RECORD
34       (ldctl_oid        VARCHAR2(256),
35        ldctl_value      BERVAL,
36        ldctl_iscritical VARCHAR2(1));
37 
38     -- this data structure holds a pointer to the BER Element used
39     -- for decoding the incoming message
40     SUBTYPE BER_ELEMENT is RAW(32);
41 
42     -- this data structure is used to hold a list of values
43     TYPE STRING_COLLECTION is TABLE of VARCHAR2(32767)
44       INDEX BY BINARY_INTEGER;
45 
46     -- this data structure is used to hold a list of binary values
47     TYPE BINVAL_COLLECTION is TABLE of RAW(32767)
48       INDEX BY BINARY_INTEGER;
49 
50     -- this data structure is used to hold a list of berval values
51     TYPE BERVAL_COLLECTION is TABLE of RAW(32767)
52       INDEX BY BINARY_INTEGER;
53 
54     -- this data structure is used to hold a list of berval values
55     TYPE BLOB_COLLECTION is TABLE of BLOB
56       INDEX BY BINARY_INTEGER;
57 
58 
59 
60 
61     --
62     -- DBMS_LDAP function definitions
63     --
64 
65     -- Checks the Support for Interface Version.
66     FUNCTION check_interface_version(interface_version IN VARCHAR2)
67     RETURN PLS_INTEGER;
68 
69     -- Initializes the LDAP library and return a session handler
70     -- for use in subsequent calls.
71     FUNCTION init (hostname IN VARCHAR2,
72                    portnum  IN PLS_INTEGER )
73       RETURN SESSION;
74 
75 
76     -- Synchronously authenticates to the directory server using
77     -- a Distinguished Name and password.
78     FUNCTION simple_bind_s (ld     IN SESSION,
79                             dn     IN VARCHAR2,
80                             passwd IN VARCHAR2)
81       RETURN PLS_INTEGER;
82 
83 
84     -- Synchronously authenticates to the directory server using
85     -- a Distinguished Name and some arbitrary credentials.
86     FUNCTION bind_s (ld   IN SESSION,
87                      dn   IN VARCHAR2,
88                      cred IN VARCHAR2,
89                      meth IN PLS_INTEGER )
90       RETURN PLS_INTEGER;
91 
92 
93     -- Synchronously disposes of an LDAP session, freeing all
94     -- associated resources.
95     FUNCTION unbind_s (ld IN OUT SESSION )
96       RETURN PLS_INTEGER;
97 
98 
99     -- Compares a value with a attribute value contained in an
100     -- entry.
101     FUNCTION compare_s (ld    IN SESSION,
102                         dn    IN VARCHAR2,
103                         attr  IN VARCHAR2,
104                         value IN VARCHAR2)
105       RETURN PLS_INTEGER;
106 
107 
108     -- Searches for directory entries.
109     FUNCTION search_s  (ld       IN  SESSION,
110                         base     IN  VARCHAR2,
111                         scope    IN  PLS_INTEGER,
112                         filter   IN  VARCHAR2,
113                         attrs    IN  STRING_COLLECTION,
114                         attronly IN  PLS_INTEGER,
115                         res      OUT MESSAGE)
116       RETURN PLS_INTEGER;
117 
118 
119     -- Searches for directory entries, respecting a local timeout.
120     FUNCTION search_st  (ld       IN  SESSION,
121                          base     IN  VARCHAR2,
122                          scope    IN  PLS_INTEGER,
123                          filter   IN  VARCHAR2,
124                          attrs    IN  STRING_COLLECTION,
125                          attronly IN  PLS_INTEGER,
126                          tv       IN  TIMEVAL,
127                          res      OUT MESSAGE)
128       RETURN PLS_INTEGER;
129 
130 
131     -- Returns the first entry in a chain of results.
132     FUNCTION first_entry (ld  IN SESSION,
133                           msg IN MESSAGE )
134       RETURN MESSAGE;
135 
136 
137     -- Returns the next entry in a chain of search results.
138     FUNCTION next_entry (ld  IN SESSION,
139                          msg IN MESSAGE )
140       RETURN MESSAGE;
141 
142 
143     -- Determines the number of entries in an LDAP result
144     -- message chain.
145     FUNCTION count_entries (ld  IN SESSION,
146                             msg IN MESSAGE )
147       RETURN PLS_INTEGER;
148 
149 
150     -- Returns the first attribute in an entry.
151     FUNCTION first_attribute (ld        IN  SESSION,
152                               ldapentry IN  MESSAGE,
153                               ber_elem  OUT BER_ELEMENT)
154       RETURN VARCHAR2;
155 
156 
157     -- Returns the next attribute contained in an entry.
158     FUNCTION next_attribute (ld        IN SESSION,
159                              ldapentry IN MESSAGE,
160                              ber_elem  IN BER_ELEMENT)
161       RETURN VARCHAR2;
162 
163 
164     -- Retrieves the Distinguished Name of an entry.
165     FUNCTION get_dn(ld        IN SESSION,
166                     ldapentry IN MESSAGE)
167       RETURN VARCHAR2;
168 
169     --  Retrieves values associated with a char  attribute for a given entry
170     FUNCTION get_values(ld         IN SESSION,
171                         ldapentry  IN MESSAGE,
172                         attr       IN VARCHAR2)
173       RETURN STRING_COLLECTION;
174 
175     --  Retrieves binary values associated with an attribute for a given entry
176     FUNCTION get_values_len(ld         IN SESSION,
177                             ldapentry  IN MESSAGE,
178                             attr       IN VARCHAR2)
179       RETURN BINVAL_COLLECTION;
180 
181     --  Retrieves large binary values(greater than 32kb)
182     --  associated with an attribute for a given entry
183     FUNCTION get_values_blob(ld         IN SESSION,
184                             ldapentry  IN MESSAGE,
185                             attr       IN VARCHAR2)
186       RETURN BLOB_COLLECTION;
187 
188     -- Deletes an entry from the LDAP directory. The caller is
189     -- blocked until the deletion is complete.
190     FUNCTION delete_s(ld      IN SESSION,
191                       entrydn IN VARCHAR2)
192       RETURN PLS_INTEGER;
193 
194     -- Deletes an entry from the LDAP directory.
195     FUNCTION delete(ld      IN SESSION,
196                     entrydn IN VARCHAR2)
197       RETURN PLS_INTEGER;
198 
199     -- Renames the given entry to have the new relative
200     -- distinguished name. The caller is blocked until the
201     -- renaming is complete.
202     FUNCTION modrdn2_s(ld           IN SESSION,
203                        entrydn      IN VARCHAR2,
204                        newrdn       IN VARCHAR2,
205                        deleteoldrdn IN PLS_INTEGER)
206       RETURN PLS_INTEGER;
207 
208 
209     -- Gets the string representation of an LDAP return code
210     FUNCTION err2string( ldap_err   IN PLS_INTEGER )
211       RETURN VARCHAR2;
212 
213 
214     -- Gets the pointer of the ldapmod representation
215     -- which contains size, count, and a pointer to an array
216     -- of ldapmod structure.
217     -- ldapmod structure contains mod_op, mod_type, and an
218     -- array of string/berval.
219     -- If the return value is NULL, then there is an error.
220     FUNCTION create_mod_array(num IN PLS_INTEGER)
221       RETURN MOD_ARRAY;
222 
223 
224     -- Populates the ldapmod structure, string value.
225     -- If the return modptr is NULL, then there is an error.
226     PROCEDURE populate_mod_array(modptr   IN MOD_ARRAY,
227                                  mod_op   IN PLS_INTEGER,
228                                  mod_type IN VARCHAR2,
229                                  modval   IN STRING_COLLECTION);
230 
231 
232     -- Populates the ldapmod structure, binary value.
233     -- If the return modptr is NULL, then there is an error.
234     PROCEDURE populate_mod_array(modptr   IN MOD_ARRAY,
235                                  mod_op   IN PLS_INTEGER,
236                                  mod_type IN VARCHAR2,
237                                  modbval  IN BERVAL_COLLECTION);
238 
239     -- Populates the ldapmod structure, large binary value (greater than 32kb).
240     -- If the return modptr is NULL, then there is an error.
241     PROCEDURE populate_mod_array(modptr   IN MOD_ARRAY,
242                                  mod_op   IN PLS_INTEGER,
243                                  mod_type IN VARCHAR2,
244                                  modbval  IN BLOB_COLLECTION);
245 
246 
247     -- Modifies an existing LDAP directory entry. The caller is
248     -- blocked until the modification is complete.
249     FUNCTION modify_s(ld      IN SESSION,
250                       entrydn IN VARCHAR2,
251                       modptr  IN MOD_ARRAY)
252       RETURN PLS_INTEGER;
253 
254     -- Adds a new entry to the LDAP directory. The caller is
255     -- blocked until the addition is complete.
256     FUNCTION add_s(ld      IN SESSION,
257                    entrydn IN VARCHAR2,
258                    modptr  IN MOD_ARRAY)
259       RETURN PLS_INTEGER;
260 
261 
262     -- Frees up the memory used by the ldapmod representation (array).
263     PROCEDURE free_mod_array(modptr IN MOD_ARRAY);
264 
265 
266     -- Counts the number of values returned by get_values()
267     FUNCTION count_values(vals IN STRING_COLLECTION)
268       RETURN PLS_INTEGER;
269 
270 
271     -- Counts the number of values returned by get_values_len()
272     FUNCTION count_values_len(vals IN BINVAL_COLLECTION)
273       RETURN PLS_INTEGER;
274 
275     -- Counts the number of values returned by get_values_blob()
276     FUNCTION count_values_blob(vals IN BLOB_COLLECTION)
277       RETURN PLS_INTEGER;
278 
279     -- Frees the memory associated with binary attribute values
280     -- that were returned by get_values_blob() function.
281     PROCEDURE value_free_blob(vals IN OUT BLOB_COLLECTION);
282 
283 
284 
285     -- Performs modify dn operation
286     FUNCTION rename_s(ld           IN SESSION,
287                       dn           IN VARCHAR2,
288                       newrdn       IN VARCHAR2,
289                       newparent    IN VARCHAR2,
290                       deleteoldrdn IN PLS_INTEGER,
291                       serverctrls  IN LDAPCONTROL DEFAULT NULL,
292                       clientctrls  IN LDAPCONTROL DEFAULT NULL)
293       RETURN PLS_INTEGER;
294 
295 
296     -- Breaks a Distinguished Name (DN) up into its components
297     FUNCTION explode_dn(dn      IN VARCHAR2,
298                         notypes IN PLS_INTEGER)
299       RETURN STRING_COLLECTION;
300 
301 
302 
303     -- Establishes a SSL connection
304     FUNCTION open_ssl(ld              IN SESSION,
305                       sslwrl          IN VARCHAR2,
306                       sslwalletpasswd IN VARCHAR2,
307                       sslauth         IN PLS_INTEGER)
308       RETURN PLS_INTEGER;
309 
310     FUNCTION get_session_info(ld        IN  SESSION,
311                               data_type IN  PLS_INTEGER,
312                               data      OUT VARCHAR2)
313       RETURN PLS_INTEGER;
314 
315     FUNCTION msgfree(lm              IN MESSAGE)
316       RETURN PLS_INTEGER;
317     PROCEDURE ber_free(ber   IN BER_ELEMENT,
318                                  freebuf   IN PLS_INTEGER);
319 
320 
321     FUNCTION nls_convert_to_utf8 ( data_local    IN   VARCHAR2)
322 
323       RETURN VARCHAR2;
324 
325     FUNCTION nls_convert_to_utf8 ( data_local    IN   STRING_COLLECTION)
326 
327       RETURN STRING_COLLECTION;
328 
329     FUNCTION nls_convert_from_utf8 ( data_utf8    IN   VARCHAR2)
330 
331       RETURN VARCHAR2;
332 
333     FUNCTION nls_convert_from_utf8 ( data_utf8    IN   STRING_COLLECTION)
334 
335       RETURN STRING_COLLECTION;
336 
337     FUNCTION nls_get_dbcharset_name
338 
339       RETURN VARCHAR2;
340     -------------------- Tracing functions ----------------
341     ---- To be used by Oracle Support Analysts ONLY -------
342     -------------------------------------------------------
343     PROCEDURE set_trace_level(new_trace_level IN PLS_INTEGER);
344     FUNCTION  get_trace_level RETURN PLS_INTEGER;
345     ---------------- End of Trace Functions -----------------
346 
347 
348     -- LDAP Flag definitions
349 
350     -- set use_exception flag to FALSE: not use exception (return error code)
351     -- set use_exception flag to TRUE: use exception.
352     USE_EXCEPTION BOOLEAN DEFAULT TRUE;
353 
354     -- set user_conversion flag to TRUE: All the input string data to the
355     --                                   Package functions would
356     --                                  be converted from database characterset
357     --                                  to UTF8 character set.
361     -- set user_conversion flag to FALSE: No conversions would be done.
358     --                                  All the output string data would be
359     --                                  converted from UTF8 character set to
360     --                                  database character set.
362     UTF8_CONVERSION BOOLEAN DEFAULT TRUE;
363 
364 
365     --
366     -- LDAP constant definitions
367     --
368 
369     PORT     CONSTANT NUMBER := 389;
370     SSL_PORT CONSTANT NUMBER := 636;
371 
372     -- various options that can be set/unset
373     OPT_DESC               CONSTANT NUMBER := 1;
374     OPT_DEREF              CONSTANT NUMBER := 2;
375     OPT_SIZELIMIT          CONSTANT NUMBER := 3;
376     OPT_TIMELIMIT          CONSTANT NUMBER := 4;
377     OPT_THREAD_FN_PTRS     CONSTANT NUMBER := 5;
378     OPT_REBIND_FN          CONSTANT NUMBER := 6;
379     OPT_REBIND_ARG         CONSTANT NUMBER := 7;
380     OPT_REFERRALS          CONSTANT NUMBER := 8;
381     OPT_RESTART            CONSTANT NUMBER := 9;
382     OPT_SSL                CONSTANT NUMBER := 10;
383     OPT_IO_FN_PTRS         CONSTANT NUMBER := 11;
384     OPT_CACHE_FN_PTRS      CONSTANT NUMBER := 13;
385     OPT_CACHE_STRATEGY     CONSTANT NUMBER := 14;
386     OPT_CACHE_ENABLE       CONSTANT NUMBER := 15;
387     OPT_REFERRAL_HOP_LIMIT CONSTANT NUMBER := 16;
388     OPT_PROTOCOL_VERSION   CONSTANT NUMBER := 17;
389     OPT_SERVER_CONTROLS    CONSTANT NUMBER := 18;
390     OPT_CLIENT_CONTROLS    CONSTANT NUMBER := 19;
391     OPT_PREFERRED_LANGUAGE CONSTANT NUMBER := 20;
392     OPT_ERROR_NUMBER       CONSTANT NUMBER := 49;
393     OPT_ERROR_STRING       CONSTANT NUMBER := 50;
394 
395 
396     -- for on/off options
397     OPT_ON  CONSTANT NUMBER := 1;
398     OPT_OFF CONSTANT NUMBER := 0;
399 
400     -- SSL Authentication modes
401     GSLC_SSL_NO_AUTH     CONSTANT NUMBER := 1;
402     GSLC_SSL_ONEWAY_AUTH CONSTANT NUMBER := 32;
403     GSLC_SSL_TWOWAY_AUTH CONSTANT NUMBER := 64;
404 
405     -- search scopes
406     SCOPE_BASE     CONSTANT NUMBER := 0;
407     SCOPE_ONELEVEL CONSTANT NUMBER := 1;
408     SCOPE_SUBTREE  CONSTANT NUMBER := 2;
409 
410     -- for modifications
411     MOD_ADD     CONSTANT NUMBER := 0;
412     MOD_DELETE  CONSTANT NUMBER := 1;
413     MOD_REPLACE CONSTANT NUMBER := 2;
414     MOD_BVALUES CONSTANT NUMBER := 128;
415 
416     /* authentication methods available */
417     AUTH_NONE   CONSTANT NUMBER := 0;
418     AUTH_SIMPLE CONSTANT NUMBER := 128; -- context specific + primitive
419     AUTH_SASL   CONSTANT NUMBER := 163; -- v3 SASL
420 
421     -- structure for representing an LDAP server connection
422     CONNST_NEEDSOCKET CONSTANT NUMBER := 1;
423     CONNST_CONNECTING CONSTANT NUMBER := 2;
424     CONNST_CONNECTED  CONSTANT NUMBER := 3;
425 
426     -- structure used to track outstanding requests
427     REQST_INPROGRESS   CONSTANT NUMBER := 1;
428     REQST_CHASINGREFS  CONSTANT NUMBER := 2;
429     REQST_NOTCONNECTED CONSTANT NUMBER := 3;
430     REQST_WRITING      CONSTANT NUMBER := 4;
431 
432     -- structure representing an ldap connection
433     DEREF_NEVER     CONSTANT NUMBER := 0;
434     DEREF_SEARCHING CONSTANT NUMBER := 1;
435     DEREF_FINDING   CONSTANT NUMBER := 2;
436     DEREF_ALWAYS    CONSTANT NUMBER := 3;
437 
438     -- types for ldap URL handling
439     URL_ERR_NOTLDAP  CONSTANT NUMBER := 1; -- URL doesn't begin with "ldap
440     URL_ERR_NODN     CONSTANT NUMBER := 2; -- URL has no DN (required)
441     URL_ERR_BADSCOPE CONSTANT NUMBER := 3; -- URL scope string is invalid
442     URL_ERR_MEM      CONSTANT NUMBER := 4; -- can't allocate memory space
443 
444     -- types for session info
445     TYPE_ADD_INFO    CONSTANT NUMBER := 1;
446 
447 
448     --
449     -- possible error codes we can return from LDAP server
450     --
451     SUCCESS                   CONSTANT NUMBER := 0;
452     OPERATIONS_ERROR          CONSTANT NUMBER := 1;
453     PROTOCOL_ERROR            CONSTANT NUMBER := 2;
454     TIMELIMIT_EXCEEDED        CONSTANT NUMBER := 3;
455     SIZELIMIT_EXCEEDED        CONSTANT NUMBER := 4;
456     COMPARE_FALSE             CONSTANT NUMBER := 5;
457     COMPARE_TRUE              CONSTANT NUMBER := 6;
458     STRONG_AUTH_NOT_SUPPORTED CONSTANT NUMBER := 7;
459     STRONG_AUTH_REQUIRED      CONSTANT NUMBER := 8;
460     PARTIAL_RESULTS           CONSTANT NUMBER := 9;
461     REFERRAL                  CONSTANT NUMBER := 10;
462     ADMINLIMIT_EXCEEDED       CONSTANT NUMBER := 11;
463     UNAVAILABLE_CRITIC        CONSTANT NUMBER := 12;
464 
465     NO_SUCH_ATTRIBUTE         CONSTANT NUMBER := 16;
466     UNDEFINED_TYPE            CONSTANT NUMBER := 17;
467     INAPPROPRIATE_MATCHING    CONSTANT NUMBER := 18;
468     CONSTRAINT_VIOLATION      CONSTANT NUMBER := 19;
469     TYPE_OR_VALUE_EXISTS      CONSTANT NUMBER := 20;
470     INVALID_SYNTAX            CONSTANT NUMBER := 21;
471 
472     NO_SUCH_OBJECT            CONSTANT NUMBER := 32;
473     ALIAS_PROBLEM             CONSTANT NUMBER := 33;
474     INVALID_DN_SYNTAX         CONSTANT NUMBER := 34;
475     IS_LEAF                   CONSTANT NUMBER := 35;
476     ALIAS_DEREF_PROBLEM       CONSTANT NUMBER := 36;
477 
478     INAPPROPRIATE_AUTH        CONSTANT NUMBER := 48;
479     INVALID_CREDENTIALS       CONSTANT NUMBER := 49;
480     INSUFFICIENT_ACCESS       CONSTANT NUMBER := 50;
484     LOOP_DETECT               CONSTANT NUMBER := 54;
481     BUSY                      CONSTANT NUMBER := 51;
482     UNAVAILABLE               CONSTANT NUMBER := 52;
483     UNWILLING_TO_PERFORM      CONSTANT NUMBER := 53;
485 
486     NAMING_VIOLATION          CONSTANT NUMBER := 64;
487     OBJECT_CLASS_VIOLATION    CONSTANT NUMBER := 65;
488     NOT_ALLOWED_ON_NONLEAF    CONSTANT NUMBER := 66;
489     NOT_ALLOWED_ON_RDN        CONSTANT NUMBER := 67;
490     ALREADY_EXISTS            CONSTANT NUMBER := 68;
491     NO_OBJECT_CLASS_MODS      CONSTANT NUMBER := 69;
492     RESULTS_TOO_LARGE         CONSTANT NUMBER := 70;
493 
494     OTHER                     CONSTANT NUMBER := 80;
495     SERVER_DOWN               CONSTANT NUMBER := 81;
496     LOCAL_ERROR               CONSTANT NUMBER := 82;
497     ENCODING_ERROR            CONSTANT NUMBER := 83;
498     DECODING_ERROR            CONSTANT NUMBER := 84;
499     TIMEOUT                   CONSTANT NUMBER := 85;
500     AUTH_UNKNOWN              CONSTANT NUMBER := 86;
501     FILTER_ERROR              CONSTANT NUMBER := 87;
502     USER_CANCELLED            CONSTANT NUMBER := 88;
503     PARAM_ERROR               CONSTANT NUMBER := 89;
504     NO_MEMORY                 CONSTANT NUMBER := 90;
505 
506 
507     --
508     -- possible error codes we can return from LDAP client
509     --
510     INVALID_LDAP_SESSION      CONSTANT NUMBER := 1024;
511     INVALID_LDAP_AUTH_METHOD  CONSTANT NUMBER := 1025;
512     INVALID_LDAP_SEARCH_SCOPE CONSTANT NUMBER := 1026;
513     INVALID_LDAP_TIME_VALUE   CONSTANT NUMBER := 1027;
514     INVALID_LDAP_MESSAGE      CONSTANT NUMBER := 1027;
515     INVALID_LDAP_ENTRY_DN     CONSTANT NUMBER := 1028;
516     INVALID_LDAPMOD           CONSTANT NUMBER := 1029;
517     INVALID_LDAP_DN           CONSTANT NUMBER := 1030;
518     INVALID_LDAP_NEWRDN       CONSTANT NUMBER := 1031;
519     INVALID_LDAP_NEWPARENT    CONSTANT NUMBER := 1032;
520     INVALID_LDAP_DELETEOLDRDN CONSTANT NUMBER := 1033;
521     INVALID_SSLWRL            CONSTANT NUMBER := 1034;
522     INVALID_SSLWALLETPASSWD   CONSTANT NUMBER := 1035;
523     INVALID_SSLAUTH           CONSTANT NUMBER := 1036;
524 
525 
526 
527     --
528     -- LDAP SERVER exception definitions
529     --
530 
531     -- LDAP general error
532     general_error EXCEPTION;
533     PRAGMA EXCEPTION_INIT(general_error, -31202);
534 
535     -- LDAP Init Failed
536     init_failed EXCEPTION;
537     PRAGMA EXCEPTION_INIT(init_failed, -31203);
538 
539     -- Invalid LDAP Session
540     invalid_session EXCEPTION;
541     PRAGMA EXCEPTION_INIT(invalid_session, -31204);
542 
543     -- Invalid LDAP Auth method
544     invalid_auth_method EXCEPTION;
545     PRAGMA EXCEPTION_INIT(invalid_auth_method, -31205);
546 
547     -- Invalid LDAP search scope
548     invalid_search_scope EXCEPTION;
549     PRAGMA EXCEPTION_INIT(invalid_search_scope, -31206);
550 
551     -- Invalid LDAP search time value
552     invalid_search_time_val EXCEPTION;
553     PRAGMA EXCEPTION_INIT(invalid_search_time_val, -31207);
554 
555     -- Invalid LDAP Message
556     invalid_message EXCEPTION;
557     PRAGMA EXCEPTION_INIT(invalid_message, -31208);
558 
559     -- LDAP count_entry error
560     count_entry_error EXCEPTION;
561     PRAGMA EXCEPTION_INIT(count_entry_error, -31209);
562 
563     -- LDAP get_dn error
564     get_dn_error EXCEPTION;
565     PRAGMA EXCEPTION_INIT(get_dn_error, -31210);
566 
567     -- Invalid LDAP entry dn
568     invalid_entry_dn EXCEPTION;
569     PRAGMA EXCEPTION_INIT(invalid_entry_dn, -31211);
570 
571     -- Invalid LDAP mod_array
572     invalid_mod_array EXCEPTION;
573     PRAGMA EXCEPTION_INIT(invalid_mod_array, -31212);
574 
575     -- Invalid LDAP mod option
576     invalid_mod_option EXCEPTION;
577     PRAGMA EXCEPTION_INIT(invalid_mod_option, -31213);
578 
579     -- Invalid LDAP mod type
580     invalid_mod_type EXCEPTION;
581     PRAGMA EXCEPTION_INIT(invalid_mod_type, -31214);
582 
583     -- Invalid LDAP mod value
584     invalid_mod_value EXCEPTION;
585     PRAGMA EXCEPTION_INIT(invalid_mod_value, -31215);
586 
587     -- Invalid LDAP rdn
588     invalid_rdn EXCEPTION;
589     PRAGMA EXCEPTION_INIT(invalid_rdn, -31216);
590 
591     -- Invalid LDAP newparent
592     invalid_newparent EXCEPTION;
593     PRAGMA EXCEPTION_INIT(invalid_newparent, -31217);
594 
595     -- Invalid LDAP deleteoldrdn
596     invalid_deleteoldrdn EXCEPTION;
597     PRAGMA EXCEPTION_INIT(invalid_deleteoldrdn, -31218);
598 
599     -- Invalid LDAP notypes
600     invalid_notypes EXCEPTION;
601     PRAGMA EXCEPTION_INIT(invalid_notypes, -31219);
602 
603     -- Invalid LDAP SSL wallet location
604     invalid_ssl_wallet_loc EXCEPTION;
605     PRAGMA EXCEPTION_INIT(invalid_ssl_wallet_loc, -31220);
606 
607     -- Invalid LDAP SSL wallet passwd
608     invalid_ssl_wallet_passwd EXCEPTION;
609     PRAGMA EXCEPTION_INIT(invalid_ssl_wallet_passwd, -31221);
610 
611     -- Invalid LDAP SSL authentication mode
612     invalid_ssl_auth_mode EXCEPTION;
613     PRAGMA EXCEPTION_INIT(invalid_ssl_auth_mode, -31222);
614 
615     -- Not supporting MTS mode
616     mts_mode_not_supported EXCEPTION;
617     PRAGMA EXCEPTION_INIT(mts_mode_not_supported, -31398);
618 
619 END DBMS_LDAP;