X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fldap-int.h;h=e9146db127075b985e0816da0e673d53345672a7;hb=e0691dfbc07d0b2a0e6bec528b33802ed04f5960;hp=bd07b0b4ab77ce9fec51ed068a97710c2b72bb7a;hpb=2e5a52414a0d29382b971bce0450dfd6a8ff6b54;p=openldap diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h index bd07b0b4ab..e9146db127 100644 --- a/libraries/libldap/ldap-int.h +++ b/libraries/libldap/ldap-int.h @@ -32,31 +32,34 @@ LDAP_BEGIN_DECL #define LDAP_URL_PREFIX "ldap://" -#define LDAP_URL_PREFIX_LEN 7 -#define LDAP_URL_URLCOLON "URL:" -#define LDAP_URL_URLCOLON_LEN 4 +#define LDAP_URL_PREFIX_LEN (sizeof(LDAP_URL_PREFIX)-1) +#define LDAPS_URL_PREFIX "ldaps://" +#define LDAPS_URL_PREFIX_LEN (sizeof(LDAPS_URL_PREFIX)-1) +#define LDAP_URL_URLCOLON "URL:" +#define LDAP_URL_URLCOLON_LEN (sizeof(LDAP_URL_URLCOLON)-1) #define NULLLDAPURLDESC ((LDAPURLDesc *)NULL) #define LDAP_REF_STR "Referral:\n" -#define LDAP_REF_STR_LEN 10 +#define LDAP_REF_STR_LEN (sizeof(LDAP_REF_STR)-1) #define LDAP_LDAP_REF_STR LDAP_URL_PREFIX -#define LDAP_LDAP_REF_STR_LEN LDAP_URL_PREFIX_LEN - -#define LDAP_DEFAULT_REFHOPLIMIT 5 +#define LDAP_LDAP_REF_STR_LEN (sizeof(LDAP_LDAP_REF_STR)-1) #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS #define LDAP_DX_REF_STR "dx://" -#define LDAP_DX_REF_STR_LEN 5 +#define LDAP_DX_REF_STR_LEN (sizeof(LDAP_DX_REF_STR)-1) #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */ +#define LDAP_DEFAULT_REFHOPLIMIT 5 + #define LDAP_BOOL_REFERRALS 0 #define LDAP_BOOL_RESTART 1 #define LDAP_BOOL_DNS 2 +#define LDAP_BOOL_TLS 3 #define LDAP_BOOLEANS unsigned long #define LDAP_BOOL(n) (1 << (n)) #define LDAP_BOOL_GET(lo, bool) ((lo)->ldo_booleans & LDAP_BOOL(bool) \ - ? LDAP_OPT_ON : LDAP_OPT_OFF) + ? -1 : 0) #define LDAP_BOOL_SET(lo, bool) ((lo)->ldo_booleans |= LDAP_BOOL(bool)) #define LDAP_BOOL_CLR(lo, bool) ((lo)->ldo_booleans &= ~LDAP_BOOL(bool)) #define LDAP_BOOL_ZERO(lo) ((lo)->ldo_booleans = 0) @@ -68,14 +71,14 @@ LDAP_BEGIN_DECL */ struct ldapmsg { - int lm_msgid; /* the message id */ - int lm_msgtype; /* the message type */ + ber_int_t 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 */ time_t lm_time; /* used to maintain cache */ }; -#define NULLMSG ((LDAPMessage *)NULL) + /* * structure representing get/set'able options * which have global defaults. @@ -87,11 +90,14 @@ struct ldapoptions { #define LDAP_VALID_SESSION 0x2 int ldo_debug; + /* per API call timeout */ + struct timeval *ldo_tm_api; + struct timeval *ldo_tm_net; - int ldo_version; /* version to connect at */ - int ldo_deref; - int ldo_timelimit; - int ldo_sizelimit; + ber_int_t ldo_version; /* version to connect at */ + ber_int_t ldo_deref; + ber_int_t ldo_timelimit; + ber_int_t ldo_sizelimit; int ldo_defport; char* ldo_defbase; @@ -107,10 +113,16 @@ struct ldapoptions { /* LDAPv3 server and client controls */ LDAPControl **ldo_sctrls; LDAPControl **ldo_cctrls; - + +#ifdef HAVE_TLS + /* tls context */ + void *ldo_tls_ctx; + int ldo_tls_mode; +#endif LDAP_BOOLEANS ldo_booleans; /* boolean options */ }; + /* * structure for tracking LDAP server host, ports, DNs, etc. */ @@ -144,17 +156,17 @@ typedef struct ldap_conn { * structure used to track outstanding requests */ typedef struct ldapreq { - int lr_msgid; /* the message id */ + ber_int_t lr_msgid; /* the message id */ int lr_status; /* status of request */ #define LDAP_REQST_INPROGRESS 1 #define LDAP_REQST_CHASINGREFS 2 #define LDAP_REQST_NOTCONNECTED 3 #define LDAP_REQST_WRITING 4 int lr_outrefcnt; /* count of outstanding referrals */ - int lr_origid; /* original request's message id */ + ber_int_t lr_origid; /* original request's message id */ int lr_parentcnt; /* count of parent requests */ - int lr_res_msgtype; /* result message type */ - int lr_res_errno; /* result LDAP errno */ + ber_tag_t lr_res_msgtype; /* result message type */ + ber_int_t 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 */ @@ -173,14 +185,13 @@ typedef struct ldapcache { LDAPMessage *lc_buckets[LDAP_CACHE_BUCKETS];/* hash table */ LDAPMessage *lc_requests; /* unfulfilled reqs */ long lc_timeout; /* request timeout */ - long lc_maxmem; /* memory to use */ - long lc_memused; /* memory in use */ + ber_len_t lc_maxmem; /* memory to use */ + ber_len_t lc_memused; /* memory in use */ int lc_enabled; /* enabled? */ unsigned long lc_options; /* options */ #define LDAP_CACHE_OPT_CACHENOERRS 0x00000001 #define LDAP_CACHE_OPT_CACHEALLERRS 0x00000002 } LDAPCache; -#define NULLLDCACHE ((LDAPCache *)NULL) /* * handy macro for checking if handle is connectionless @@ -215,25 +226,25 @@ struct ldap { #define ld_sctrls ld_options.ldo_sctrls #define ld_cctrls ld_options.ldo_cctrls - int ld_version; /* version connected at */ + ber_int_t ld_version; /* version connected at */ char *ld_host; int ld_port; - short ld_lberoptions; + unsigned short ld_lberoptions; LDAPFiltDesc *ld_filtd; /* from getfilter for ufn searches */ char *ld_ufnprefix; /* for incomplete ufn's */ - int ld_errno; + ber_int_t ld_errno; char *ld_error; char *ld_matched; - int ld_msgid; + ber_len_t ld_msgid; /* do not mess with these */ LDAPRequest *ld_requests; /* list of outstanding requests */ LDAPMessage *ld_responses; /* list of outstanding responses */ - int *ld_abandoned; /* array of abandoned requests */ + ber_int_t *ld_abandoned; /* array of abandoned requests */ LDAPCache *ld_cache; /* non-null if cache is initialized */ /* stuff used by connectionless searches. */ @@ -269,13 +280,15 @@ void ldap_int_initialize LDAP_P((void)); #define LDAP_INT_CALLOC(n,s) (LBER_CALLOC((n),(s))) #define LDAP_INT_REALLOC(p,s) (LBER_REALLOC((p),(s))) #define LDAP_INT_FREE(p) (LBER_FREE((p))) +#define LDAP_INT_VFREE(v) (LBER_VFREE((void **)(v))) +#define LDAP_INT_STRDUP(s) (LBER_STRDUP((s))) -#ifndef LDAP_MALLOC #define LDAP_MALLOC(s) (LBER_MALLOC((s))) #define LDAP_CALLOC(n,s) (LBER_CALLOC((n),(s))) #define LDAP_REALLOC(p,s) (LBER_REALLOC((p),(s))) #define LDAP_FREE(p) (LBER_FREE((p))) -#endif +#define LDAP_VFREE(v) (LBER_VFREE((void **)(v))) +#define LDAP_STRDUP(s) (LBER_STRDUP((s))) /* * in unit-int.c @@ -291,10 +304,10 @@ int ldap_log_printf LDAP_P((LDAP *ld, int level, const char *fmt, ...)); /* * in cache.c */ -void ldap_add_request_to_cache LDAP_P(( LDAP *ld, unsigned long msgtype, +void ldap_add_request_to_cache LDAP_P(( LDAP *ld, ber_tag_t msgtype, BerElement *request )); void ldap_add_result_to_cache LDAP_P(( LDAP *ld, LDAPMessage *result )); -int ldap_check_cache LDAP_P(( LDAP *ld, unsigned long msgtype, BerElement *request )); +int ldap_check_cache LDAP_P(( LDAP *ld, ber_tag_t msgtype, BerElement *request )); /* * in controls.c @@ -303,7 +316,7 @@ LDAPControl *ldap_control_dup LDAP_P(( const LDAPControl *ctrl )); LDAPControl **ldap_controls_dup LDAP_P(( - const LDAPControl **ctrls )); + LDAPControl *const *ctrls )); int ldap_int_get_controls LDAP_P(( BerElement *be, @@ -311,13 +324,13 @@ int ldap_int_get_controls LDAP_P(( int ldap_int_put_controls LDAP_P(( LDAP *ld, - LDAPControl **ctrls, + LDAPControl *const *ctrls, BerElement *ber )); /* * in dsparse.c */ -int next_line_tokens LDAP_P(( char **bufp, long *blenp, char ***toksp )); +int next_line_tokens LDAP_P(( char **bufp, ber_len_t *blenp, char ***toksp )); void free_strarray LDAP_P(( char **sap )); #ifdef HAVE_KERBEROS @@ -328,7 +341,7 @@ char *ldap_get_kerberosv4_credentials LDAP_P(( LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *service, - int *len )); + ber_len_t *len )); #endif /* HAVE_KERBEROS */ @@ -343,14 +356,18 @@ int open_ldap_connection( LDAP *ld, Sockbuf *sb, const char *host, int defport, /* * in os-ip.c */ -int ldap_connect_to_host( Sockbuf *sb, const char *host, unsigned long address, int port, - int async ); +extern int ldap_int_tblsize; +int ldap_int_timeval_dup( struct timeval **dest, const struct timeval *tm ); +int ldap_connect_to_host( LDAP *ld, Sockbuf *sb, const char *host, + unsigned long address, int port, int async ); + void ldap_close_connection( Sockbuf *sb ); #ifdef HAVE_KERBEROS char *ldap_host_connected_to( Sockbuf *sb ); #endif /* HAVE_KERBEROS */ +void ldap_int_ip_init( void ); int do_ldap_select( LDAP *ld, struct timeval *timeout ); void *ldap_new_select_info( void ); void ldap_free_select_info( void *sip ); @@ -364,17 +381,17 @@ int ldap_is_write_ready( LDAP *ld, Sockbuf *sb ); /* * in request.c */ -int ldap_send_initial_request( LDAP *ld, unsigned long msgtype, +ber_int_t ldap_send_initial_request( LDAP *ld, ber_tag_t msgtype, const char *dn, BerElement *ber ); BerElement *ldap_alloc_ber_with_options( LDAP *ld ); void ldap_set_ber_options( LDAP *ld, BerElement *ber ); -int ldap_send_server_request( LDAP *ld, BerElement *ber, int msgid, +int ldap_send_server_request( LDAP *ld, BerElement *ber, ber_int_t msgid, LDAPRequest *parentreq, LDAPServer *srvlist, LDAPConn *lc, int bind ); LDAPConn *ldap_new_connection( LDAP *ld, LDAPServer **srvlistp, int use_ldsb, int connect, int bind ); -LDAPRequest *ldap_find_request_by_msgid( LDAP *ld, int msgid ); +LDAPRequest *ldap_find_request_by_msgid( LDAP *ld, ber_int_t msgid ); void ldap_free_request( LDAP *ld, LDAPRequest *lr ); void ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind ); void ldap_dump_connection( LDAP *ld, LDAPConn *lconns, int all ); @@ -387,7 +404,7 @@ int ldap_append_referral( LDAP *ld, char **referralsp, char *s ); * in result.c: */ #ifdef LDAP_CONNECTIONLESS -LDAP_F int cldap_getmsg ( LDAP *ld, struct timeval *timeout, BerElement *ber ); +int cldap_getmsg( LDAP *ld, struct timeval *timeout, BerElement *ber ); #endif /* @@ -395,19 +412,20 @@ LDAP_F int cldap_getmsg ( LDAP *ld, struct timeval *timeout, BerElement *ber ); */ BerElement *ldap_build_search_req LDAP_P(( LDAP *ld, - const char *base, int scope, - const char *filter, char **attrs, int attrsonly, + const char *base, + ber_int_t scope, + const char *filter, + char **attrs, + ber_int_t attrsonly, LDAPControl **sctrls, LDAPControl **cctrls, - int timelimit, - int sizelimit )); + ber_int_t timelimit, + ber_int_t sizelimit )); /* * in string.c */ -char *ldap_int_strdup LDAP_P(( const char * )); -#undef strdup -#define strdup ldap_int_strdup + /* see */ /* * in unbind.c @@ -441,9 +459,9 @@ char **ldap_getdxbyname( const char *domain ); */ #if LDAP_CHARSET_8859 == LDAP_DEFAULT_CHARSET extern -int ldap_t61_to_8859( char **bufp, unsigned long *buflenp, int free_input ); +int ldap_t61_to_8859( char **bufp, ber_len_t *buflenp, int free_input ); extern -int ldap_8859_to_t61( char **bufp, unsigned long *buflenp, int free_input ); +int ldap_8859_to_t61( char **bufp, ber_len_t *buflenp, int free_input ); #endif /* LDAP_CHARSET_8859 == LDAP_DEFAULT_CHARSET */ #endif /* STR_TRANSLATION && LDAP_DEFAULT_CHARSET */