summaryrefslogtreecommitdiffstats
path: root/ldap/c-sdk/libraries/libldap/ldap-int.h
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/c-sdk/libraries/libldap/ldap-int.h')
-rw-r--r--ldap/c-sdk/libraries/libldap/ldap-int.h888
1 files changed, 0 insertions, 888 deletions
diff --git a/ldap/c-sdk/libraries/libldap/ldap-int.h b/ldap/c-sdk/libraries/libldap/ldap-int.h
deleted file mode 100644
index f64d1b3d3..000000000
--- a/ldap/c-sdk/libraries/libldap/ldap-int.h
+++ /dev/null
@@ -1,888 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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 Mozilla Communicator client code, released
- * March 31, 1998.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998-1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-#ifndef _LDAPINT_H
-#define _LDAPINT_H
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-#include <fcntl.h>
-#ifdef hpux
-#include <strings.h>
-#endif /* hpux */
-
-#ifdef _WINDOWS
-# define FD_SETSIZE 256 /* number of connections we support */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#elif defined(macintosh)
-#include "ldap-macos.h"
-#else /* _WINDOWS */
-# include <sys/time.h>
-# include <sys/types.h>
-# include <sys/socket.h>
-# include <netinet/in.h>
-#if !defined(XP_OS2) && !defined(XP_BEOS)
-# include <arpa/inet.h>
-#endif
-# include <netdb.h>
-#if !defined(hpux) && !defined(SUNOS4) && !defined(XP_BEOS)
-# include <sys/select.h>
-#endif /* !defined(hpux) and others */
-#endif /* _WINDOWS */
-
-#if defined(IRIX)
-#include <bstring.h>
-#endif /* IRIX */
-
-#ifdef XP_BEOS
-#define NSLDAPI_AVOID_OS_SOCKETS
-#endif
-
-#define NSLBERI_LBER_INT_FRIEND
-#ifdef macintosh
-#include "lber-int.h"
-#else /* macintosh */
-#include "../liblber/lber-int.h"
-#endif /* macintosh */
-
-#include "ldap.h"
-#include "ldaprot.h"
-#include "ldaplog.h"
-#include "portable.h"
-
-#ifdef LDAP_ASYNC_IO
-#ifdef NEED_FILIO
-#include <sys/filio.h> /* to get FIONBIO for ioctl() call */
-#else /* NEED_FILIO */
-#if !defined( _WINDOWS) && !defined (macintosh)
-#include <sys/ioctl.h> /* to get FIONBIO for ioctl() call */
-#endif /* _WINDOWS && macintosh */
-#endif /* NEED_FILIO */
-#endif /* LDAP_ASYNC_IO */
-
-#ifdef USE_SYSCONF
-# include <unistd.h>
-#endif /* USE_SYSCONF */
-
-#ifdef LDAP_SASLIO_HOOKS
-#include <sasl.h>
-#define SASL_MAX_BUFF_SIZE 65536
-#define SASL_MIN_BUFF_SIZE 4096
-#endif
-
-#if !defined(_WINDOWS) && !defined(macintosh) && !defined(BSDI) && \
- !defined(XP_OS2) && !defined(XP_BEOS) && !defined(NTO) && \
- !defined(DARWIN)
-#define NSLDAPI_HAVE_POLL 1
-#endif
-
-/* SSL version, or 0 if not built with SSL */
-#if defined(NET_SSL)
-# define SSL_VERSION 3
-#else
-# define SSL_VERSION 0
-#endif
-
-
-#define LDAP_URL_URLCOLON "URL:"
-#define LDAP_URL_URLCOLON_LEN 4
-
-#define LDAP_LDAP_REF_STR LDAP_URL_PREFIX
-#define LDAP_LDAP_REF_STR_LEN LDAP_URL_PREFIX_LEN
-#define LDAP_LDAPS_REF_STR LDAPS_URL_PREFIX
-#define LDAP_LDAPS_REF_STR_LEN LDAPS_URL_PREFIX_LEN
-
-/* default limit on nesting of referrals */
-#define LDAP_DEFAULT_REFHOPLIMIT 5
-#ifdef LDAP_DNS
-#define LDAP_DX_REF_STR "dx://"
-#define LDAP_DX_REF_STR_LEN 5
-#endif /* LDAP_DNS */
-
-typedef enum {
- LDAP_CACHE_LOCK,
- LDAP_MEMCACHE_LOCK,
- LDAP_MSGID_LOCK,
- LDAP_REQ_LOCK,
- LDAP_RESP_LOCK,
- LDAP_ABANDON_LOCK,
- LDAP_CTRL_LOCK,
- LDAP_OPTION_LOCK,
- LDAP_ERR_LOCK,
- LDAP_CONN_LOCK,
- LDAP_IOSTATUS_LOCK, /* serializes access to ld->ld_iostatus */
- LDAP_RESULT_LOCK,
- LDAP_PEND_LOCK,
- LDAP_THREADID_LOCK,
-#ifdef LDAP_SASLIO_HOOKS
- LDAP_SASL_LOCK,
-#endif
- LDAP_MAX_LOCK
-} LDAPLock;
-
-/*
- * This structure represents both ldap messages and ldap responses.
- * These are really the same, except in the case of search responses,
- * where a response has multiple messages.
- */
-
-struct ldapmsg {
- int lm_msgid; /* the message id */
- ber_tag_t lm_msgtype; /* the message type */
- BerElement *lm_ber; /* the ber encoded message contents */
- struct ldapmsg *lm_chain; /* for search - next msg in the resp */
- struct ldapmsg *lm_next; /* next response */
- int lm_fromcache; /* memcache: origin of message */
-};
-
-/*
- * structure for tracking LDAP server host, ports, DNs, etc.
- */
-typedef struct ldap_server {
- char *lsrv_host;
- char *lsrv_dn; /* if NULL, use default */
- int lsrv_port;
- unsigned long lsrv_options; /* boolean options */
-#define LDAP_SRV_OPT_SECURE 0x01
- struct ldap_server *lsrv_next;
-} LDAPServer;
-
-/*
- * structure for representing an LDAP server connection
- */
-typedef struct ldap_conn {
- Sockbuf *lconn_sb;
- BerElement *lconn_ber; /* non-NULL if in midst of msg. */
- int lconn_version; /* LDAP protocol version */
- int lconn_refcnt;
- unsigned long lconn_lastused; /* time */
- int lconn_status;
-#define LDAP_CONNST_CONNECTING 2
-#define LDAP_CONNST_CONNECTED 3
-#define LDAP_CONNST_DEAD 4
- LDAPServer *lconn_server;
- char *lconn_binddn; /* DN of last successful bind */
- int lconn_bound; /* has a bind been done? */
- int lconn_pending_requests; /* count of unsent req*/
- char *lconn_krbinstance;
-#ifdef LDAP_SASLIO_HOOKS
- sasl_conn_t *lconn_sasl_ctx; /* the sasl connection context */
-#endif /* LDAP_SASLIO_HOOKS */
- struct ldap_conn *lconn_next;
-} LDAPConn;
-
-
-/*
- * structure used to track outstanding requests
- */
-typedef struct ldapreq {
- int lr_msgid; /* the message id */
- int lr_status; /* status of request */
-#define LDAP_REQST_INPROGRESS 1
-#define LDAP_REQST_CHASINGREFS 2
-#define LDAP_REQST_WRITING 4
-#define LDAP_REQST_CONNDEAD 5 /* associated conn. has failed */
- int lr_outrefcnt; /* count of outstanding referrals */
- int lr_origid; /* original request's message id */
- int lr_parentcnt; /* count of parent requests */
- ber_tag_t lr_res_msgtype; /* result message type */
- int lr_expect_resp; /* if non-zero, expect a response */
- int lr_res_errno; /* result LDAP errno */
- char *lr_res_error; /* result error string */
- char *lr_res_matched;/* result matched DN string */
- BerElement *lr_ber; /* ber encoded request contents */
- LDAPConn *lr_conn; /* connection used to send request */
- char *lr_binddn; /* request is a bind for this DN */
- struct ldapreq *lr_parent; /* request that spawned this referral */
- struct ldapreq *lr_child; /* list of requests we spawned */
- struct ldapreq *lr_sibling; /* next referral spawned */
- struct ldapreq *lr_prev; /* ld->ld_requests previous request */
- struct ldapreq *lr_next; /* ld->ld_requests next request */
- LDAPControl **lr_res_ctrls; /* result controls */
-} LDAPRequest;
-
-typedef struct ldappend {
- void *lp_sema; /* semaphore to post */
- int lp_msgid; /* message id */
- LDAPMessage *lp_result; /* result storage */
- struct ldappend *lp_prev; /* previous pending */
- struct ldappend *lp_next; /* next pending */
-} LDAPPend;
-
-/*
- * forward declaration for I/O status structure (defined in os-ip.c)
- */
-typedef struct nsldapi_iostatus_info NSLDAPIIOStatus;
-
-/*
- * old extended IO structure (before writev callback was added)
- */
-struct ldap_x_ext_io_fns_rev0 {
- int lextiof_size;
- LDAP_X_EXTIOF_CONNECT_CALLBACK *lextiof_connect;
- LDAP_X_EXTIOF_CLOSE_CALLBACK *lextiof_close;
- LDAP_X_EXTIOF_READ_CALLBACK *lextiof_read;
- LDAP_X_EXTIOF_WRITE_CALLBACK *lextiof_write;
- LDAP_X_EXTIOF_POLL_CALLBACK *lextiof_poll;
- LDAP_X_EXTIOF_NEWHANDLE_CALLBACK *lextiof_newhandle;
- LDAP_X_EXTIOF_DISPOSEHANDLE_CALLBACK *lextiof_disposehandle;
- void *lextiof_session_arg;
-};
-#define LDAP_X_EXTIO_FNS_SIZE_REV0 sizeof(struct ldap_x_ext_io_fns_rev0)
-
-
-/*
- * Structure representing an ldap connection.
- *
- * This is an opaque struct; the fields are not visible to
- * applications that use the LDAP API.
- */
-struct ldap {
- struct sockbuf *ld_sbp; /* pointer to socket desc. & buffer */
- char *ld_host;
- int ld_version; /* LDAP protocol version */
- char ld_lberoptions;
- int ld_deref;
-
- int ld_timelimit;
- int ld_sizelimit;
-
- struct ldap_filt_desc *ld_filtd; /* from getfilter for ufn searches */
- char *ld_ufnprefix; /* for incomplete ufn's */
-
- int ld_errno;
- char *ld_error;
- char *ld_matched;
- int ld_msgid;
-
- /* Note: the ld_requests list is ordered old to new */
- LDAPRequest *ld_requests; /* list of outstanding requests */
- LDAPMessage *ld_responses; /* list of outstanding responses */
- int *ld_abandoned; /* array of abandoned requests */
- char *ld_cldapdn; /* DN used in connectionless search */
-
- int ld_cldaptries; /* connectionless search retry count */
- int ld_cldaptimeout;/* time between retries */
- int ld_refhoplimit; /* limit on referral nesting */
- unsigned long ld_options; /* boolean options */
-
-#define LDAP_BITOPT_REFERRALS 0x80000000
-#define LDAP_BITOPT_SSL 0x40000000
-#define LDAP_BITOPT_DNS 0x20000000
-#define LDAP_BITOPT_RESTART 0x10000000
-#define LDAP_BITOPT_RECONNECT 0x08000000
-#define LDAP_BITOPT_ASYNC 0x04000000
-#define LDAP_BITOPT_NOREBIND 0x02000000
-
- char *ld_defhost; /* full name of default server */
- int ld_defport; /* port of default server */
- BERTranslateProc ld_lber_encode_translate_proc;
- BERTranslateProc ld_lber_decode_translate_proc;
- LDAPConn *ld_defconn; /* default connection */
- LDAPConn *ld_conns; /* list of all server connections */
- NSLDAPIIOStatus *ld_iostatus; /* status info. about network sockets */
- LDAP_REBINDPROC_CALLBACK *ld_rebind_fn;
- void *ld_rebind_arg;
-
- /* function pointers, etc. for extended I/O */
- struct ldap_x_ext_io_fns ld_ext_io_fns;
-#define ld_extio_size ld_ext_io_fns.lextiof_size
-#define ld_extclose_fn ld_ext_io_fns.lextiof_close
-#define ld_extconnect_fn ld_ext_io_fns.lextiof_connect
-#define ld_extread_fn ld_ext_io_fns.lextiof_read
-#define ld_extwrite_fn ld_ext_io_fns.lextiof_write
-#define ld_extwritev_fn ld_ext_io_fns.lextiof_writev
-#define ld_extpoll_fn ld_ext_io_fns.lextiof_poll
-#define ld_extnewhandle_fn ld_ext_io_fns.lextiof_newhandle
-#define ld_extdisposehandle_fn ld_ext_io_fns.lextiof_disposehandle
-#define ld_ext_session_arg ld_ext_io_fns.lextiof_session_arg
-
- /* allocated pointer for older I/O functions */
- struct ldap_io_fns *ld_io_fns_ptr;
-#define NSLDAPI_USING_CLASSIC_IO_FUNCTIONS( ld ) ((ld)->ld_io_fns_ptr != NULL)
-
- /* function pointers, etc. for DNS */
- struct ldap_dns_fns ld_dnsfn;
-#define ld_dns_extradata ld_dnsfn.lddnsfn_extradata
-#define ld_dns_bufsize ld_dnsfn.lddnsfn_bufsize
-#define ld_dns_gethostbyname_fn ld_dnsfn.lddnsfn_gethostbyname
-#define ld_dns_gethostbyaddr_fn ld_dnsfn.lddnsfn_gethostbyaddr
-#define ld_dns_getpeername_fn ld_dnsfn.lddnsfn_getpeername
-
- /* function pointers, etc. for threading */
- struct ldap_thread_fns ld_thread;
-#define ld_mutex_alloc_fn ld_thread.ltf_mutex_alloc
-#define ld_mutex_free_fn ld_thread.ltf_mutex_free
-#define ld_mutex_lock_fn ld_thread.ltf_mutex_lock
-#define ld_mutex_unlock_fn ld_thread.ltf_mutex_unlock
-#define ld_get_errno_fn ld_thread.ltf_get_errno
-#define ld_set_errno_fn ld_thread.ltf_set_errno
-#define ld_get_lderrno_fn ld_thread.ltf_get_lderrno
-#define ld_set_lderrno_fn ld_thread.ltf_set_lderrno
-#define ld_lderrno_arg ld_thread.ltf_lderrno_arg
- void **ld_mutex;
-
- /* function pointers, etc. for caching */
- int ld_cache_on;
- int ld_cache_strategy;
- struct ldap_cache_fns ld_cache;
-#define ld_cache_config ld_cache.lcf_config
-#define ld_cache_bind ld_cache.lcf_bind
-#define ld_cache_unbind ld_cache.lcf_unbind
-#define ld_cache_search ld_cache.lcf_search
-#define ld_cache_compare ld_cache.lcf_compare
-#define ld_cache_add ld_cache.lcf_add
-#define ld_cache_delete ld_cache.lcf_delete
-#if 0
-#define ld_cache_rename ld_cache.lcf_rename
-#endif
-#define ld_cache_modify ld_cache.lcf_modify
-#define ld_cache_modrdn ld_cache.lcf_modrdn
-#define ld_cache_abandon ld_cache.lcf_abandon
-#define ld_cache_result ld_cache.lcf_result
-#define ld_cache_flush ld_cache.lcf_flush
-#define ld_cache_arg ld_cache.lcf_arg
-
- /* ldapv3 controls */
- LDAPControl **ld_servercontrols;
- LDAPControl **ld_clientcontrols;
-
- /* Preferred language */
- char *ld_preferred_language;
-
- /* MemCache */
- LDAPMemCache *ld_memcache;
-
- /* Pending results */
- LDAPPend *ld_pend; /* list of pending results */
-
- /* extra thread function pointers */
- struct ldap_extra_thread_fns ld_thread2;
-
- /*
- * With the 4.0 and later versions of the LDAP SDK, the extra thread
- * functions except for the ld_threadid_fn have been disabled.
- * Look at the release notes for the full explanation.
- */
-#define ld_mutex_trylock_fn ld_thread2.ltf_mutex_trylock
-#define ld_sema_alloc_fn ld_thread2.ltf_sema_alloc
-#define ld_sema_free_fn ld_thread2.ltf_sema_free
-#define ld_sema_wait_fn ld_thread2.ltf_sema_wait
-#define ld_sema_post_fn ld_thread2.ltf_sema_post
-#define ld_threadid_fn ld_thread2.ltf_threadid_fn
-
- /* extra data for mutex handling in referrals */
- void *ld_mutex_threadid[LDAP_MAX_LOCK];
- unsigned long ld_mutex_refcnt[LDAP_MAX_LOCK];
-
- /* connect timeout value (milliseconds) */
- int ld_connect_timeout;
-
-#ifdef LDAP_SASLIO_HOOKS
- /* SASL default option settings */
- char *ld_def_sasl_mech;
- char *ld_def_sasl_realm;
- char *ld_def_sasl_authcid;
- char *ld_def_sasl_authzid;
- /* SASL Security properties */
- struct sasl_security_properties ld_sasl_secprops;
-#endif
-};
-
-/* allocate/free mutex */
-#define LDAP_MUTEX_ALLOC( ld ) \
- (((ld)->ld_mutex_alloc_fn != NULL) ? (ld)->ld_mutex_alloc_fn() : NULL)
-
-/* allocate/free mutex */
-#define LDAP_MUTEX_FREE( ld, m ) \
- if ( (ld)->ld_mutex_free_fn != NULL && m != NULL ) { \
- (ld)->ld_mutex_free_fn( m ); \
- }
-
-/* enter/exit critical sections */
-/*
- * The locks assume that the locks are thread safe. XXXmcs: which means???
- *
- * Note that we test for both ld_mutex_lock_fn != NULL AND ld_mutex != NULL.
- * This is necessary because there is a window in ldap_init() between the
- * time we set the ld_mutex_lock_fn pointer and the time we allocate the
- * mutexes in which external code COULD be called which COULD make a call to
- * something like ldap_get_option(), which uses LDAP_MUTEX_LOCK(). The
- * libprldap code does this in its newhandle callback (prldap_newhandle).
- */
-
-#define LDAP_MUTEX_LOCK(ld, lock) \
- if ((ld)->ld_mutex_lock_fn != NULL && ld->ld_mutex != NULL) { \
- if ((ld)->ld_threadid_fn != NULL) { \
- if ((ld)->ld_mutex_threadid[lock] == (ld)->ld_threadid_fn()) { \
- (ld)->ld_mutex_refcnt[lock]++; \
- } else { \
- (ld)->ld_mutex_lock_fn(ld->ld_mutex[lock]); \
- (ld)->ld_mutex_threadid[lock] = ld->ld_threadid_fn(); \
- (ld)->ld_mutex_refcnt[lock] = 1; \
- } \
- } else { \
- (ld)->ld_mutex_lock_fn(ld->ld_mutex[lock]); \
- } \
- }
-
-#define LDAP_MUTEX_UNLOCK(ld, lock) \
- if ((ld)->ld_mutex_lock_fn != NULL && ld->ld_mutex != NULL) { \
- if ((ld)->ld_threadid_fn != NULL) { \
- if ((ld)->ld_mutex_threadid[lock] == (ld)->ld_threadid_fn()) { \
- (ld)->ld_mutex_refcnt[lock]--; \
- if ((ld)->ld_mutex_refcnt[lock] <= 0) { \
- (ld)->ld_mutex_threadid[lock] = (void *) -1; \
- (ld)->ld_mutex_refcnt[lock] = 0; \
- (ld)->ld_mutex_unlock_fn(ld->ld_mutex[lock]); \
- } \
- } \
- } else { \
- ld->ld_mutex_unlock_fn(ld->ld_mutex[lock]); \
- } \
- }
-
-/* Backward compatibility locks */
-#define LDAP_MUTEX_BC_LOCK( ld, i ) \
- /* the ld_mutex_trylock_fn is always set to NULL */ \
- /* in setoption.c as the extra thread functions were */ \
- /* turned off in the 4.0 SDK. This check will */ \
- /* always be true */ \
- if( (ld)->ld_mutex_trylock_fn == NULL ) { \
- LDAP_MUTEX_LOCK( ld, i ) ; \
- }
-#define LDAP_MUTEX_BC_UNLOCK( ld, i ) \
- /* the ld_mutex_trylock_fn is always set to NULL */ \
- /* in setoption.c as the extra thread functions were */ \
- /* turned off in the 4.0 SDK. This check will */ \
- /* always be true */ \
- if( (ld)->ld_mutex_trylock_fn == NULL ) { \
- LDAP_MUTEX_UNLOCK( ld, i ) ; \
- }
-
-/* allocate/free semaphore */
-#define LDAP_SEMA_ALLOC( ld ) \
- (((ld)->ld_sema_alloc_fn != NULL) ? (ld)->ld_sema_alloc_fn() : NULL)
-#define LDAP_SEMA_FREE( ld, m ) \
- if ( (ld)->ld_sema_free_fn != NULL && m != NULL ) { \
- (ld)->ld_sema_free_fn( m ); \
- }
-
-/* wait/post binary semaphore */
-#define LDAP_SEMA_WAIT( ld, lp ) \
- if ( (ld)->ld_sema_wait_fn != NULL ) { \
- (ld)->ld_sema_wait_fn( lp->lp_sema ); \
- }
-#define LDAP_SEMA_POST( ld, lp ) \
- if ( (ld)->ld_sema_post_fn != NULL ) { \
- (ld)->ld_sema_post_fn( lp->lp_sema ); \
- }
-#define POST( ld, y, z ) \
- /* the ld_mutex_trylock_fn is always set to NULL */ \
- /* in setoption.c as the extra thread functions were */ \
- /* turned off in the 4.0 SDK. This check will */ \
- /* always be false */ \
- if( (ld)->ld_mutex_trylock_fn != NULL ) { \
- nsldapi_post_result( ld, y, z ); \
- }
-
-/* get/set errno */
-#ifndef macintosh
-#define LDAP_SET_ERRNO( ld, e ) \
- if ( (ld)->ld_set_errno_fn != NULL ) { \
- (ld)->ld_set_errno_fn( e ); \
- } else { \
- errno = e; \
- }
-#define LDAP_GET_ERRNO( ld ) \
- (((ld)->ld_get_errno_fn != NULL) ? \
- (ld)->ld_get_errno_fn() : errno)
-#else /* macintosh */
-#define LDAP_SET_ERRNO( ld, e ) \
- if ( (ld)->ld_set_errno_fn != NULL ) { \
- (ld)->ld_set_errno_fn( e ); \
- }
-#define LDAP_GET_ERRNO( ld ) \
- (((ld)->ld_get_errno_fn != NULL) ? \
- (ld)->ld_get_errno_fn() : 0)
-#endif
-
-
-/* get/set ldap-specific errno */
-#define LDAP_SET_LDERRNO( ld, e, m, s ) ldap_set_lderrno( ld, e, m, s )
-#define LDAP_GET_LDERRNO( ld, m, s ) ldap_get_lderrno( ld, m, s )
-
-/*
- * your standard "mimimum of two values" macro
- */
-#define NSLDAPI_MIN(a, b) (((a) < (b)) ? (a) : (b))
-
-/*
- * handy macro to check whether LDAP struct is set up for CLDAP or not
- */
-#define LDAP_IS_CLDAP( ld ) ( ld->ld_sbp->sb_naddr > 0 )
-
-/*
- * Some Unix error defs. Under CW 7, we can't define OTUNIXERRORS because
- * it generates many conflicts with errno.h. Define what we need here.
- * These need to be in sync with OpenTransport.h
- */
-
-#if defined(macintosh)
-#define EWOULDBLOCK 35
-#define EHOSTUNREACH 65
-#endif
-
-/*
- * handy macro to check errno "e" for an "in progress" sort of error
- */
-#if defined(macintosh) || defined(_WINDOWS)
-#define NSLDAPI_ERRNO_IO_INPROGRESS( e ) ((e) == EWOULDBLOCK || (e) == EAGAIN)
-#else
-#ifdef EAGAIN
-#define NSLDAPI_ERRNO_IO_INPROGRESS( e ) ((e) == EWOULDBLOCK || (e) == EINPROGRESS || (e) == EAGAIN)
-#else /* EAGAIN */
-#define NSLDAPI_ERRNO_IO_INPROGRESS( e ) ((e) == EWOULDBLOCK || (e) == EINPROGRESS)
-#endif /* EAGAIN */
-#endif /* macintosh || _WINDOWS*/
-
-/*
- * macro to return the LDAP protocol version we are using
- */
-#define NSLDAPI_LDAP_VERSION( ld ) ( (ld)->ld_defconn == NULL ? \
- (ld)->ld_version : \
- (ld)->ld_defconn->lconn_version )
-
-/*
- * Structures used for handling client filter lists.
- */
-#define LDAP_FILT_MAXSIZ 1024
-
-struct ldap_filt_list {
- char *lfl_tag;
- char *lfl_pattern;
- char *lfl_delims;
- struct ldap_filt_info *lfl_ilist;
- struct ldap_filt_list *lfl_next;
-};
-
-struct ldap_filt_desc {
- LDAPFiltList *lfd_filtlist;
- LDAPFiltInfo *lfd_curfip;
- LDAPFiltInfo lfd_retfi;
- char lfd_filter[ LDAP_FILT_MAXSIZ ];
- char *lfd_curval;
- char *lfd_curvalcopy;
- char **lfd_curvalwords;
- char *lfd_filtprefix;
- char *lfd_filtsuffix;
-};
-
-/*
- * "internal" globals used to track defaults and memory allocation callbacks:
- * (the actual definitions are in open.c)
- */
-extern struct ldap nsldapi_ld_defaults;
-extern struct ldap_memalloc_fns nsldapi_memalloc_fns;
-extern int nsldapi_initialized;
-
-
-/*
- * Memory allocation done in liblber should all go through one of the
- * following macros. This is so we can plug-in alternative memory
- * allocators, etc. as the need arises.
- */
-#define NSLDAPI_MALLOC( size ) ldap_x_malloc( size )
-#define NSLDAPI_CALLOC( nelem, elsize ) ldap_x_calloc( nelem, elsize )
-#define NSLDAPI_REALLOC( ptr, size ) ldap_x_realloc( ptr, size )
-#define NSLDAPI_FREE( ptr ) ldap_x_free( ptr )
-
-
-/*
- * macros used to check validity of data structures and parameters
- */
-#define NSLDAPI_VALID_LDAP_POINTER( ld ) \
- ( (ld) != NULL )
-
-#define NSLDAPI_VALID_LDAPMESSAGE_POINTER( lm ) \
- ( (lm) != NULL )
-
-#define NSLDAPI_VALID_LDAPMESSAGE_ENTRY_POINTER( lm ) \
- ( (lm) != NULL && (lm)->lm_msgtype == LDAP_RES_SEARCH_ENTRY )
-
-#define NSLDAPI_VALID_LDAPMESSAGE_REFERENCE_POINTER( lm ) \
- ( (lm) != NULL && (lm)->lm_msgtype == LDAP_RES_SEARCH_REFERENCE )
-
-#define NSLDAPI_VALID_LDAPMESSAGE_BINDRESULT_POINTER( lm ) \
- ( (lm) != NULL && (lm)->lm_msgtype == LDAP_RES_BIND )
-
-#define NSLDAPI_VALID_LDAPMESSAGE_EXRESULT_POINTER( lm ) \
- ( (lm) != NULL && (lm)->lm_msgtype == LDAP_RES_EXTENDED )
-
-#define NSLDAPI_VALID_LDAPMOD_ARRAY( mods ) \
- ( (mods) != NULL )
-
-#define NSLDAPI_VALID_NONEMPTY_LDAPMOD_ARRAY( mods ) \
- ( (mods) != NULL && (mods)[0] != NULL )
-
-#define NSLDAPI_IS_SEARCH_ENTRY( code ) \
- ((code) == LDAP_RES_SEARCH_ENTRY)
-
-#define NSLDAPI_IS_SEARCH_RESULT( code ) \
- ((code) == LDAP_RES_SEARCH_RESULT)
-
-#define NSLDAPI_SEARCH_RELATED_RESULT( code ) \
- (NSLDAPI_IS_SEARCH_RESULT( code ) || NSLDAPI_IS_SEARCH_ENTRY( code ))
-
-/*
- * in bind.c
- */
-char *nsldapi_get_binddn( LDAP *ld );
-
-/*
- * in cache.c
- */
-void nsldapi_add_result_to_cache( LDAP *ld, LDAPMessage *result );
-
-/*
- * in dsparse.c
- */
-int nsldapi_next_line_tokens( char **bufp, long *blenp, char ***toksp );
-void nsldapi_free_strarray( char **sap );
-
-/*
- * in error.c
- */
-int nsldapi_parse_result( LDAP *ld, int msgtype, BerElement *rber,
- int *errcodep, char **matchednp, char **errmsgp, char ***referralsp,
- LDAPControl ***serverctrlsp );
-
-/*
- * in open.c
- */
-void nsldapi_initialize_defaults( void );
-void nsldapi_mutex_alloc_all( LDAP *ld );
-void nsldapi_mutex_free_all( LDAP *ld );
-int nsldapi_open_ldap_defconn( LDAP *ld );
-char *nsldapi_strdup( const char *s ); /* if s is NULL, returns NULL */
-
-/*
- * in os-ip.c
- */
-int nsldapi_connect_to_host( LDAP *ld, Sockbuf *sb, const char *host,
- int port, int secure, char **krbinstancep );
-void nsldapi_close_connection( LDAP *ld, Sockbuf *sb );
-
-int nsldapi_iostatus_poll( LDAP *ld, struct timeval *timeout );
-void nsldapi_iostatus_free( LDAP *ld );
-int nsldapi_iostatus_interest_write( LDAP *ld, Sockbuf *sb );
-int nsldapi_iostatus_interest_read( LDAP *ld, Sockbuf *sb );
-int nsldapi_iostatus_interest_clear( LDAP *ld, Sockbuf *sb );
-int nsldapi_iostatus_is_read_ready( LDAP *ld, Sockbuf *sb );
-int nsldapi_iostatus_is_write_ready( LDAP *ld, Sockbuf *sb );
-int nsldapi_install_lber_extiofns( LDAP *ld, Sockbuf *sb );
-int nsldapi_install_compat_io_fns( LDAP *ld, struct ldap_io_fns *iofns );
-
-/*
- * if referral.c
- */
-int nsldapi_parse_reference( LDAP *ld, BerElement *rber, char ***referralsp,
- LDAPControl ***serverctrlsp );
-
-
-/*
- * in result.c
- */
-int ldap_msgdelete( LDAP *ld, int msgid );
-int nsldapi_result_nolock( LDAP *ld, int msgid, int all, int unlock_permitted,
- struct timeval *timeout, LDAPMessage **result );
-int nsldapi_wait_result( LDAP *ld, int msgid, int all, struct timeval *timeout,
- LDAPMessage **result );
-int nsldapi_post_result( LDAP *ld, int msgid, LDAPMessage *result );
-
-/*
- * in request.c
- */
-int nsldapi_send_initial_request( LDAP *ld, int msgid, unsigned long msgtype,
- char *dn, BerElement *ber );
-int nsldapi_send_pending_requests_nolock( LDAP *ld, LDAPConn *lc );
-int nsldapi_alloc_ber_with_options( LDAP *ld, BerElement **berp );
-void nsldapi_set_ber_options( LDAP *ld, BerElement *ber );
-int nsldapi_send_ber_message( LDAP *ld, Sockbuf *sb, BerElement *ber,
- int freeit, int epipe_handler );
-int nsldapi_send_server_request( LDAP *ld, BerElement *ber, int msgid,
- LDAPRequest *parentreq, LDAPServer *srvlist, LDAPConn *lc,
- char *bindreqdn, int bind );
-LDAPConn *nsldapi_new_connection( LDAP *ld, LDAPServer **srvlistp, int use_ldsb,
- int connect, int bind );
-LDAPRequest *nsldapi_find_request_by_msgid( LDAP *ld, int msgid );
-LDAPRequest *nsldapi_new_request( LDAPConn *lc, BerElement *ber, int msgid,
- int expect_resp );
-void nsldapi_free_request( LDAP *ld, LDAPRequest *lr, int free_conn );
-void nsldapi_queue_request_nolock( LDAP *ld, LDAPRequest *lr );
-void nsldapi_free_connection( LDAP *ld, LDAPConn *lc,
- LDAPControl **serverctrls, LDAPControl **clientctrls,
- int force, int unbind );
-void nsldapi_dump_connection( LDAP *ld, LDAPConn *lconns, int all );
-void nsldapi_dump_requests_and_responses( LDAP *ld );
-int nsldapi_chase_v2_referrals( LDAP *ld, LDAPRequest *lr, char **errstrp,
- int *totalcountp, int *chasingcountp );
-int nsldapi_chase_v3_refs( LDAP *ld, LDAPRequest *lr, char **refs,
- int is_reference, int *totalcountp, int *chasingcountp );
-int nsldapi_append_referral( LDAP *ld, char **referralsp, char *s );
-void nsldapi_connection_lost_nolock( LDAP *ld, Sockbuf *sb );
-
-#ifdef LDAP_SASLIO_HOOKS
-/*
- * in saslbind.c
- */
-int nsldapi_sasl_is_inited();
-int nsldapi_sasl_cvterrno( LDAP *ld, int err, char *msg );
-int nsldapi_sasl_secprops( const char *in,
- sasl_security_properties_t *secprops );
-
-/*
- * in saslio.c
- */
-int nsldapi_sasl_install( LDAP *ld, LDAPConn *lconn );
-int nsldapi_sasl_open( LDAP *ld, LDAPConn *lconn, sasl_conn_t **ctx, sasl_ssf_t ssf );
-
-#endif /* LDAP_SASLIO_HOOKS */
-
-/*
- * in search.c
- */
-int nsldapi_build_search_req( LDAP *ld, const char *base, int scope,
- const char *filter, char **attrs, int attrsonly,
- LDAPControl **serverctrls, LDAPControl **clientctrls,
- int timelimit, int sizelimit, int msgid, BerElement **berp );
-
-/*
- * in unbind.c
- */
-int ldap_ld_free( LDAP *ld, LDAPControl **serverctrls,
- LDAPControl **clientctrls, int close );
-int nsldapi_send_unbind( LDAP *ld, Sockbuf *sb, LDAPControl **serverctrls,
- LDAPControl **clientctrls );
-
-#ifdef LDAP_DNS
-/*
- * in getdxbyname.c
- */
-char **nsldapi_getdxbyname( char *domain );
-
-#endif /* LDAP_DNS */
-
-/*
- * in unescape.c
- */
-void nsldapi_hex_unescape( char *s );
-
-/*
- * in compat.c
- */
-#ifdef hpux
-char *nsldapi_compat_ctime_r( const time_t *clock, char *buf, int buflen );
-struct hostent *nsldapi_compat_gethostbyname_r( const char *name,
- struct hostent *result, char *buffer, int buflen, int *h_errnop );
-#endif /* hpux */
-
-/*
- * in control.c
- */
-int nsldapi_put_controls( LDAP *ld, LDAPControl **ctrls, int closeseq,
- BerElement *ber );
-int nsldapi_get_controls( BerElement *ber, LDAPControl ***controlsp );
-int nsldapi_find_controls( BerElement *ber, LDAPControl ***controlsp );
-int nsldapi_dup_controls( LDAP *ld, LDAPControl ***ldctrls,
- LDAPControl **newctrls );
-int nsldapi_build_control( char *oid, BerElement *ber, int freeber,
- char iscritical, LDAPControl **ctrlp );
-
-
-/*
- * in url.c
- */
-int nsldapi_url_parse( const char *inurl, LDAPURLDesc **ludpp,
- int dn_required );
-
-
-/*
- * in charset.c
- *
- * If we ever want to expose character set translation functionality to
- * users of libldap, all of these prototypes will need to be moved to ldap.h
- */
-#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 /* LDAP_CHARSET_8859 */
-#endif /* STR_TRANSLATION */
-
-/*
- * in memcache.h
- */
-int ldap_memcache_createkey( LDAP *ld, const char *base, int scope,
- const char *filter, char **attrs, int attrsonly,
- LDAPControl **serverctrls, LDAPControl **clientctrls,
- unsigned long *keyp );
-int ldap_memcache_result( LDAP *ld, int msgid, unsigned long key );
-int ldap_memcache_new( LDAP *ld, int msgid, unsigned long key,
- const char *basedn );
-int ldap_memcache_append( LDAP *ld, int msgid, int bLast, LDAPMessage *result );
-int ldap_memcache_abandon( LDAP *ld, int msgid );
-
-/*
- * in sbind.c
- */
-void nsldapi_handle_reconnect( LDAP *ld );
-
-#endif /* _LDAPINT_H */