From 40a2db889caad7472ef347c83f0f9c5f906792da Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 24 Jan 2012 14:40:00 -0800 Subject: [PATCH] More for prev commit (270ef33acf18dc13bfd07f8a8e66b446f80e7d27) --- libraries/libldap/init.c | 8 +- libraries/libldap/ldap-int.h | 166 ++++++++++++++++++----------------- 2 files changed, 94 insertions(+), 80 deletions(-) diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index 8b5b2e6228..c87e7d0aa8 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -36,7 +36,13 @@ #include "lutil.h" struct ldapoptions ldap_int_global_options = - { LDAP_UNINITIALIZED, LDAP_DEBUG_NONE LDAP_LDO_MUTEX_NULLARG }; + { LDAP_UNINITIALIZED, LDAP_DEBUG_NONE + LDAP_LDO_NULLARG + LDAP_LDO_CONNECTIONLESS_NULLARG + LDAP_LDO_TLS_NULLARG + LDAP_LDO_SASL_NULLARG + LDAP_LDO_GSSAPI_NULLARG + LDAP_LDO_MUTEX_NULLARG }; #define ATTR_NONE 0 #define ATTR_BOOL 1 diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h index 6db09cf238..c722088290 100644 --- a/libraries/libldap/ldap-int.h +++ b/libraries/libldap/ldap-int.h @@ -188,22 +188,59 @@ struct ldapoptions { #define LDAP_TRASHED_SESSION 0xFF int ldo_debug; + ber_int_t ldo_version; + ber_int_t ldo_deref; + ber_int_t ldo_timelimit; + ber_int_t ldo_sizelimit; + + /* per API call timeout */ + struct timeval ldo_tm_api; + struct timeval ldo_tm_net; + + LDAPURLDesc *ldo_defludp; + int ldo_defport; + char* ldo_defbase; + char* ldo_defbinddn; /* bind dn */ + + /* + * Per connection tcp-keepalive settings (Linux only, + * ignored where unsupported) + */ + ber_int_t ldo_keepalive_idle; + ber_int_t ldo_keepalive_probes; + ber_int_t ldo_keepalive_interval; + + int ldo_refhoplimit; /* limit on referral nesting */ + + /* LDAPv3 server and client controls */ + LDAPControl **ldo_sctrls; + LDAPControl **ldo_cctrls; + + /* LDAP rebind callback function */ + LDAP_REBIND_PROC *ldo_rebind_proc; + void *ldo_rebind_params; + LDAP_NEXTREF_PROC *ldo_nextref_proc; + void *ldo_nextref_params; + LDAP_URLLIST_PROC *ldo_urllist_proc; + void *ldo_urllist_params; + + /* LDAP connection callback stack */ + ldaplist *ldo_conn_cbs; + + LDAP_BOOLEANS ldo_booleans; /* boolean options */ + +#define LDAP_LDO_NULLARG ,0,0,0,0 ,{0},{0} ,0,0,0,0, 0,0,0,0, 0,0, 0,0,0,0,0,0, 0, 0 + #ifdef LDAP_CONNECTIONLESS #define LDAP_IS_UDP(ld) ((ld)->ld_options.ldo_is_udp) void* ldo_peer; /* struct sockaddr* */ char* ldo_cldapdn; int ldo_is_udp; +#define LDAP_LDO_CONNECTIONLESS_NULLARG ,0,0,0 +#else +#define LDAP_LDO_CONNECTIONLESS_NULLARG #endif - /* per API call timeout */ - struct timeval ldo_tm_api; - struct timeval ldo_tm_net; - - ber_int_t ldo_version; - ber_int_t ldo_deref; - ber_int_t ldo_timelimit; - ber_int_t ldo_sizelimit; - #ifdef HAVE_TLS /* tls context */ void *ldo_tls_ctx; @@ -222,15 +259,11 @@ struct ldapoptions { int ldo_tls_mode; int ldo_tls_require_cert; int ldo_tls_impl; -#ifdef HAVE_OPENSSL_CRL int ldo_tls_crlcheck; +#define LDAP_LDO_TLS_NULLARG ,0,0,0,{0,0,0,0,0,0,0,0,0},0,0,0,0 +#else +#define LDAP_LDO_TLS_NULLARG #endif -#endif - - LDAPURLDesc *ldo_defludp; - int ldo_defport; - char* ldo_defbase; - char* ldo_defbinddn; /* bind dn */ #ifdef HAVE_CYRUS_SASL char* ldo_def_sasl_mech; /* SASL Mechanism(s) */ @@ -240,6 +273,9 @@ struct ldapoptions { /* SASL Security Properties */ struct sasl_security_properties ldo_sasl_secprops; +#define LDAP_LDO_SASL_NULLARG ,0,0,0,0,{0} +#else +#define LDAP_LDO_SASL_NULLARG #endif #ifdef HAVE_GSSAPI @@ -249,35 +285,11 @@ struct ldapoptions { #define LDAP_GSSAPI_OPT_DO_NOT_FREE_GSS_CONTEXT 0x0001 #define LDAP_GSSAPI_OPT_ALLOW_REMOTE_PRINCIPAL 0x0002 unsigned ldo_gssapi_options; +#define LDAP_LDO_GSSAPI_NULLARG ,0,0 +#else +#define LDAP_LDO_GSSAPI_NULLARG #endif - /* - * Per connection tcp-keepalive settings (Linux only, - * ignored where unsupported) - */ - ber_int_t ldo_keepalive_idle; - ber_int_t ldo_keepalive_probes; - ber_int_t ldo_keepalive_interval; - - int ldo_refhoplimit; /* limit on referral nesting */ - - /* LDAPv3 server and client controls */ - LDAPControl **ldo_sctrls; - LDAPControl **ldo_cctrls; - - /* LDAP rebind callback function */ - LDAP_REBIND_PROC *ldo_rebind_proc; - void *ldo_rebind_params; - LDAP_NEXTREF_PROC *ldo_nextref_proc; - void *ldo_nextref_params; - LDAP_URLLIST_PROC *ldo_urllist_proc; - void *ldo_urllist_params; - - /* LDAP connection callback stack */ - ldaplist *ldo_conn_cbs; - - LDAP_BOOLEANS ldo_booleans; /* boolean options */ - #ifdef LDAP_R_COMPILE ldap_pvt_thread_mutex_t ldo_mutex; #define LDAP_LDO_MUTEX_NULLARG , LDAP_PVT_MUTEX_NULL @@ -378,38 +390,6 @@ struct ldap_common { Sockbuf *ldc_sb; /* socket descriptor & buffer */ #define ld_sb ldc->ldc_sb - /* protected by ldo_mutex */ - struct ldapoptions ldc_options; -#define ld_options ldc->ldc_options - -#define ld_valid ld_options.ldo_valid -#define ld_debug ld_options.ldo_debug - -#define ld_deref ld_options.ldo_deref -#define ld_timelimit ld_options.ldo_timelimit -#define ld_sizelimit ld_options.ldo_sizelimit - -#define ld_defbinddn ld_options.ldo_defbinddn -#define ld_defbase ld_options.ldo_defbase -#define ld_defhost ld_options.ldo_defhost -#define ld_defport ld_options.ldo_defport - -#define ld_refhoplimit ld_options.ldo_refhoplimit - -#define ld_sctrls ld_options.ldo_sctrls -#define ld_cctrls ld_options.ldo_cctrls -#define ld_rebind_proc ld_options.ldo_rebind_proc -#define ld_rebind_params ld_options.ldo_rebind_params -#define ld_nextref_proc ld_options.ldo_nextref_proc -#define ld_nextref_params ld_options.ldo_nextref_params -#define ld_urllist_proc ld_options.ldo_urllist_proc -#define ld_urllist_params ld_options.ldo_urllist_params - -#define ld_version ld_options.ldo_version -#ifdef LDAP_R_COMPILE -#define ld_ldopts_mutex ld_options.ldo_mutex -#endif - unsigned short ldc_lberoptions; #define ld_lberoptions ldc->ldc_lberoptions @@ -446,20 +426,48 @@ struct ldap_common { #define ld_selectinfo ldc->ldc_selectinfo /* ldap_common refcnt - free only if 0 */ -#ifdef LDAP_R_COMPILE - ldap_pvt_thread_mutex_t ldc_mutex; -#define ld_ldcmutex ldc->ldc_mutex -#endif /* protected by ldc_mutex */ unsigned int ldc_refcnt; #define ld_ldcrefcnt ldc->ldc_refcnt + /* protected by ldo_mutex */ + struct ldapoptions ldc_options; +#define ld_options ldc->ldc_options + +#define ld_valid ld_options.ldo_valid +#define ld_debug ld_options.ldo_debug + +#define ld_deref ld_options.ldo_deref +#define ld_timelimit ld_options.ldo_timelimit +#define ld_sizelimit ld_options.ldo_sizelimit + +#define ld_defbinddn ld_options.ldo_defbinddn +#define ld_defbase ld_options.ldo_defbase +#define ld_defhost ld_options.ldo_defhost +#define ld_defport ld_options.ldo_defport + +#define ld_refhoplimit ld_options.ldo_refhoplimit + +#define ld_sctrls ld_options.ldo_sctrls +#define ld_cctrls ld_options.ldo_cctrls +#define ld_rebind_proc ld_options.ldo_rebind_proc +#define ld_rebind_params ld_options.ldo_rebind_params +#define ld_nextref_proc ld_options.ldo_nextref_proc +#define ld_nextref_params ld_options.ldo_nextref_params +#define ld_urllist_proc ld_options.ldo_urllist_proc +#define ld_urllist_params ld_options.ldo_urllist_params + +#define ld_version ld_options.ldo_version + #ifdef LDAP_R_COMPILE + ldap_pvt_thread_mutex_t ldc_mutex; ldap_pvt_thread_mutex_t ldc_msgid_mutex; ldap_pvt_thread_mutex_t ldc_conn_mutex; ldap_pvt_thread_mutex_t ldc_req_mutex; ldap_pvt_thread_mutex_t ldc_res_mutex; ldap_pvt_thread_mutex_t ldc_abandon_mutex; +#define ld_ldopts_mutex ld_options.ldo_mutex +#define ld_ldcmutex ldc->ldc_mutex #define ld_msgid_mutex ldc->ldc_msgid_mutex #define ld_conn_mutex ldc->ldc_conn_mutex #define ld_req_mutex ldc->ldc_req_mutex -- 2.39.5