#ifndef _LDAP_H
#define _LDAP_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _SOLARIS_SDK
#define _SOLARIS_SDK
#endif
#ifndef LDAP_TYPE_TIMEVAL_DEFINED
#include <sys/time.h>
#endif
#ifndef LDAP_TYPE_SOCKET_DEFINED
#include <sys/types.h>
#include <sys/socket.h>
#endif
#include <lber.h>
#define LDAP_PORT 389
#define LDAPS_PORT 636
#define LDAP_PORT_MAX 65535
#define LDAP_VERSION1 1
#define LDAP_VERSION2 2
#define LDAP_VERSION3 3
#define LDAP_VERSION LDAP_VERSION2
#define LDAP_VERSION_MIN LDAP_VERSION3
#define LDAP_VERSION_MAX LDAP_VERSION3
#define LDAP_VENDOR_VERSION 500
#define LDAP_VENDOR_NAME "Sun Microsystems Inc."
#define LDAP_API_VERSION 2005
#define LDAP_API_FEATURE_SERVER_SIDE_SORT 1
#define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1
#define LDAP_API_FEATURE_PERSISTENT_SEARCH 1
#define LDAP_API_FEATURE_PROXY_AUTHORIZATION 1
#define LDAP_API_FEATURE_X_LDERRNO 1
#define LDAP_API_FEATURE_X_MEMCACHE 1
#define LDAP_API_FEATURE_X_IO_FUNCTIONS 1
#define LDAP_API_FEATURE_X_EXTIO_FUNCTIONS 1
#define LDAP_API_FEATURE_X_DNS_FUNCTIONS 1
#define LDAP_API_FEATURE_X_MEMALLOC_FUNCTIONS 1
#define LDAP_API_FEATURE_X_THREAD_FUNCTIONS 1
#define LDAP_API_FEATURE_X_EXTHREAD_FUNCTIONS 1
#define LDAP_API_FEATURE_X_GETLANGVALUES 1
#define LDAP_API_FEATURE_X_CLIENT_SIDE_SORT 1
#define LDAP_API_FEATURE_X_URL_FUNCTIONS 1
#define LDAP_API_FEATURE_X_FILTER_FUNCTIONS 1
#define LDAP_ROOT_DSE ""
#define LDAP_NO_ATTRS "1.1"
#define LDAP_ALL_USER_ATTRS "*"
#define LDAP_OPT_API_INFO 0x00
#define LDAP_OPT_DESC 0x01
#define LDAP_OPT_DEREF 0x02
#define LDAP_OPT_SIZELIMIT 0x03
#define LDAP_OPT_TIMELIMIT 0x04
#define LDAP_OPT_REFERRALS 0x08
#define LDAP_OPT_RESTART 0x09
#define LDAP_OPT_PROTOCOL_VERSION 0x11
#define LDAP_OPT_SERVER_CONTROLS 0x12
#define LDAP_OPT_CLIENT_CONTROLS 0x13
#define LDAP_OPT_API_FEATURE_INFO 0x15
#define LDAP_OPT_HOST_NAME 0x30
#define LDAP_OPT_ERROR_NUMBER 0x31
#define LDAP_OPT_ERROR_STRING 0x32
#define LDAP_OPT_MATCHED_DN 0x33
#define LDAP_OPT_PRIVATE_EXTENSION_BASE 0x4000
#define LDAP_X_IO_TIMEOUT_NO_WAIT 0
#define LDAP_X_IO_TIMEOUT_NO_TIMEOUT (-1)
#define LDAP_X_OPT_CONNECT_TIMEOUT (LDAP_OPT_PRIVATE_EXTENSION_BASE + 0x0F01)
#define LDAP_OPT_ON ((void *)1)
#define LDAP_OPT_OFF ((void *)0)
typedef struct ldap LDAP;
typedef struct ldapmsg LDAPMessage;
#define NULLMSG ((LDAPMessage *)0)
typedef struct ldapmod {
int mod_op;
#define LDAP_MOD_ADD 0x00
#define LDAP_MOD_DELETE 0x01
#define LDAP_MOD_REPLACE 0x02
#define LDAP_MOD_BVALUES 0x80
char *mod_type;
union mod_vals_u {
char **modv_strvals;
struct berval **modv_bvals;
} mod_vals;
#define mod_values mod_vals.modv_strvals
#define mod_bvalues mod_vals.modv_bvals
} LDAPMod;
typedef struct ldapcontrol {
char *ldctl_oid;
struct berval ldctl_value;
char ldctl_iscritical;
} LDAPControl;
#define LDAP_API_INFO_VERSION 1
typedef struct ldapapiinfo {
int ldapai_info_version;
int ldapai_api_version;
int ldapai_protocol_version;
char **ldapai_extensions;
char *ldapai_vendor_name;
int ldapai_vendor_version;
} LDAPAPIInfo;
#define LDAP_FEATURE_INFO_VERSION 1
typedef struct ldap_apifeature_info {
int ldapaif_info_version;
char *ldapaif_name;
int ldapaif_version;
} LDAPAPIFeatureInfo;
#define LDAP_RES_BIND 0x61
#define LDAP_RES_SEARCH_ENTRY 0x64
#define LDAP_RES_SEARCH_RESULT 0x65
#define LDAP_RES_MODIFY 0x67
#define LDAP_RES_ADD 0x69
#define LDAP_RES_DELETE 0x6b
#define LDAP_RES_MODDN 0x6d
#define LDAP_RES_COMPARE 0x6f
#define LDAP_RES_SEARCH_REFERENCE 0x73
#define LDAP_RES_EXTENDED 0x78
#define LDAP_RES_ANY (-1)
#define LDAP_RES_UNSOLICITED 0
#define LDAP_SASL_SIMPLE 0
#define LDAP_SASL_EXTERNAL "EXTERNAL"
#ifdef _SOLARIS_SDK
#define LDAP_SASL_CRAM_MD5 "CRAM-MD5"
#define LDAP_SASL_DIGEST_MD5 "DIGEST-MD5"
#define LDAP_SASL_BIND_INPROGRESS 0x0e
#endif
#define LDAP_SCOPE_BASE 0x00
#define LDAP_SCOPE_ONELEVEL 0x01
#define LDAP_SCOPE_SUBTREE 0x02
#define LDAP_DEREF_NEVER 0
#define LDAP_DEREF_SEARCHING 1
#define LDAP_DEREF_FINDING 2
#define LDAP_DEREF_ALWAYS 3
#define LDAP_NO_LIMIT 0
#define LDAP_MSG_ONE 0
#define LDAP_MSG_ALL 1
#define LDAP_MSG_RECEIVED 2
#define LDAP_SUCCESS 0x00
#define LDAP_OPERATIONS_ERROR 0x01
#define LDAP_PROTOCOL_ERROR 0x02
#define LDAP_TIMELIMIT_EXCEEDED 0x03
#define LDAP_SIZELIMIT_EXCEEDED 0x04
#define LDAP_COMPARE_FALSE 0x05
#define LDAP_COMPARE_TRUE 0x06
#define LDAP_STRONG_AUTH_NOT_SUPPORTED 0x07
#define LDAP_STRONG_AUTH_REQUIRED 0x08
#define LDAP_PARTIAL_RESULTS 0x09
#define LDAP_REFERRAL 0x0a
#define LDAP_ADMINLIMIT_EXCEEDED 0x0b
#define LDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c
#define LDAP_CONFIDENTIALITY_REQUIRED 0x0d
#define LDAP_SASL_BIND_IN_PROGRESS 0x0e
#define LDAP_NO_SUCH_ATTRIBUTE 0x10
#define LDAP_UNDEFINED_TYPE 0x11
#define LDAP_INAPPROPRIATE_MATCHING 0x12
#define LDAP_CONSTRAINT_VIOLATION 0x13
#define LDAP_TYPE_OR_VALUE_EXISTS 0x14
#define LDAP_INVALID_SYNTAX 0x15
#define LDAP_NO_SUCH_OBJECT 0x20
#define LDAP_ALIAS_PROBLEM 0x21
#define LDAP_INVALID_DN_SYNTAX 0x22
#define LDAP_IS_LEAF 0x23
#define LDAP_ALIAS_DEREF_PROBLEM 0x24
#define NAME_ERROR(n) ((n & 0xf0) == 0x20)
#define LDAP_INAPPROPRIATE_AUTH 0x30
#define LDAP_INVALID_CREDENTIALS 0x31
#define LDAP_INSUFFICIENT_ACCESS 0x32
#define LDAP_BUSY 0x33
#define LDAP_UNAVAILABLE 0x34
#define LDAP_UNWILLING_TO_PERFORM 0x35
#define LDAP_LOOP_DETECT 0x36
#define LDAP_SORT_CONTROL_MISSING 0x3C
#define LDAP_INDEX_RANGE_ERROR 0x3D
#define LDAP_NAMING_VIOLATION 0x40
#define LDAP_OBJECT_CLASS_VIOLATION 0x41
#define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42
#define LDAP_NOT_ALLOWED_ON_RDN 0x43
#define LDAP_ALREADY_EXISTS 0x44
#define LDAP_NO_OBJECT_CLASS_MODS 0x45
#define LDAP_RESULTS_TOO_LARGE 0x46
#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47
#define LDAP_OTHER 0x50
#define LDAP_SERVER_DOWN 0x51
#define LDAP_LOCAL_ERROR 0x52
#define LDAP_ENCODING_ERROR 0x53
#define LDAP_DECODING_ERROR 0x54
#define LDAP_TIMEOUT 0x55
#define LDAP_AUTH_UNKNOWN 0x56
#define LDAP_FILTER_ERROR 0x57
#define LDAP_USER_CANCELLED 0x58
#define LDAP_PARAM_ERROR 0x59
#define LDAP_NO_MEMORY 0x5a
#define LDAP_CONNECT_ERROR 0x5b
#define LDAP_NOT_SUPPORTED 0x5c
#define LDAP_CONTROL_NOT_FOUND 0x5d
#define LDAP_NO_RESULTS_RETURNED 0x5e
#define LDAP_MORE_RESULTS_TO_RETURN 0x5f
#define LDAP_CLIENT_LOOP 0x60
#define LDAP_REFERRAL_LIMIT_EXCEEDED 0x61
#define LDAP_NOTICE_OF_DISCONNECTION "1.3.6.1.4.1.1466.20036"
#define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2"
#define LDAP_CONTROL_SORTREQUEST "1.2.840.113556.1.4.473"
#define LDAP_CONTROL_SORTRESPONSE "1.2.840.113556.1.4.474"
#define LDAP_CONTROL_PERSISTENTSEARCH "2.16.840.1.113730.3.4.3"
#define LDAP_CONTROL_ENTRYCHANGE "2.16.840.1.113730.3.4.7"
#define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9"
#define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10"
#define LDAP_CONTROL_PROXYAUTH "2.16.840.1.113730.3.4.12"
#define LDAP_CONTROL_PROXIEDAUTH "2.16.840.1.113730.3.4.18"
#ifdef _SOLARIS_SDK
#define LDAP_CONTROL_SIMPLE_PAGE "1.2.840.113556.1.4.319"
#define LDAP_TEMPLATE_VERSION 1
#define LDAP_SYN_TYPE_TEXT 0x01000000L
#define LDAP_SYN_TYPE_IMAGE 0x02000000L
#define LDAP_SYN_TYPE_BOOLEAN 0x04000000L
#define LDAP_SYN_TYPE_BUTTON 0x08000000L
#define LDAP_SYN_TYPE_ACTION 0x10000000L
#define LDAP_SYN_OPT_DEFER 0x00010000L
#define LDAP_SYN_CASEIGNORESTR (1 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_MULTILINESTR (2 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_DN (3 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_BOOLEAN (4 | LDAP_SYN_TYPE_BOOLEAN)
#define LDAP_SYN_JPEGIMAGE (5 | LDAP_SYN_TYPE_IMAGE)
#define LDAP_SYN_JPEGBUTTON (6 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER)
#define LDAP_SYN_FAXIMAGE (7 | LDAP_SYN_TYPE_IMAGE)
#define LDAP_SYN_FAXBUTTON (8 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER)
#define LDAP_SYN_AUDIOBUTTON (9 | LDAP_SYN_TYPE_BUTTON | LDAP_SYN_OPT_DEFER)
#define LDAP_SYN_TIME (10 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_DATE (11 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_LABELEDURL (12 | LDAP_SYN_TYPE_TEXT)
#define LDAP_SYN_SEARCHACTION (13 | LDAP_SYN_TYPE_ACTION)
#define LDAP_SYN_LINKACTION (14 | LDAP_SYN_TYPE_ACTION)
#define LDAP_SYN_ADDDNACTION (15 | LDAP_SYN_TYPE_ACTION)
#define LDAP_SYN_VERIFYDNACTION (16 | LDAP_SYN_TYPE_ACTION)
#define LDAP_SYN_RFC822ADDR (17 | LDAP_SYN_TYPE_TEXT)
#define LDAP_GET_SYN_TYPE(syid) ((syid) & 0xFF000000UL)
#define LDAP_GET_SYN_OPTIONS(syid) ((syid) & 0x00FF0000UL)
#define LDAP_DISP_OPT_AUTOLABELWIDTH 0x00000001L
#define LDAP_DISP_OPT_HTMLBODYONLY 0x00000002L
#define LDAP_DISP_OPT_DOSEARCHACTIONS 0x00000002L
#define LDAP_DISP_OPT_NONLEAF 0x00000004L
#define LDAP_DITEM_OPT_READONLY 0x00000001L
#define LDAP_DITEM_OPT_SORTVALUES 0x00000002L
#define LDAP_DITEM_OPT_SINGLEVALUED 0x00000004L
#define LDAP_DITEM_OPT_HIDEIFEMPTY 0x00000008L
#define LDAP_DITEM_OPT_VALUEREQUIRED 0x00000010L
#define LDAP_DITEM_OPT_HIDEIFFALSE 0x00000020L
#endif
#define LDAP_CONTROL_AUTH_REQUEST "2.16.840.1.113730.3.4.16"
#define LDAP_CONTROL_AUTH_RESPONSE "2.16.840.1.113730.3.4.15"
#define LDAP_CONTROL_PWEXPIRED "2.16.840.1.113730.3.4.4"
#define LDAP_CONTROL_PWEXPIRING "2.16.840.1.113730.3.4.5"
#define LDAP_CONTROL_REFERRALS "1.2.840.113556.1.4.616"
#ifndef LDAP_API
#define LDAP_API(rt) rt
#endif
#ifdef _SOLARIS_SDK
int ldap_create_page_control(LDAP *ld, unsigned int pagesize,
struct berval *cookie, char isCritical, LDAPControl **output);
int ldap_parse_page_control(LDAP *ld, LDAPControl **controls,
unsigned int *totalcount, struct berval **cookie);
int ldap_sasl_cram_md5_bind_s(LDAP *ld, char *dn,
struct berval *cred, LDAPControl **serverctrls,
LDAPControl **clientctrls);
int ldap_x_sasl_digest_md5_bind_s(LDAP *ld, char *dn,
struct berval *cred, LDAPControl **serverctrls,
LDAPControl **clientctrls);
int ldap_x_sasl_digest_md5_bind(LDAP *ld, char *dn,
struct berval *cred, LDAPControl **serverctrls,
LDAPControl **clientctrls, struct timeval *timeout,
LDAPMessage **result);
#endif
LDAP_API(LDAP *) LDAP_CALL ldap_open(const char *host, int port);
LDAP_API(LDAP *) LDAP_CALL ldap_init(const char *defhost, int defport);
int LDAP_CALL ldap_set_option(LDAP *ld, int option,
const void *optdata);
int LDAP_CALL ldap_get_option(LDAP *ld, int option, void *optdata);
int LDAP_CALL ldap_unbind(LDAP *ld);
int LDAP_CALL ldap_unbind_s(LDAP *ld);
int LDAP_CALL ldap_abandon(LDAP *ld, int msgid);
int LDAP_CALL ldap_add(LDAP *ld, const char *dn, LDAPMod **attrs);
int LDAP_CALL ldap_add_s(LDAP *ld, const char *dn, LDAPMod **attrs);
int LDAP_CALL ldap_simple_bind(LDAP *ld, const char *who,
const char *passwd);
int LDAP_CALL ldap_simple_bind_s(LDAP *ld, const char *who,
const char *passwd);
int LDAP_CALL ldap_modify(LDAP *ld, const char *dn, LDAPMod **mods);
int LDAP_CALL ldap_modify_s(LDAP *ld, const char *dn,
LDAPMod **mods);
int LDAP_CALL ldap_modrdn(LDAP *ld, const char *dn,
const char *newrdn);
int LDAP_CALL ldap_modrdn_s(LDAP *ld, const char *dn,
const char *newrdn);
int LDAP_CALL ldap_modrdn2(LDAP *ld, const char *dn,
const char *newrdn, int deleteoldrdn);
int LDAP_CALL ldap_modrdn2_s(LDAP *ld, const char *dn,
const char *newrdn, int deleteoldrdn);
int LDAP_CALL ldap_compare(LDAP *ld, const char *dn,
const char *attr, const char *value);
int LDAP_CALL ldap_compare_s(LDAP *ld, const char *dn,
const char *attr, const char *value);
int LDAP_CALL ldap_delete(LDAP *ld, const char *dn);
int LDAP_CALL ldap_delete_s(LDAP *ld, const char *dn);
int LDAP_CALL ldap_search(LDAP *ld, const char *base, int scope,
const char *filter, char **attrs, int attrsonly);
int LDAP_CALL ldap_search_s(LDAP *ld, const char *base, int scope,
const char *filter, char **attrs, int attrsonly, LDAPMessage **res);
int LDAP_CALL ldap_search_st(LDAP *ld, const char *base, int scope,
const char *filter, char **attrs, int attrsonly,
struct timeval *timeout, LDAPMessage **res);
int LDAP_CALL ldap_result(LDAP *ld, int msgid, int all,
struct timeval *timeout, LDAPMessage **result);
int LDAP_CALL ldap_msgfree(LDAPMessage *lm);
int LDAP_CALL ldap_msgid(LDAPMessage *lm);
int LDAP_CALL ldap_msgtype(LDAPMessage *lm);
int LDAP_CALL ldap_result2error(LDAP *ld, LDAPMessage *r,
int freeit);
char *LDAP_CALL ldap_err2string(int err);
LDAP_API(void) LDAP_CALL ldap_perror(LDAP *ld, const char *s);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_first_entry(LDAP *ld,
LDAPMessage *chain);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_next_entry(LDAP *ld,
LDAPMessage *entry);
int LDAP_CALL ldap_count_entries(LDAP *ld, LDAPMessage *chain);
char *LDAP_CALL ldap_get_dn(LDAP *ld, LDAPMessage *entry);
char *LDAP_CALL ldap_dn2ufn(const char *dn);
char **LDAP_CALL ldap_explode_dn(const char *dn,
const int notypes);
char **LDAP_CALL ldap_explode_rdn(const char *rdn,
const int notypes);
char *LDAP_CALL ldap_first_attribute(LDAP *ld, LDAPMessage *entry,
BerElement **ber);
char *LDAP_CALL ldap_next_attribute(LDAP *ld, LDAPMessage *entry,
BerElement *ber);
LDAP_API(void) LDAP_CALL ldap_ber_free(BerElement *ber, int freebuf);
char **LDAP_CALL ldap_get_values(LDAP *ld, LDAPMessage *entry,
const char *target);
struct berval **LDAP_CALL ldap_get_values_len(LDAP *ld,
LDAPMessage *entry, const char *target);
int LDAP_CALL ldap_count_values(char **vals);
int LDAP_CALL ldap_count_values_len(struct berval **vals);
LDAP_API(void) LDAP_CALL ldap_value_free(char **vals);
LDAP_API(void) LDAP_CALL ldap_value_free_len(struct berval **vals);
LDAP_API(void) LDAP_CALL ldap_memfree(void *p);
int LDAP_CALL ldap_abandon_ext(LDAP *ld, int msgid,
LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_add_ext(LDAP *ld, const char *dn, LDAPMod **attrs,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_add_ext_s(LDAP *ld, const char *dn,
LDAPMod **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_sasl_bind(LDAP *ld, const char *dn,
const char *mechanism, const struct berval *cred,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_sasl_bind_s(LDAP *ld, const char *dn,
const char *mechanism, const struct berval *cred,
LDAPControl **serverctrls, LDAPControl **clientctrls,
struct berval **servercredp);
int LDAP_CALL ldap_modify_ext(LDAP *ld, const char *dn,
LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls,
int *msgidp);
int LDAP_CALL ldap_modify_ext_s(LDAP *ld, const char *dn,
LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_rename(LDAP *ld, const char *dn,
const char *newrdn, const char *newparent, int deleteoldrdn,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_rename_s(LDAP *ld, const char *dn,
const char *newrdn, const char *newparent, int deleteoldrdn,
LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_compare_ext(LDAP *ld, const char *dn,
const char *attr, const struct berval *bvalue,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_compare_ext_s(LDAP *ld, const char *dn,
const char *attr, const struct berval *bvalue,
LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_delete_ext(LDAP *ld, const char *dn,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_delete_ext_s(LDAP *ld, const char *dn,
LDAPControl **serverctrls, LDAPControl **clientctrls);
int LDAP_CALL ldap_search_ext(LDAP *ld, const char *base,
int scope, const char *filter, char **attrs, int attrsonly,
LDAPControl **serverctrls, LDAPControl **clientctrls,
struct timeval *timeoutp, int sizelimit, int *msgidp);
int LDAP_CALL ldap_search_ext_s(LDAP *ld, const char *base,
int scope, const char *filter, char **attrs, int attrsonly,
LDAPControl **serverctrls, LDAPControl **clientctrls,
struct timeval *timeoutp, int sizelimit, LDAPMessage **res);
int LDAP_CALL ldap_extended_operation(LDAP *ld,
const char *requestoid, const struct berval *requestdata,
LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp);
int LDAP_CALL ldap_extended_operation_s(LDAP *ld,
const char *requestoid, const struct berval *requestdata,
LDAPControl **serverctrls, LDAPControl **clientctrls,
char **retoidp, struct berval **retdatap);
int LDAP_CALL ldap_unbind_ext(LDAP *ld, LDAPControl **serverctrls,
LDAPControl **clientctrls);
int LDAP_CALL ldap_parse_sasl_bind_result(LDAP *ld,
LDAPMessage *res, struct berval **servercredp, int freeit);
int LDAP_CALL ldap_parse_result(LDAP *ld, LDAPMessage *res,
int *errcodep, char **matcheddnp, char **errmsgp, char ***referralsp,
LDAPControl ***serverctrlsp, int freeit);
int LDAP_CALL ldap_parse_extended_result(LDAP *ld, LDAPMessage *res,
char **retoidp, struct berval **retdatap, int freeit);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_first_message(LDAP *ld,
LDAPMessage *res);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_next_message(LDAP *ld,
LDAPMessage *msg);
int LDAP_CALL ldap_count_messages(LDAP *ld, LDAPMessage *res);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_first_reference(LDAP *ld,
LDAPMessage *res);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_next_reference(LDAP *ld,
LDAPMessage *ref);
int LDAP_CALL ldap_count_references(LDAP *ld, LDAPMessage *res);
int LDAP_CALL ldap_parse_reference(LDAP *ld, LDAPMessage *ref,
char ***referralsp, LDAPControl ***serverctrlsp, int freeit);
int LDAP_CALL ldap_get_entry_controls(LDAP *ld, LDAPMessage *entry,
LDAPControl ***serverctrlsp);
LDAP_API(void) LDAP_CALL ldap_control_free(LDAPControl *ctrl);
LDAP_API(void) LDAP_CALL ldap_controls_free(LDAPControl **ctrls);
#ifdef _SOLARIS_SDK
char ** ldap_get_reference_urls(LDAP *ld, LDAPMessage *res);
#endif
LDAP_API(void) LDAP_CALL ldap_add_result_entry(
LDAPMessage **list, LDAPMessage *e);
LDAP_API(LDAPMessage *) LDAP_CALL ldap_delete_result_entry(
LDAPMessage **list, LDAPMessage *e);
typedef struct LDAPsortkey {
char *sk_attrtype;
char *sk_matchruleoid;
int sk_reverseorder;
} LDAPsortkey;
int LDAP_CALL ldap_create_sort_control(LDAP *ld,
LDAPsortkey **sortKeyList, const char ctl_iscritical,
LDAPControl **ctrlp);
int LDAP_CALL ldap_parse_sort_control(LDAP *ld,
LDAPControl **ctrls, unsigned long *result, char **attribute);
LDAP_API(void) LDAP_CALL ldap_free_sort_keylist(LDAPsortkey **sortKeyList);
int LDAP_CALL ldap_create_sort_keylist(LDAPsortkey ***sortKeyList,
const char *string_rep);
typedef struct ldapvirtuallist {
unsigned long ldvlist_before_count;
unsigned long ldvlist_after_count;
char *ldvlist_attrvalue;
unsigned long ldvlist_index;
unsigned long ldvlist_size;
void *ldvlist_extradata;
} LDAPVirtualList;
int LDAP_CALL ldap_create_virtuallist_control(LDAP *ld,
LDAPVirtualList *ldvlistp, LDAPControl **ctrlp);
int LDAP_CALL ldap_parse_virtuallist_control(LDAP *ld,
LDAPControl **ctrls, unsigned long *target_posp,
unsigned long *list_sizep, int *errcodep);
#define LDAP_CHANGETYPE_ADD 1
#define LDAP_CHANGETYPE_DELETE 2
#define LDAP_CHANGETYPE_MODIFY 4
#define LDAP_CHANGETYPE_MODDN 8
#define LDAP_CHANGETYPE_ANY (1|2|4|8)
int LDAP_CALL ldap_create_persistentsearch_control(LDAP *ld,
int changetypes, int changesonly, int return_echg_ctls,
char ctl_iscritical, LDAPControl **ctrlp);
int LDAP_CALL ldap_parse_entrychange_control(LDAP *ld,
LDAPControl **ctrls, int *chgtypep, char **prevdnp,
int *chgnumpresentp, ber_int_t *chgnump);
int LDAP_CALL ldap_create_proxyauth_control(LDAP *ld,
const char *dn, const char ctl_iscritical, LDAPControl **ctrlp);
int LDAP_CALL ldap_create_proxiedauth_control(LDAP *ld,
const char *authzid, LDAPControl **ctrlp);
int LDAP_CALL ldap_get_lderrno(LDAP *ld, char **m, char **s);
int LDAP_CALL ldap_set_lderrno(LDAP *ld, int e, char *m, char *s);
typedef struct ldap_url_desc {
char *lud_host;
int lud_port;
char *lud_dn;
char **lud_attrs;
int lud_scope;
char *lud_filter;
unsigned long lud_options;
#define LDAP_URL_OPT_SECURE 0x01
char *lud_string;
} LDAPURLDesc;
#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL)
#define LDAP_URL_ERR_NOTLDAP 1
#define LDAP_URL_ERR_NODN 2
#define LDAP_URL_ERR_BADSCOPE 3
#define LDAP_URL_ERR_MEM 4
#define LDAP_URL_ERR_PARAM 5
#define LDAP_URL_ERR_HOSTPORT 6
int LDAP_CALL ldap_is_ldap_url(const char *url);
int LDAP_CALL ldap_url_parse(const char *url, LDAPURLDesc **ludpp);
int LDAP_CALL ldap_url_parse_nodn(const char *url, LDAPURLDesc **ludpp);
LDAP_API(void) LDAP_CALL ldap_free_urldesc(LDAPURLDesc *ludp);
int LDAP_CALL ldap_url_search(LDAP *ld, const char *url,
int attrsonly);
int LDAP_CALL ldap_url_search_s(LDAP *ld, const char *url,
int attrsonly, LDAPMessage **res);
int LDAP_CALL ldap_url_search_st(LDAP *ld, const char *url,
int attrsonly, struct timeval *timeout, LDAPMessage **res);
#ifdef _SOLARIS_SDK
char *ldap_dns_to_url(LDAP *ld, char *dns_name, char *attrs,
char *scope, char *filter);
char *ldap_dn_to_url(LDAP *ld, char *dn, int nameparts);
#ifdef STR_TRANSLATION
void ldap_set_string_translators(LDAP *ld,
BERTranslateProc encode_proc, BERTranslateProc decode_proc);
int ldap_translate_from_t61(LDAP *ld, char **bufp,
unsigned long *lenp, int free_input);
int ldap_translate_to_t61(LDAP *ld, char **bufp,
unsigned long *lenp, int free_input);
void ldap_enable_translation(LDAP *ld, LDAPMessage *entry,
int enable);
#ifdef LDAP_CHARSET_8859
int ldap_t61_to_8859(char **bufp, unsigned long *buflenp,
int free_input);
int ldap_8859_to_t61(char **bufp, unsigned long *buflenp,
int free_input);
#endif
#endif
struct ldap_tmplitem {
unsigned long ti_syntaxid;
unsigned long ti_options;
char *ti_attrname;
char *ti_label;
char **ti_args;
struct ldap_tmplitem *ti_next_in_row;
struct ldap_tmplitem *ti_next_in_col;
void *ti_appdata;
};
#define NULLTMPLITEM ((struct ldap_tmplitem *)0)
#define LDAP_SET_TMPLITEM_APPDATA(ti, datap) \
(ti)->ti_appdata = (void *)(datap)
#define LDAP_GET_TMPLITEM_APPDATA(ti, type) \
(type)((ti)->ti_appdata)
#define LDAP_IS_TMPLITEM_OPTION_SET(ti, option) \
(((ti)->ti_options & option) != 0)
struct ldap_oclist {
char **oc_objclasses;
struct ldap_oclist *oc_next;
};
#define NULLOCLIST ((struct ldap_oclist *)0)
struct ldap_adddeflist {
int ad_source;
#define LDAP_ADSRC_CONSTANTVALUE 1
#define LDAP_ADSRC_ADDERSDN 2
char *ad_attrname;
char *ad_value;
struct ldap_adddeflist *ad_next;
};
#define NULLADLIST ((struct ldap_adddeflist *)0)
#define LDAP_DTMPL_OPT_ADDABLE 0x00000001L
#define LDAP_DTMPL_OPT_ALLOWMODRDN 0x00000002L
#define LDAP_DTMPL_OPT_ALTVIEW 0x00000004L
struct ldap_disptmpl {
char *dt_name;
char *dt_pluralname;
char *dt_iconname;
unsigned long dt_options;
char *dt_authattrname;
char *dt_defrdnattrname;
char *dt_defaddlocation;
struct ldap_oclist *dt_oclist;
struct ldap_adddeflist *dt_adddeflist;
struct ldap_tmplitem *dt_items;
void *dt_appdata;
struct ldap_disptmpl *dt_next;
};
#define NULLDISPTMPL ((struct ldap_disptmpl *)0)
#define LDAP_SET_DISPTMPL_APPDATA(dt, datap) \
(dt)->dt_appdata = (void *)(datap)
#define LDAP_GET_DISPTMPL_APPDATA(dt, type) \
(type)((dt)->dt_appdata)
#define LDAP_IS_DISPTMPL_OPTION_SET(dt, option) \
(((dt)->dt_options & option) != 0)
#define LDAP_TMPL_ERR_VERSION 1
#define LDAP_TMPL_ERR_MEM 2
#define LDAP_TMPL_ERR_SYNTAX 3
#define LDAP_TMPL_ERR_FILE 4
#define LDAP_DTMPL_BUFSIZ 8192
typedef int (*writeptype)(void *writeparm, char *p, int len);
LDAP_API(int) LDAP_CALL ldap_init_templates(char *file,
struct ldap_disptmpl **tmpllistp);
LDAP_API(int) LDAP_CALL ldap_init_templates_buf(char *buf, long buflen,
struct ldap_disptmpl **tmpllistp);
LDAP_API(void) LDAP_CALL ldap_free_templates(struct ldap_disptmpl *tmpllist);
LDAP_API(struct ldap_disptmpl *) LDAP_CALL ldap_first_disptmpl(
struct ldap_disptmpl *tmpllist);
LDAP_API(struct ldap_disptmpl *) LDAP_CALL ldap_next_disptmpl(
struct ldap_disptmpl *tmpllist,
struct ldap_disptmpl *tmpl);
LDAP_API(struct ldap_disptmpl *) LDAP_CALL ldap_name2template(char *name,
struct ldap_disptmpl *tmpllist);
LDAP_API(struct ldap_disptmpl *) LDAP_CALL ldap_oc2template(char **oclist,
struct ldap_disptmpl *tmpllist);
LDAP_API(char **) LDAP_CALL ldap_tmplattrs(struct ldap_disptmpl *tmpl,
char **includeattrs, int exclude,
unsigned long syntaxmask);
LDAP_API(struct ldap_tmplitem *) LDAP_CALL ldap_first_tmplrow(
struct ldap_disptmpl *tmpl);
LDAP_API(struct ldap_tmplitem *) LDAP_CALL ldap_next_tmplrow(
struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row);
LDAP_API(struct ldap_tmplitem *) LDAP_CALL ldap_first_tmplcol(
struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row);
LDAP_API(struct ldap_tmplitem *) LDAP_CALL ldap_next_tmplcol(
struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row,
struct ldap_tmplitem *col);
LDAP_API(int) LDAP_CALL ldap_entry2text(LDAP *ld, char *buf, LDAPMessage *entry,
struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals,
writeptype writeproc, void *writeparm, char *eol, int rdncount,
unsigned long opts);
LDAP_API(int) LDAP_CALL ldap_vals2text(LDAP *ld, char *buf, char **vals,
char *label, int labelwidth,
unsigned long syntaxid, writeptype writeproc, void *writeparm,
char *eol, int rdncount);
LDAP_API(int) LDAP_CALL ldap_entry2text_search(LDAP *ld, char *dn, char *base,
LDAPMessage *entry,
struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals,
writeptype writeproc, void *writeparm, char *eol, int rdncount,
unsigned long opts);
LDAP_API(int) LDAP_CALL ldap_entry2html(LDAP *ld, char *buf, LDAPMessage *entry,
struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals,
writeptype writeproc, void *writeparm, char *eol, int rdncount,
unsigned long opts, char *urlprefix, char *base);
LDAP_API(int) LDAP_CALL ldap_vals2html(LDAP *ld, char *buf, char **vals,
char *label, int labelwidth,
unsigned long syntaxid, writeptype writeproc, void *writeparm,
char *eol, int rdncount, char *urlprefix);
LDAP_API(int) LDAP_CALL ldap_entry2html_search(LDAP *ld, char *dn, char *base,
LDAPMessage *entry,
struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals,
writeptype writeproc, void *writeparm, char *eol, int rdncount,
unsigned long opts, char *urlprefix);
struct ldap_searchattr {
char *sa_attrlabel;
char *sa_attr;
unsigned long sa_matchtypebitmap;
char *sa_selectattr;
char *sa_selecttext;
struct ldap_searchattr *sa_next;
};
struct ldap_searchmatch {
char *sm_matchprompt;
char *sm_filter;
struct ldap_searchmatch *sm_next;
};
struct ldap_searchobj {
char *so_objtypeprompt;
unsigned long so_options;
char *so_prompt;
short so_defaultscope;
char *so_filterprefix;
char *so_filtertag;
char *so_defaultselectattr;
char *so_defaultselecttext;
struct ldap_searchattr *so_salist;
struct ldap_searchmatch *so_smlist;
struct ldap_searchobj *so_next;
};
#define NULLSEARCHOBJ ((struct ldap_searchobj *)0)
#define LDAP_SEARCHOBJ_OPT_INTERNAL 0x00000001
#define LDAP_IS_SEARCHOBJ_OPTION_SET(so, option) \
(((so)->so_options & option) != 0)
#define LDAP_SEARCHPREF_VERSION_ZERO 0
#define LDAP_SEARCHPREF_VERSION 1
#define LDAP_SEARCHPREF_ERR_VERSION 1
#define LDAP_SEARCHPREF_ERR_MEM 2
#define LDAP_SEARCHPREF_ERR_SYNTAX 3
#define LDAP_SEARCHPREF_ERR_FILE 4
LDAP_API(int) LDAP_CALL ldap_init_searchprefs(char *file,
struct ldap_searchobj **solistp);
LDAP_API(int) LDAP_CALL ldap_init_searchprefs_buf(char *buf, long buflen,
struct ldap_searchobj **solistp);
LDAP_API(void) LDAP_CALL ldap_free_searchprefs(struct ldap_searchobj *solist);
LDAP_API(struct ldap_searchobj *) LDAP_CALL ldap_first_searchobj(
struct ldap_searchobj *solist);
LDAP_API(struct ldap_searchobj *) LDAP_CALL ldap_next_searchobj(
struct ldap_searchobj *sollist, struct ldap_searchobj *so);
#define LDAP_TAG_MESSAGE 0x30
#define LDAP_TAG_MSGID 0x02
#define LDAP_TAG_CONTROLS 0xa0
#define LDAP_TAG_REFERRAL 0xa3
#define LDAP_TAG_NEWSUPERIOR 0x80
#define LDAP_TAG_SASL_RES_CREDS 0x87
#define LDAP_TAG_VLV_BY_INDEX 0xa0
#define LDAP_TAG_VLV_BY_VALUE 0x81
#define LDAP_TAG_SK_MATCHRULE 0x80L
#define LDAP_TAG_SK_REVERSE 0x81L
#define LDAP_TAG_SR_ATTRTYPE 0x80L
#define LDAP_REQ_BIND 0x60
#define LDAP_REQ_UNBIND 0x42
#define LDAP_REQ_SEARCH 0x63
#define LDAP_REQ_MODIFY 0x66
#define LDAP_REQ_ADD 0x68
#define LDAP_REQ_DELETE 0x4a
#define LDAP_REQ_MODRDN 0x6c
#define LDAP_REQ_MODDN 0x6c
#define LDAP_REQ_RENAME 0x6c
#define LDAP_REQ_COMPARE 0x6e
#define LDAP_REQ_ABANDON 0x50
#define LDAP_REQ_EXTENDED 0x77
#define LDAP_REQ_UNBIND_30 0x62
#define LDAP_REQ_DELETE_30 0x6a
#define LDAP_REQ_ABANDON_30 0x70
#define LDAP_AUTH_SIMPLE_30 0xa0
#define LDAP_AUTH_KRBV41_30 0xa1
#define LDAP_AUTH_KRBV42_30 0xa2
#define LDAP_FILTER_AND 0xa0
#define LDAP_FILTER_OR 0xa1
#define LDAP_FILTER_NOT 0xa2
#define LDAP_FILTER_EQUALITY 0xa3
#define LDAP_FILTER_SUBSTRINGS 0xa4
#define LDAP_FILTER_GE 0xa5
#define LDAP_FILTER_LE 0xa6
#define LDAP_FILTER_PRESENT 0x87
#define LDAP_FILTER_APPROX 0xa8
#define LDAP_FILTER_EXTENDED 0xa9
#define LDAP_FILTER_PRESENT_30 0xa7
#define LDAP_SUBSTRING_INITIAL 0x80
#define LDAP_SUBSTRING_ANY 0x81
#define LDAP_SUBSTRING_FINAL 0x82
#define LDAP_SUBSTRING_INITIAL_30 0xa0
#define LDAP_SUBSTRING_ANY_30 0xa1
#define LDAP_SUBSTRING_FINAL_30 0xa2
#endif
LDAP_API(void) LDAP_CALL ldap_mods_free(LDAPMod **mods, int freemods);
char **LDAP_CALL ldap_get_lang_values(LDAP *ld, LDAPMessage *entry,
const char *target, char **type);
struct berval **LDAP_CALL ldap_get_lang_values_len(LDAP *ld,
LDAPMessage *entry, const char *target, char **type);
#define LDAP_OPT_REBIND_FN 0x06
#define LDAP_OPT_REBIND_ARG 0x07
typedef int (LDAP_CALL LDAP_CALLBACK LDAP_REBINDPROC_CALLBACK)(LDAP *ld,
char **dnp, char **passwdp, int *authmethodp, int freeit, void *arg);
LDAP_API(void) LDAP_CALL ldap_set_rebind_proc(LDAP *ld,
LDAP_REBINDPROC_CALLBACK *rebindproc, void *arg);
#define LDAP_OPT_THREAD_FN_PTRS 0x05
typedef void *(LDAP_C LDAP_CALLBACK LDAP_TF_MUTEX_ALLOC_CALLBACK)(void);
typedef void (LDAP_C LDAP_CALLBACK LDAP_TF_MUTEX_FREE_CALLBACK)(void *m);
typedef int (LDAP_C LDAP_CALLBACK LDAP_TF_MUTEX_LOCK_CALLBACK)(void *m);
typedef int (LDAP_C LDAP_CALLBACK LDAP_TF_MUTEX_UNLOCK_CALLBACK)(void *m);
typedef int (LDAP_C LDAP_CALLBACK LDAP_TF_GET_ERRNO_CALLBACK)(void);
typedef void (LDAP_C LDAP_CALLBACK LDAP_TF_SET_ERRNO_CALLBACK)(int e);
typedef int (LDAP_C LDAP_CALLBACK LDAP_TF_GET_LDERRNO_CALLBACK)(
char **matchedp, char **errmsgp, void *arg);
typedef void (LDAP_C LDAP_CALLBACK LDAP_TF_SET_LDERRNO_CALLBACK)(int err,
char *matched, char *errmsg, void *arg);
struct ldap_thread_fns {
LDAP_TF_MUTEX_ALLOC_CALLBACK *ltf_mutex_alloc;
LDAP_TF_MUTEX_FREE_CALLBACK *ltf_mutex_free;
LDAP_TF_MUTEX_LOCK_CALLBACK *ltf_mutex_lock;
LDAP_TF_MUTEX_UNLOCK_CALLBACK *ltf_mutex_unlock;
LDAP_TF_GET_ERRNO_CALLBACK *ltf_get_errno;
LDAP_TF_SET_ERRNO_CALLBACK *ltf_set_errno;
LDAP_TF_GET_LDERRNO_CALLBACK *ltf_get_lderrno;
LDAP_TF_SET_LDERRNO_CALLBACK *ltf_set_lderrno;
void *ltf_lderrno_arg;
};
typedef const struct berval *(LDAP_C LDAP_CALLBACK
LDAP_KEYGEN_CALLBACK)(void *arg, LDAP *ld, LDAPMessage *entry);
typedef int (LDAP_C LDAP_CALLBACK
LDAP_KEYCMP_CALLBACK)(void *arg, const struct berval *,
const struct berval *);
typedef void (LDAP_C LDAP_CALLBACK
LDAP_KEYFREE_CALLBACK)(void *arg, const struct berval *);
typedef int (LDAP_C LDAP_CALLBACK
LDAP_CMP_CALLBACK)(const char *val1, const char *val2);
typedef int (LDAP_C LDAP_CALLBACK
LDAP_VALCMP_CALLBACK)(const char **val1p, const char **val2p);
int LDAP_CALL ldap_multisort_entries(LDAP *ld, LDAPMessage **chain,
char **attr, LDAP_CMP_CALLBACK *cmp);
int LDAP_CALL ldap_sort_entries(LDAP *ld, LDAPMessage **chain,
char *attr, LDAP_CMP_CALLBACK *cmp);
int LDAP_CALL ldap_sort_values(LDAP *ld, char **vals,
LDAP_VALCMP_CALLBACK *cmp);
int LDAP_C LDAP_CALLBACK ldap_sort_strcasecmp(const char **a,
const char **b);
typedef struct ldap_filt_info {
char *lfi_filter;
char *lfi_desc;
int lfi_scope;
int lfi_isexact;
struct ldap_filt_info *lfi_next;
} LDAPFiltInfo;
#define LDAP_FILT_MAXSIZ 1024
typedef struct ldap_filt_list LDAPFiltList;
typedef struct ldap_filt_desc LDAPFiltDesc;
LDAP_API(LDAPFiltDesc *) LDAP_CALL ldap_init_getfilter(char *fname);
LDAP_API(LDAPFiltDesc *) LDAP_CALL ldap_init_getfilter_buf(char *buf,
ssize_t buflen);
LDAP_API(LDAPFiltInfo *) LDAP_CALL ldap_getfirstfilter(LDAPFiltDesc *lfdp,
char *tagpat, char *value);
LDAP_API(LDAPFiltInfo *) LDAP_CALL ldap_getnextfilter(LDAPFiltDesc *lfdp);
int LDAP_CALL ldap_set_filter_additions(LDAPFiltDesc *lfdp,
char *prefix, char *suffix);
int LDAP_CALL ldap_create_filter(char *buf, unsigned long buflen,
char *pattern, char *prefix, char *suffix, char *attr,
char *value, char **valwords);
LDAP_API(void) LDAP_CALL ldap_getfilter_free(LDAPFiltDesc *lfdp);
typedef struct friendly {
char *f_unfriendly;
char *f_friendly;
} *FriendlyMap;
char *LDAP_CALL ldap_friendly_name(char *filename, char *name,
FriendlyMap *map);
LDAP_API(void) LDAP_CALL ldap_free_friendlymap(FriendlyMap *map);
typedef struct ldapmemcache LDAPMemCache;
int LDAP_CALL ldap_memcache_init(unsigned long ttl,
unsigned long size, char **baseDNs, struct ldap_thread_fns *thread_fns,
LDAPMemCache **cachep);
int LDAP_CALL ldap_memcache_set(LDAP *ld, LDAPMemCache *cache);
int LDAP_CALL ldap_memcache_get(LDAP *ld, LDAPMemCache **cachep);
LDAP_API(void) LDAP_CALL ldap_memcache_flush(LDAPMemCache *cache, char *dn,
int scope);
LDAP_API(void) LDAP_CALL ldap_memcache_destroy(LDAPMemCache *cache);
LDAP_API(void) LDAP_CALL ldap_memcache_update(LDAPMemCache *cache);
#define LDAP_OPT_RECONNECT 0x62
#define LDAP_OPT_ASYNC_CONNECT 0x63
#define LDAP_OPT_IO_FN_PTRS 0x0B
#define LDAP_X_OPT_EXTIO_FN_PTRS (LDAP_OPT_PRIVATE_EXTENSION_BASE + 0x0F00)
#define LDAP_AUTH_NONE 0x00
#define LDAP_AUTH_SIMPLE 0x80
#define LDAP_AUTH_SASL 0xa3
int LDAP_CALL ldap_bind(LDAP *ld, const char *who,
const char *passwd, int authmethod);
int LDAP_CALL ldap_bind_s(LDAP *ld, const char *who,
const char *cred, int method);
char **LDAP_CALL ldap_explode_dns(const char *dn);
int LDAP_CALL ldap_is_dns_dn(const char *dn);
#ifdef _SOLARIS_SDK
char *ldap_dns_to_dn(char *dns_name, int *nameparts);
#endif
typedef int (LDAP_C LDAP_CALLBACK LDAP_CANCELPROC_CALLBACK)(void *cl);
int LDAP_CALL ldap_ufn_search_c(LDAP *ld, char *ufn,
char **attrs, int attrsonly, LDAPMessage **res,
LDAP_CANCELPROC_CALLBACK *cancelproc, void *cancelparm);
int LDAP_CALL ldap_ufn_search_ct(LDAP *ld, char *ufn,
char **attrs, int attrsonly, LDAPMessage **res,
LDAP_CANCELPROC_CALLBACK *cancelproc, void *cancelparm,
char *tag1, char *tag2, char *tag3);
int LDAP_CALL ldap_ufn_search_s(LDAP *ld, char *ufn,
char **attrs, int attrsonly, LDAPMessage **res);
LDAP_API(LDAPFiltDesc *) LDAP_CALL ldap_ufn_setfilter(LDAP *ld, char *fname);
LDAP_API(void) LDAP_CALL ldap_ufn_setprefix(LDAP *ld, char *prefix);
int LDAP_C ldap_ufn_timeout(void *tvparam);
typedef struct _LDAPVersion {
int sdk_version;
int protocol_version;
int SSL_version;
int security_level;
int reserved[4];
} LDAPVersion;
#define LDAP_SECURITY_NONE 0
int LDAP_CALL ldap_version(LDAPVersion *ver);
LDAP_API(void) LDAP_CALL ldap_build_filter(char *buf, size_t buflen,
char *pattern, char *prefix, char *suffix, char *attr,
char *value, char **valwords);
LDAP_API(void) LDAP_CALL ldap_setfilteraffixes(LDAPFiltDesc *lfdp,
char *prefix, char *suffix);
#define LDAP_RES_MODRDN LDAP_RES_MODDN
#define LDAP_RES_RENAME LDAP_RES_MODDN
#define LDAP_AUTH_METHOD_NOT_SUPPORTED LDAP_STRONG_AUTH_NOT_SUPPORTED
#ifdef _SOLARIS_SDK
#define LDAPSSL_AUTH_WEAK 0
#define LDAPSSL_AUTH_CERT 1
#define LDAPSSL_AUTH_CNCHECK 2
LDAP * LDAP_CALL ldapssl_init(const char *defhost, int defport,
int defsecure);
int LDAP_CALL ldapssl_install_routines(LDAP *ld);
int LDAP_CALL ldapssl_client_init(
const char *certdbpath, void *certdbhandle);
int LDAP_CALL ldapssl_clientauth_init(
const char *certdbpath, void *certdbhandle,
const int needkeydb, const char *keydbpath, void *keydbhandle);
int LDAP_CALL ldapssl_advclientauth_init(
const char *certdbpath, void *certdbhandle,
const int needkeydb, const char *keydbpath, void *keydbhandle,
const int needsecmoddb, const char *secmoddbpath,
const int sslstrength);
const char *LDAP_CALL ldapssl_err2string(const int prerrno);
int LDAP_CALL ldapssl_enable_clientauth(LDAP *ld, char *keynickname,
char *keypasswd, char *certnickname);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_TOKEN_CALLBACK)
(void *context, char **tokenname);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_PIN_CALLBACK)
(void *context, const char *tokenname, char **tokenpin);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_CERTPATH_CALLBACK)
(void *context, char **certpath);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_KEYPATH_CALLBACK)
(void *context, char **keypath);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_MODPATH_CALLBACK)
(void *context, char **modulepath);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_CERTNAME_CALLBACK)
(void *context, char **certname);
typedef int (LDAP_C LDAP_CALLBACK LDAP_PKCS_GET_DONGLEFILENAME_CALLBACK)
(void *context, char **filename);
#define PKCS_STRUCTURE_ID 1
struct ldapssl_pkcs_fns {
int local_structure_id;
void *local_data;
LDAP_PKCS_GET_CERTPATH_CALLBACK *pkcs_getcertpath;
LDAP_PKCS_GET_CERTNAME_CALLBACK *pkcs_getcertname;
LDAP_PKCS_GET_KEYPATH_CALLBACK *pkcs_getkeypath;
LDAP_PKCS_GET_MODPATH_CALLBACK *pkcs_getmodpath;
LDAP_PKCS_GET_PIN_CALLBACK *pkcs_getpin;
LDAP_PKCS_GET_TOKEN_CALLBACK *pkcs_gettokenname;
LDAP_PKCS_GET_DONGLEFILENAME_CALLBACK *pkcs_getdonglefilename;
};
int LDAP_CALL ldapssl_pkcs_init(const struct ldapssl_pkcs_fns *pfns);
#endif
#define LDAP_OPT_X_SASL_MECH 0x6100
#define LDAP_OPT_X_SASL_REALM 0x6101
#define LDAP_OPT_X_SASL_AUTHCID 0x6102
#define LDAP_OPT_X_SASL_AUTHZID 0x6103
#define LDAP_OPT_X_SASL_SSF 0x6104
#define LDAP_OPT_X_SASL_SSF_EXTERNAL 0x6105
#define LDAP_OPT_X_SASL_SECPROPS 0x6106
#define LDAP_OPT_X_SASL_SSF_MIN 0x6107
#define LDAP_OPT_X_SASL_SSF_MAX 0x6108
#define LDAP_OPT_X_SASL_MAXBUFSIZE 0x6109
#define LDAP_SASL_INTERACTIVE 1U
typedef int (LDAP_SASL_INTERACT_PROC)
(LDAP *ld, unsigned flags, void* defaults, void *interact);
int LDAP_CALL ldap_sasl_interactive_bind_s(LDAP *ld, const char *dn,
const char *saslMechanism, LDAPControl **serverControls,
LDAPControl **clientControls, unsigned flags,
LDAP_SASL_INTERACT_PROC *proc, void *defaults);
#ifdef __cplusplus
}
#endif
#endif