############################################################################# # $Id: API.pm,v 1.10 1998/08/13 09:13:55 leif Exp $ # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the # License for the specific language governing rights and limitations # under the License. # # The Original Code is PerLDAP. The Initial Developer of the Original # Code is Netscape Communications Corp. and Clayton Donley. Portions # created by Netscape are Copyright (C) Netscape Communications # Corp., portions created by Clayton Donley are Copyright (C) Clayton # Donley. All Rights Reserved. # # Contributor(s): # # DESCRIPTION # This is a description. # ############################################################################# package Mozilla::LDAP::API; use strict; use Carp; use vars qw($VERSION @ISA %EXPORT_TAGS @EXPORT @EXPORT_OK $AUTOLOAD); require Exporter; require DynaLoader; require AutoLoader; @ISA = qw(Exporter DynaLoader); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. %EXPORT_TAGS = ( constant => [qw( LDAPS_PORT LDAP_ADMINLIMIT_EXCEEDED LDAP_AFFECTS_MULTIPLE_DSAS LDAP_ALIAS_DEREF_PROBLEM LDAP_ALIAS_PROBLEM LDAP_ALL_USER_ATTRS LDAP_ALREADY_EXISTS LDAP_AUTH_METHOD_NOT_SUPPORTED LDAP_AUTH_NONE LDAP_AUTH_SASL LDAP_AUTH_SIMPLE LDAP_AUTH_UNKNOWN LDAP_BUSY LDAP_CACHE_CHECK LDAP_CACHE_LOCALDB LDAP_CACHE_POPULATE LDAP_CHANGETYPE_ADD LDAP_CHANGETYPE_ANY LDAP_CHANGETYPE_DELETE LDAP_CHANGETYPE_MODDN LDAP_CHANGETYPE_MODIFY LDAP_CLIENT_LOOP LDAP_COMPARE_FALSE LDAP_COMPARE_TRUE LDAP_CONFIDENTIALITY_REQUIRED LDAP_CONNECT_ERROR LDAP_CONSTRAINT_VIOLATION LDAP_CONTROL_ENTRYCHANGE LDAP_CONTROL_MANAGEDSAIT LDAP_CONTROL_NOT_FOUND LDAP_CONTROL_PERSISTENTSEARCH LDAP_CONTROL_PWEXPIRED LDAP_CONTROL_PWEXPIRING LDAP_CONTROL_REFERRALS LDAP_CONTROL_SORTREQUEST LDAP_CONTROL_SORTRESPONSE LDAP_CONTROL_VLVREQUEST LDAP_CONTROL_VLVRESPONSE LDAP_DECODING_ERROR LDAP_DEREF_ALWAYS LDAP_DEREF_FINDING LDAP_DEREF_NEVER LDAP_DEREF_SEARCHING LDAP_ENCODING_ERROR LDAP_FILTER_ERROR LDAP_FILT_MAXSIZ LDAP_INAPPROPRIATE_AUTH LDAP_INAPPROPRIATE_MATCHING LDAP_INSUFFICIENT_ACCESS LDAP_INVALID_CREDENTIALS LDAP_INVALID_DN_SYNTAX LDAP_INVALID_SYNTAX LDAP_IS_LEAF LDAP_LOCAL_ERROR LDAP_LOOP_DETECT LDAP_MOD_ADD LDAP_MOD_BVALUES LDAP_MOD_DELETE LDAP_MOD_REPLACE LDAP_MORE_RESULTS_TO_RETURN LDAP_MSG_ALL LDAP_MSG_ONE LDAP_MSG_RECEIVED LDAP_NAMING_VIOLATION LDAP_NOT_ALLOWED_ON_NONLEAF LDAP_NOT_ALLOWED_ON_RDN LDAP_NOT_SUPPORTED LDAP_NO_ATTRS LDAP_NO_LIMIT LDAP_NO_MEMORY LDAP_NO_OBJECT_CLASS_MODS LDAP_NO_RESULTS_RETURNED LDAP_NO_SUCH_ATTRIBUTE LDAP_NO_SUCH_OBJECT LDAP_OBJECT_CLASS_VIOLATION LDAP_OPERATIONS_ERROR LDAP_OPT_CACHE_ENABLE LDAP_OPT_CACHE_FN_PTRS LDAP_OPT_CACHE_STRATEGY LDAP_OPT_CLIENT_CONTROLS LDAP_OPT_DEREF LDAP_OPT_DESC LDAP_OPT_DNS LDAP_OPT_DNS_FN_PTRS LDAP_OPT_ERROR_NUMBER LDAP_OPT_ERROR_STRING LDAP_OPT_HOST_NAME LDAP_OPT_IO_FN_PTRS LDAP_OPT_MEMALLOC_FN_PTRS LDAP_OPT_OFF LDAP_OPT_ON LDAP_OPT_PREFERRED_LANGUAGE LDAP_OPT_PROTOCOL_VERSION LDAP_OPT_REBIND_ARG LDAP_OPT_REBIND_FN LDAP_OPT_RECONNECT LDAP_OPT_REFERRALS LDAP_OPT_REFERRAL_HOP_LIMIT LDAP_OPT_RESTART LDAP_OPT_RETURN_REFERRALS LDAP_OPT_SERVER_CONTROLS LDAP_OPT_SIZELIMIT LDAP_OPT_SSL LDAP_OPT_THREAD_FN_PTRS LDAP_OPT_TIMELIMIT LDAP_OTHER LDAP_PARAM_ERROR LDAP_PARTIAL_RESULTS LDAP_PORT LDAP_PORT_MAX LDAP_PROTOCOL_ERROR LDAP_REFERRAL LDAP_REFERRAL_LIMIT_EXCEEDED LDAP_RESULTS_TOO_LARGE LDAP_RES_ADD LDAP_RES_ANY LDAP_RES_BIND LDAP_RES_COMPARE LDAP_RES_DELETE LDAP_RES_EXTENDED LDAP_RES_MODIFY LDAP_RES_MODRDN LDAP_RES_RENAME LDAP_RES_SEARCH_ENTRY LDAP_RES_SEARCH_REFERENCE LDAP_RES_SEARCH_RESULT LDAP_ROOT_DSE LDAP_SASL_BIND_IN_PROGRESS LDAP_SASL_EXTERNAL LDAP_SASL_SIMPLE LDAP_SCOPE_BASE LDAP_SCOPE_ONELEVEL LDAP_SCOPE_SUBTREE LDAP_SECURITY_NONE LDAP_SERVER_DOWN LDAP_SIZELIMIT_EXCEEDED LDAP_SORT_CONTROL_MISSING LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_STRONG_AUTH_REQUIRED LDAP_SUCCESS LDAP_TIMELIMIT_EXCEEDED LDAP_TIMEOUT LDAP_TYPE_OR_VALUE_EXISTS LDAP_UNAVAILABLE LDAP_UNAVAILABLE_CRITICAL_EXTENSION LDAP_UNDEFINED_TYPE LDAP_UNWILLING_TO_PERFORM LDAP_URL_ERR_BADSCOPE LDAP_URL_ERR_MEM LDAP_URL_ERR_NODN LDAP_URL_ERR_NOTLDAP LDAP_URL_ERR_PARAM LDAP_URL_OPT_SECURE LDAP_USER_CANCELLED LDAP_VERSION LDAP_VERSION1 LDAP_VERSION2 LDAP_VERSION3 LDAP_VERSION_MAX)], api => [qw( ldap_abandon ldap_add ldap_add_s ldap_ber_free ldap_build_filter ldap_compare ldap_compare_s ldap_count_entries ldap_create_filter ldap_delete ldap_delete_s ldap_dn2ufn ldap_err2string ldap_explode_dn ldap_explode_rdn ldap_first_attribute ldap_first_entry ldap_free_friendlymap ldap_free_sort_keylist ldap_free_urldesc ldap_friendly_name ldap_get_dn ldap_getfilter_free ldap_getfirstfilter ldap_get_lang_values ldap_get_lang_values_len ldap_get_lderrno ldap_getnextfilter ldap_get_option ldap_get_values ldap_get_values_len ldap_init ldap_init_getfilter ldap_init_getfilter_buf ldap_is_ldap_url ldap_memcache_destroy ldap_memcache_flush ldap_memcache_get ldap_memcache_init ldap_memcache_set ldap_memcache_update ldap_memfree ldap_modify ldap_modify_s ldap_modrdn ldap_modrdn_s ldap_modrdn2 ldap_modrdn2_s ldap_mods_free ldap_msgfree ldap_msgid ldap_msgtype ldap_multisort_entries ldap_next_attribute ldap_next_entry ldap_perror ldap_result ldap_result2error ldap_search ldap_search_s ldap_search_st ldap_set_filter_additions ldap_set_lderrno ldap_set_option ldap_set_rebind_proc ldap_simple_bind ldap_simple_bind_s ldap_sort_entries ldap_unbind ldap_unbind_s ldap_url_parse ldap_url_search ldap_url_search_s ldap_url_search_st ldap_version)], apiv3 => [qw( ldap_abandon_ext ldap_add_ext ldap_add_ext_s ldap_compare_ext ldap_compare_ext_s ldap_control_free ldap_controls_count ldap_controls_free ldap_count_messages ldap_count_references ldap_create_persistentsearch_control ldap_create_sort_control ldap_create_sort_keylist ldap_create_virtuallist_control ldap_delete_ext ldap_delete_ext_s ldap_extended_operation ldap_extended_operation_s ldap_first_message ldap_first_reference ldap_get_entry_controls ldap_modify_ext ldap_modify_ext_s ldap_next_message ldap_next_reference ldap_parse_entrychange_control ldap_parse_extended_result ldap_parse_reference ldap_parse_result ldap_parse_sasl_bind_result ldap_parse_sort_control ldap_parse_virtuallist_control ldap_rename ldap_rename_s ldap_sasl_bind ldap_sasl_bind_s ldap_search_ext ldap_search_ext_s)], ssl => [qw( ldapssl_client_init ldapssl_enable_clientauth ldapssl_clientauth_init ldapssl_init ldapssl_install_routines)] ); # Add Everything in %EXPORT_TAGS to @EXPORT_OK Exporter::export_ok_tags(keys %EXPORT_TAGS); $VERSION = '1.00'; # The XS 'constant' routine returns an integer. There are all constants # we want to return something else. my %OVERRIDE_CONST = ( "LDAP_ALL_USER_ATTRS","*", "LDAP_CONTROL_ENTRYCHANGE","2.16.840.1.113730.3.4.7", "LDAP_CONTROL_MANAGEDSAIT","2.16.840.1.113730.3.4.2", "LDAP_CONTROL_PERSISTENTSEARCH","2.16.840.1.113730.3.4.3", "LDAP_CONTROL_PWEXPIRED","2.16.840.1.113730.3.4.4", "LDAP_CONTROL_PWEXPIRING","2.16.840.1.113730.3.4.5", "LDAP_CONTROL_REFERRALS","1.2.840.113556.1.4.616", "LDAP_CONTROL_SORTREQUEST","1.2.840.113556.1.4.473", "LDAP_CONTROL_SORTRESPONSE","1.2.840.113556.1.4.474", "LDAP_CONTROL_VLVREQUEST","2.16.840.1.113730.3.4.9", "LDAP_CONTROL_VLVRESPONSE","2.16.840.1.113730.3.4.10", "LDAP_NO_ATTRS","1.1", "LDAP_OPT_OFF",0, "LDAP_OPT_ON",1, "LDAP_ROOT_DSE","", "LDAP_SASL_EXTERNAL","EXTERNAL", ); sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() # XS function. If a constant is not found then control is passed # to the AUTOLOAD in AutoLoader. my $constname; ($constname = $AUTOLOAD) =~ s/.*:://; my $val; if (($val = $OVERRIDE_CONST{$constname})) { eval "sub $AUTOLOAD { $val }"; goto &$AUTOLOAD; } $val = constant($constname, @_ ? $_[0] : 0); if ($! != 0) { if ($! =~ /Invalid/) { $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD; } else { croak "Your vendor has not defined Mozilla::LDAP macro $constname"; } } eval "sub $AUTOLOAD { $val }"; goto &$AUTOLOAD; } bootstrap Mozilla::LDAP::API $VERSION; # Preloaded methods go here. # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ =head1 NAME Mozilla::LDAP::API - Perl methods for LDAP C API calls =head1 SYNOPSIS use Mozilla::LDAP::API; or use Mozilla::LDAP::API qw(:api :ssl :constant); or use Mozilla::LDAP::API qw(:api :ssl :apiv3 :constant); =head1 DESCRIPTION This package offers a direct interface to the LDAP C API calls from Perl. It is used internally by the other Mozilla::LDAP modules. It is highly suggested that you use the object oriented interface in Mozilla::LDAP::Conn and Mozilla::LDAP::Entry unless you need to use asynchronous calls or other functionality not available in the OO interface. =head1 THIS DOCUMENT This document has a number of known errors that will be corrected in the next revision. Since it is not expected that users will need to use this interface frequently, priority was placed on other documents. You can find examples of how to actually use the API calls under the test_api directory. =head1 CREATING AN ADD/MODIFY HASH For the add and modify routines you will need to generate a list of attributes and values. You will do this by creating a HASH table. Each attribute in the hash contains associated values. These values can be one of three things. - SCALAR VALUE (ex. "Clayton Donley") - ARRAY REFERENCE (ex. ["Clayton Donley","Clay Donley"]) - HASH REFERENCE (ex. {"r",["Clayton Donley"]} note: the value inside the HASH REFERENCE must currently be an ARRAY REFERENCE. The key inside the HASH REFERENCE must be one of the following for a modify operation: - "a" for LDAP_MOD_ADD (Add these values to the attribute) - "r" for LDAP_MOD_REPLACE (Replace these values in the attribute) - "d" for LDAP_MOD_DELETE (Delete these values from the attribute) Additionally, in add and modify operations, you may specify "b" if the attributes you are adding are BINARY (ex. "rb" to replace binary). Currently, it is only possible to do one operation per add/modify operation, meaning you can't do something like: {"d",["Clayton"],"a",["Clay"]} <-- WRONG! Using any combination of the above value types, you can do things like: %ldap_modifications = ( "cn", "Clayton Donley", # Replace 'cn' values "givenname", ["Clayton","Clay"], # Replace 'givenname' values "mail", {"a",["donley\@cig.mcel.mot.com"], #Add 'mail' values "jpegphoto", {"rb",[$jpegphotodata]}, # Replace Binary jpegPhoto ); Then remember to call the add or modify operations with a REFERENCE to this HASH. =head1 API Methods The following are the available API methods for Mozilla::LDAP::API. Many of these items have bad examples and OUTPUT information. Other information should be correct. =item B(ld,msgid) DESCRIPTION: Abandon an asynchronous LDAP operation INPUT: ld - LDAP Session Handle msgid - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_abandon($ld,$msgid); =item B(ld,msgid,serverctrls,clientctrls) DESCRIPTION: Abandon an asynchronous LDAP operation w/ Controls INPUT: ld - LDAP Session Handle msgid - Integer serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_abandon_ext($ld,$msgid,$serverctrls,$clientctrls); =item B(ld,dn,attrs) DESCRIPTION: Asynchronously add a LDAP entry INPUT: ld - LDAP Session Handle dn - String attrs - LDAP Add/Modify Hash OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_add($ld,$dn,$attrs); =item B(ld,dn,attrs,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously add a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String attrs - LDAP Add/Modify Hash serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_add_ext($ld,$dn,$attrs,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,attrs,serverctrls,clientctrls) DESCRIPTION: Synchronously add a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String attrs - LDAP Add/Modify Hash serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_add_ext_s($ld,$dn,$attrs,$serverctrls,$clientctrls); =item B(ld,dn,attrs) DESCRIPTION: Synchronously add a LDAP entry INPUT: ld - LDAP Session Handle dn - String attrs - LDAP Add/Modify Hash OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_add_s($ld,$dn,$attrs); =item B(ber,freebuf) DESCRIPTION: Free a BER element pointer INPUT: ber - BER Element Pointer freebuf - Integer OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_ber_free($ber,$freebuf); =item B(ld,dn,passwd,authmethod) DESCRIPTION: Asynchronously bind to the LDAP server INPUT: ld - LDAP Session Handle dn - String passwd - String authmethod - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_bind($ld,$dn,$passwd,$authmethod); =item B(ld,dn,passwd,authmethod) DESCRIPTION: Synchronously bind to a LDAP server INPUT: ld - LDAP Session Handle dn - String passwd - String authmethod - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_bind_s($ld,$dn,$passwd,$authmethod); =item B(ld,dn,attr,value) DESCRIPTION: Asynchronously compare an attribute/value pair and an entry INPUT: ld - LDAP Session Handle dn - String attr - String value - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_compare($ld,$dn,$attr,$value); =item B(ld,dn,attr,bvalue,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously compare an attribute/value pair and an entry w/ Controls INPUT: ld - LDAP Session Handle dn - String attr - String bvalue - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_compare_ext($ld,$dn,$attr,$bvalue,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,attr,bvalue,serverctrls,clientctrls) DESCRIPTION: Synchronously compare an attribute/value pair to an entry w/ Controls INPUT: ld - LDAP Session Handle dn - String attr - String bvalue - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_compare_ext_s($ld,$dn,$attr,$bvalue,$serverctrls,$clientctrls); =item B(ld,dn,attr,value) DESCRIPTION: Synchronously compare an attribute/value pair to an entry INPUT: ld - LDAP Session Handle dn - String attr - String value - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_compare_s($ld,$dn,$attr,$value); =item B(ctrl) DESCRIPTION: Free a LDAP control pointer INPUT: ctrl - LDAP Control Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_control_free($ctrl); =item B(ctrls) DESCRIPTION: Count the number of LDAP controls in a LDAP Control List INPUT: ctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_controls_count($ctrls); =item B(ctrls) DESCRIPTION: Free a list of LDAP controls INPUT: ctrls - LDAP Control List Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_controls_free($ctrls); =item B(ld,result) DESCRIPTION: Count the number of LDAP entries returned INPUT: ld - LDAP Session Handle result - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $count = ldap_count_entries($ld,$result); =item B(ld,result) DESCRIPTION: Count the number of LDAP messages returned INPUT: ld - LDAP Session Handle result - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_count_messages($ld,$result); =item B(ld,result) DESCRIPTION: Count the number of LDAP references returned INPUT: ld - LDAP Session Handle result - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_count_references($ld,$result); =item B(buf,buflen,pattern,prefix,suffix,attr,value,valwords) DESCRIPTION: Create a LDAP search filter INPUT: buf - String buflen - Integer pattern - String prefix - String suffix - String attr - String value - String valwords - List Reference OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_create_filter($buf,$buflen,$pattern,$prefix,$suffix,$attr,$value,$valwords); =item B(ld,changetypes,changesonly,return_echg_ctrls,ctrl_iscritical,ctrlp) DESCRIPTION: Create a persistent search control INPUT: ld - LDAP Session Handle changetypes - Integer changesonly - Integer return_echg_ctrls - Integer ctrl_iscritical - Integer ctrlp - LDAP Control List Pointer OUTPUT: status - Integer ctrlp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_create_persistentsearch_control($ld,$changetypes,$changesonly,$return_echg_ctrls,$ctrl_iscritical,$ctrlp); =item B(ld,sortKeyList,ctrl_iscritical,ctrlp) DESCRIPTION: Create a LDAP sort control INPUT: ld - LDAP Session Handle sortKeyList - Sort Key Pointer ctrl_iscritical - Integer ctrlp - LDAP Control List Pointer OUTPUT: status - Integer ctrlp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_create_sort_control($ld,$sortKeyList,$ctrl_iscritical,$ctrlp); =item B(sortKeyList,string_rep) DESCRIPTION: Create a list of keys to be used by a sort control INPUT: sortKeyList - Sort Key Pointer string_rep - String OUTPUT: status - Integer sortKeyList - Sort Key Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_create_sort_keylist($sortKeyList,$string_rep); =item B(ld,ldvlistp,ctrlp) DESCRIPTION: Create a LDAP virtual list control INPUT: ld - LDAP Session Handle ctrlp - LDAP Control List Pointer OUTPUT: status - Integer ctrlp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_create_virtuallist_control($ld,$ldvlistp,$ctrlp); =item B(ld,dn) DESCRIPTION: Asynchronously delete a LDAP entry INPUT: ld - LDAP Session Handle dn - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_delete($ld,$dn); =item B(ld,dn,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously delete a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_delete_ext($ld,$dn,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,serverctrls,clientctrls) DESCRIPTION: Synchronously delete a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_delete_ext_s($ld,$dn,$serverctrls,$clientctrls); =item B(ld,dn) DESCRIPTION: Synchronously delete a LDAP entry INPUT: ld - LDAP Session Handle dn - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_delete_s($ld,$dn); =item B(dn) DESCRIPTION: Change a DN to a "Friendly" name INPUT: dn - String OUTPUT: status - String AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_dn2ufn($dn); =item B(err) DESCRIPTION: Return the string value of a LDAP error code INPUT: err - Integer OUTPUT: status - String AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_err2string($err); =item B(dn,notypes) DESCRIPTION: Split a given DN into its components. Setting 'notypes' to 1 returns the components without their type names. INPUT: dn - String notypes - Integer OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_explode_dn($dn,$notypes); =item B(dn,notypes) DESCRIPTION: Split a Relative DN into its components INPUT: dn - String notypes - Integer OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_explode_rdn($dn,$notypes); =item B(ld,requestoid,requestdata,serverctrls,clientctrls,msgidp) DESCRIPTION: Perform an asynchronous extended operation INPUT: ld - LDAP Session Handle requestoid - String requestdata - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_extended_operation($ld,$requestoid,$requestdata,$serverctrls,$clientctrls,$msgidp); =item B(ld,requestoid,requestdata,serverctrls,clientctrls,retoidp,retdatap) DESCRIPTION: Perform a synchronous extended operation INPUT: ld - LDAP Session Handle requestoid - String requestdata - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer retoidp - String OUTPUT: status - Integer retoidp - Return OID retdatap - Return Data AVAILABILITY: V3 EXAMPLE: $status = ldap_extended_operation_s($ld,$requestoid,$requestdata,$serverctrls,$clientctrls,$retoidp,$retdatap); =item B(ld,entry,ber) DESCRIPTION: Return the first attribute returned for a LDAP entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer ber - Ber Element Pointer OUTPUT: status - String ber - Ber Element Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_first_attribute($ld,$entry,$ber); =item B(ld,chain) DESCRIPTION: Return the first entry in a LDAP result chain INPUT: ld - LDAP Session Handle chain - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_first_entry($ld,$chain); =item B(ld,res) DESCRIPTION: Return the first message in a LDAP result INPUT: ld - LDAP Session Handle res - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_first_message($ld,$res); =item B(ld,res) DESCRIPTION: Return the first reference in a LDAP result INPUT: ld - LDAP Session Handle res - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_first_reference($ld,$res); =item B(map) DESCRIPTION: Free a LDAP friendly map pointer INPUT: map - Friendly Map Pointer OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_free_friendlymap($map); =item B(sortKeyList) DESCRIPTION: Free a LDAP sort key pointer INPUT: sortKeyList - Sort Key Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_free_sort_keylist($sortKeyList); =item B(ludp) DESCRIPTION: Free a LDAP URL description hash reference INPUT: ludp - URL Description Hash Reference OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_free_urldesc($ludp); =item B(filename,name,map) DESCRIPTION: Create a LDAP friendly name map INPUT: filename - String name - String map - Friendly Map Pointer OUTPUT: status - String AVAILABILITY: V3 EXAMPLE: $status = ldap_friendly_name($filename,$name,$map); =item B(ld,entry) DESCRIPTION: Return the distinguished name for an entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer OUTPUT: status - String AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_get_dn($ld,$entry); =item B(ld,entry,serverctrlsp) DESCRIPTION: Return the controls for a LDAP entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer serverctrlsp - LDAP Control List Pointer OUTPUT: status - Integer serverctrlsp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_get_entry_controls($ld,$entry,$serverctrlsp); =item B(lfdp) DESCRIPTION: Free a LDAP filter INPUT: lfdp - LDAP Filter Description Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_getfilter_free($lfdp); =item B(lfdp,tagpat,value) DESCRIPTION: Get the first generated filter INPUT: lfdp - LDAP Filter Description Pointer tagpat - String OUTPUT: status - LDAP Filter Information Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_getfirstfilter($lfdp,$tagpat,$value); =item B(ld,entry,target,type) DESCRIPTION: Get values for an entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer target - String type - String OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_get_lang_values($ld,$entry,$target,$type); =item B(ld,entry,target,type) DESCRIPTION: Get binary values for an entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer target - String type - String OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_get_lang_values_len($ld,$entry,$target,$type); =item B(ld,m,s) DESCRIPTION: INPUT: ld - LDAP Session Handle m - String Reference (or undef) s - String Reference (or undef) OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_get_lderrno($ld,\$m,\$s); =item B(lfdp) DESCRIPTION: Get the next generated LDAP filter INPUT: lfdp - LDAP Filter Information Pointer OUTPUT: status - LDAP Filter Information Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_getnextfilter($lfdp); =item B(ld,option,optdata) DESCRIPTION: Get an option for a LDAP session INPUT: ld - LDAP Session Handle option - Integer optdata - Integer OUTPUT: status - Integer optdata - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_get_option($ld,$option,$optdata); =item B(ld,entry,target) DESCRIPTION: Get the values for a LDAP entry and attribute INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer target - String OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_get_values($ld,$entry,$target); =item B(ld,entry,target) DESCRIPTION: Get the binary values for a LDAP entry and attribute INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer target - String OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_get_values_len($ld,$entry,$target); =item B(host,port) DESCRIPTION: Initialize a LDAP session INPUT: host - String port - Integer OUTPUT: status - LDAP Session Handle AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_init($host,$port); =item B(fname) DESCRIPTION: Initialize the LDAP filter generation routines to a filename INPUT: fname - Filename String OUTPUT: status - LDAP Filter Description Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_init_getfilter($fname); =item B(buf,buflen) DESCRIPTION: Initialize the LDAP filter generation routines to a buffer INPUT: buf - String buflen - Integer OUTPUT: status - LDAP Filter Description Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_init_getfilter_buf($buf,$buflen); =item B(url) DESCRIPTION: Return 1 if an the argument is a valid LDAP URL INPUT: url - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_is_ldap_url($url); =item B(cache) DESCRIPTION: Destroy a memory cache INPUT: cache - LDAP Memory Cache Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_memcache_destroy($cache); =item B(cache,dn,scope) DESCRIPTION: Flush a specific DN from the memory cache INPUT: cache - LDAP Memory Cache Pointer dn - String scope - Integer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_memcache_flush($cache,$dn,$scope); =item B(ld,cachep) DESCRIPTION: Get the memory cache for a LDAP session INPUT: ld - LDAP Session Handle cachep - LDAP Memory Cache Pointer OUTPUT: status - Integer cachep - LDAP Memory Cache Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_memcache_get($ld,$cachep); =item B(ttl,size,baseDNs,cachep) DESCRIPTION: Initialize a LDAP memory cache INPUT: ttl - Integer size - Integer baseDNs - List Reference cachep - LDAP Memory Cache Pointer OUTPUT: status - Integer cachep - LDAP Memory Cache Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_memcache_init($ttl,$size,$baseDNs,$cachep); =item B(ld,cache) DESCRIPTION: Set the LDAP memory cache for the session INPUT: ld - LDAP Session Handle cache - LDAP Memory Cache Pointer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_memcache_set($ld,$cache); =item B(cache) DESCRIPTION: Update the specified memory cache INPUT: cache - LDAP Memory Cache Pointer OUTPUT: status - NONE AVAILABILITY: V3 EXAMPLE: $status = ldap_memcache_update($cache); =item B(p) DESCRIPTION: Free memory allocated by the LDAP C API INPUT: p - Pointer OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_memfree($p); =item B(ld,dn,mods) DESCRIPTION: Asynchronously modify a LDAP entry INPUT: ld - LDAP Session Handle dn - String mods - LDAP Add/Modify Hash OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modify($ld,$dn,$mods); =item B(ld,dn,mods,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously modify a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String mods - LDAP Add/Modify Hash serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_modify_ext($ld,$dn,$mods,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,mods,serverctrls,clientctrls) DESCRIPTION: Synchronously modify a LDAP entry w/ Controls INPUT: ld - LDAP Session Handle dn - String mods - LDAP Add/Modify Hash serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_modify_ext_s($ld,$dn,$mods,$serverctrls,$clientctrls); =item B(ld,dn,mods) DESCRIPTION: Synchronously modify a LDAP entry INPUT: ld - LDAP Session Handle dn - String mods - LDAP Add/Modify Hash OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modify_s($ld,$dn,$mods); =item B(ld,dn,newrdn) DESCRIPTION: Asynchronously modify the relative distinguished name of an entry INPUT: ld - LDAP Session Handle dn - String newrdn - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modrdn($ld,$dn,$newrdn); =item B(ld,dn,newrdn) DESCRIPTION: Synchronously modify the relative distinguished name of an entry INPUT: ld - LDAP Session Handle dn - String newrdn - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modrdn_s($ld,$dn,$newrdn); =item B(ld,dn,newrdn,deleteoldrdn) DESCRIPTION: Asynchronously modify the relative distinguished name of an entry. INPUT: ld - LDAP Session Handle dn - String newrdn - String deleteoldrdn - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modrdn2($ld,$dn,$newrdn,$deleteoldrdn); =item B(ld,dn,newrdn,deleteoldrdn) DESCRIPTION: Synchronously modify the relative distinguished name of an entry. INPUT: ld - LDAP Session Handle dn - String newrdn - String deleteoldrdn - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_modrdn2_s($ld,$dn,$newrdn,$deleteoldrdn); =item B(lm) DESCRIPTION: Free memory allocated by a LDAP Message INPUT: lm - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_msgfree($lm); =item B(lm) DESCRIPTION: Get the message id number from a LDAP message INPUT: lm - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_msgid($lm); =item B(lm) DESCRIPTION: Get the message type of a LDAP message INPUT: lm - LDAP Message Pointer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_msgtype($lm); =item B(ld,chain,attr) DESCRIPTION: Sort entries by multiple keys INPUT: ld - LDAP Session Handle chain - LDAP Message Pointer attr - List Reference OUTPUT: status - Integer chain - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_multisort_entries($ld,$chain,$attr); =item B(ld,entry,ber) DESCRIPTION: Get the next attribute for a LDAP entry INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer ber - Ber Element Pointer OUTPUT: status - String ber - BER Element Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_next_attribute($ld,$entry,$ber); =item B(ld,entry) DESCRIPTION: Get the next entry in the result chain INPUT: ld - LDAP Session Handle entry - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_next_entry($ld,$entry); =item B(ld,msg) DESCRIPTION: Get the next message in the result chain INPUT: ld - LDAP Session Handle msg - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_next_message($ld,$msg); =item B(ld,ref) DESCRIPTION: Get the next reference in the result chain INPUT: ld - LDAP Session Handle ref - LDAP Message Pointer OUTPUT: status - LDAP Message Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_next_reference($ld,$ref); =item B(ld,ctrls,chgtypep,prevdnp,chgnumpresentp,chgnump) DESCRIPTION: Parse a LDAP entry change control INPUT: ld - LDAP Session Handle ctrls - LDAP Control List Pointer chgtypep - Integer prevdnp - String chgnumpresentp - Integer chgnump - Integer OUTPUT: status - Integer chgtypep - Integer prevdnp - String chgnumpresentp - Integer chgnump - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_entrychange_control($ld,$ctrls,$chgtypep,$prevdnp,$chgnumpresentp,$chgnump); =item B(ld,res,retoidp,retdatap,freeit) DESCRIPTION: Parse a LDAP extended result INPUT: ld - LDAP Session Handle res - LDAP Message Pointer retoidp - String freeit - Integer OUTPUT: status - Integer retoidp - String retdatap - Binary List Reference AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_extended_result($ld,$res,$retoidp,$retdatap,$freeit); =item B(ld,ref,referalsp,serverctrlsp,freeit) DESCRIPTION: Parse a LDAP Reference INPUT: ld - LDAP Session Handle ref - LDAP Message Pointer referalsp - List Reference serverctrlsp - LDAP Control List Pointer freeit - Integer OUTPUT: status - Integer referalsp - List Reference serverctrlsp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_reference($ld,$ref,$referalsp,$serverctrlsp,$freeit); =item B(ld,res,errcodep,matcheddnp,errmsgp,referralsp,serverctrlsp,freeit) DESCRIPTION: Parse a LDAP result INPUT: ld - LDAP Session Handle res - LDAP Message Pointer errcodep - Integer matcheddnp - String errmsgp - String referralsp - List Reference serverctrlsp - LDAP Control List Pointer freeit - Integer OUTPUT: status - Integer errcodep - Integer matcheddnp - String errmsgp - String referralsp - List Reference serverctrlsp - LDAP Control List Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_result($ld,$res,$errcodep,$matcheddnp,$errmsgp,$referralsp,$serverctrlsp,$freeit); =item B(ld,res,servercredp,freeit) DESCRIPTION: Parse the results of an SASL bind operation INPUT: ld - LDAP Session Handle res - LDAP Message Pointer freeit - Integer OUTPUT: status - Integer servercredp - AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_sasl_bind_result($ld,$res,$servercredp,$freeit); =item B(ld,ctrls,result,attribute) DESCRIPTION: Parse a LDAP sort control INPUT: ld - LDAP Session Handle ctrls - LDAP Control List Pointer result - LDAP Message Pointer attribute - String OUTPUT: status - Integer result - LDAP Message Pointer attribute - String AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_sort_control($ld,$ctrls,$result,$attribute); =item B(ld,ctrls,target_posp,list_sizep,errcodep) DESCRIPTION: Parse a LDAP virtual list control INPUT: ld - LDAP Session Handle ctrls - LDAP Control List Pointer target_posp - Integer list_sizep - Integer errcodep - Integer OUTPUT: status - Integer target_posp - Integer list_sizep - Integer errcodep - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_parse_virtuallist_control($ld,$ctrls,$target_posp,$list_sizep,$errcodep); =item B(ld,s) DESCRIPTION: Print a LDAP error message INPUT: ld - LDAP Session Handle s - String OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_perror($ld,$s); =item B(ld,dn,newrdn,newparent,deleteoldrdn,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously rename a LDAP entry INPUT: ld - LDAP Session Handle dn - String newrdn - String newparent - String deleteoldrdn - Integer serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_rename($ld,$dn,$newrdn,$newparent,$deleteoldrdn,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,newrdn,newparent,deleteoldrdn,serverctrls,clientctrls) DESCRIPTION: Synchronously rename a LDAP entry INPUT: ld - LDAP Session Handle dn - String newrdn - String newparent - String deleteoldrdn - Integer serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_rename_s($ld,$dn,$newrdn,$newparent,$deleteoldrdn,$serverctrls,$clientctrls); =item B(ld,msgid,all,timeout,result) DESCRIPTION: Get the result for an asynchronous LDAP operation INPUT: ld - LDAP Session Handle msgid - Integer all - Integer timeout - Time in Seconds result - LDAP Message Pointer OUTPUT: status - Integer result - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_result($ld,$msgid,$all,$timeout,$result); =item B(ld,r,freeit) DESCRIPTION: Get the error number for a given result INPUT: ld - LDAP Session Handle r - LDAP Message Pointer freeit - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_result2error($ld,$r,$freeit); =item B(ld,dn,mechanism,cred,serverctrls,clientctrls,msgidp) DESCRIPTION: Asynchronously bind to the LDAP server using a SASL mechanism INPUT: ld - LDAP Session Handle dn - String mechanism - String cred - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_sasl_bind($ld,$dn,$mechanism,$cred,$serverctrls,$clientctrls,$msgidp); =item B(ld,dn,mechanism,cred,serverctrls,clientctrls,servercredp) DESCRIPTION: Synchronously bind to a LDAP server using a SASL mechanism INPUT: ld - LDAP Session Handle dn - String mechanism - String cred - Binary String serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer OUTPUT: status - Integer servercredp - AVAILABILITY: V3 EXAMPLE: $status = ldap_sasl_bind_s($ld,$dn,$mechanism,$cred,$serverctrls,$clientctrls,$servercredp); =item B(ld,base,scope,filter,attrs,attrsonly) DESCRIPTION: Asynchronously search the LDAP server INPUT: ld - LDAP Session Handle base - String scope - Integer filter - String attrs - List Reference attrsonly - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_search($ld,$base,$scope,$filter,$attrs,$attrsonly); =item B(ld,base,scope,filter,attrs,attrsonly,serverctrls,clientctrls,timeoutp,sizelimit,msgidp) DESCRIPTION: Asynchronously search the LDAP server w/ Controls INPUT: ld - LDAP Session Handle base - String scope - Integer filter - String attrs - List Reference attrsonly - Integer serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer timeoutp - Time in Seconds sizelimit - Integer msgidp - Integer OUTPUT: status - Integer msgidp - Integer AVAILABILITY: V3 EXAMPLE: $status = ldap_search_ext($ld,$base,$scope,$filter,$attrs,$attrsonly,$serverctrls,$clientctrls,$timeoutp,$sizelimit,$msgidp); =item B(ld,base,scope,filter,attrs,attrsonly,serverctrls,clientctrls,timeoutp,sizelimit,res) DESCRIPTION: Synchronously search the LDAP server w/ Controls INPUT: ld - LDAP Session Handle base - String scope - Integer filter - String attrs - List Reference attrsonly - Integer serverctrls - LDAP Control List Pointer clientctrls - LDAP Control List Pointer timeoutp - Time in Seconds sizelimit - Integer res - LDAP Message Pointer OUTPUT: status - Integer res - LDAP Message Pointer AVAILABILITY: V3 EXAMPLE: $status = ldap_search_ext_s($ld,$base,$scope,$filter,$attrs,$attrsonly,$serverctrls,$clientctrls,$timeoutp,$sizelimit,$res); =item B(ld,base,scope,filter,attrs,attrsonly,res) DESCRIPTION: Synchronously search the LDAP server INPUT: ld - LDAP Session Handle base - String scope - Integer filter - String attrs - List Reference attrsonly - Integer res - LDAP Message Pointer OUTPUT: status - Integer res - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_search_s($ld,$base,$scope,$filter,$attrs,$attrsonly,$res); =item B(ld,base,scope,filter,attrs,attrsonly,timeout,res) DESCRIPTION: Synchronously search the LDAP server w/ Timeout INPUT: ld - LDAP Session Handle base - String scope - Integer filter - String attrs - List Reference attrsonly - Integer timeout - Time in Seconds res - LDAP Message Pointer OUTPUT: status - Integer res - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_search_st($ld,$base,$scope,$filter,$attrs,$attrsonly,$timeout,$res); =item B(lfdp,prefix,suffix) DESCRIPTION: Add a prefix and suffix for filter generation INPUT: lfdp - LDAP Filter Description Pointer prefix - String suffix - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_set_filter_additions($lfdp,$prefix,$suffix); =item B(ld,e,m,s) DESCRIPTION: Set the LDAP error structure INPUT: ld - LDAP Session Handle e - Integer m - String s - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_set_lderrno($ld,$e,$m,$s); =item B(ld,option,optdata) DESCRIPTION: Set a LDAP session option INPUT: ld - LDAP Session Handle option - Integer optdata - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_set_option($ld,$option,$optdata); =item B(ld,rebindproc) DESCRIPTION: Set the LDAP rebind process INPUT: ld - LDAP Session Handle OUTPUT: status - NONE AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_set_rebind_proc($ld,$rebindproc); =item B(ld,who,passwd) DESCRIPTION: Asynchronously bind to the LDAP server using simple authentication INPUT: ld - LDAP Session Handle who - String passwd - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_simple_bind($ld,$who,$passwd); =item B(ld,who,passwd) DESCRIPTION: Synchronously bind to the LDAP server using simple authentication INPUT: ld - LDAP Session Handle who - String passwd - String OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_simple_bind_s($ld,$who,$passwd); =item B(ld,chain,attr) DESCRIPTION: Sort the results of a LDAP search INPUT: ld - LDAP Session Handle chain - LDAP Message Pointer attr - String OUTPUT: status - Integer chain - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_sort_entries($ld,$chain,$attr); =item B(ld) DESCRIPTION: Asynchronously unbind from the LDAP server INPUT: ld - LDAP Session Handle OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_unbind($ld); =item B(ld) DESCRIPTION: Synchronously unbind from a LDAP server INPUT: ld - LDAP Session Handle OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_unbind_s($ld); =item B(url) DESCRIPTION: Parse a LDAP URL, returning a HASH of its components INPUT: url - String OUTPUT: status - AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_url_parse($url); =item B(ld,url,attrsonly) DESCRIPTION: Asynchronously search using a LDAP URL INPUT: ld - LDAP Session Handle url - String attrsonly - Integer OUTPUT: status - Integer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_url_search($ld,$url,$attrsonly); =item B(ld,url,attrsonly,res) DESCRIPTION: Synchronously search using a LDAP URL INPUT: ld - LDAP Session Handle url - String attrsonly - Integer res - LDAP Message Pointer OUTPUT: status - Integer res - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_url_search_s($ld,$url,$attrsonly,$res); =item B(ld,url,attrsonly,timeout,res) DESCRIPTION: Synchronously search using a LDAP URL w/ timeout INPUT: ld - LDAP Session Handle url - String attrsonly - Integer timeout - Time in Seconds res - LDAP Message Pointer OUTPUT: status - Integer res - LDAP Message Pointer AVAILABILITY: V2/V3 EXAMPLE: $status = ldap_url_search_st($ld,$url,$attrsonly,$timeout,$res); =head1 AUTHOR INFORMATION Address bug reports and comments to the Netscape DevEdge newsgroups at: nntps://secnews.netscape.com/netscape.dev.directory. -head1 CREDITS Most of the Perl API module was written by Clayton Donley to interface with C API routines from Netscape Communications Corp., Inc. =head1 BUGS Documentation needs much work. LDAPv3 calls not tested or supported in this version. NT can not use Perl Rebind processes, must use 'ldap_set_default_rebindproc'. Possible memory leak in ldap_search* is being investigated. =head1 SEE ALSO L, L, and L =cut