]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/ldap-int.h
rename ldap_pvt_init_utils() to ldap_int_utils_init() and provide
[openldap] / libraries / libldap / ldap-int.h
index 9f27a0a6a347086c52114095720f0fe6ba06170a..d818787487faefa353f591aa45cae718b4f9dc26 100644 (file)
@@ -35,17 +35,19 @@ LDAP_BEGIN_DECL
 #define LDAP_URL_PREFIX_LEN     7
 #define LDAP_URL_URLCOLON      "URL:"
 #define LDAP_URL_URLCOLON_LEN  4
+#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL)
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 #define LDAP_REF_STR           "Referral:\n"
 #define LDAP_REF_STR_LEN       10
 #define LDAP_LDAP_REF_STR      LDAP_URL_PREFIX
 #define LDAP_LDAP_REF_STR_LEN  LDAP_URL_PREFIX_LEN
+
+#define LDAP_DEFAULT_REFHOPLIMIT 5
+
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS
 #define LDAP_DX_REF_STR                "dx://"
 #define LDAP_DX_REF_STR_LEN    5
 #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
 #define LDAP_BOOL_REFERRALS            0
 #define LDAP_BOOL_RESTART              1
@@ -73,7 +75,7 @@ struct ldapmsg {
        struct ldapmsg  *lm_next;       /* next response */
        unsigned int    lm_time;        /* used to maintain cache */
 };
-
+#define NULLMSG ((LDAPMessage *)NULL)
 /*
  * structure representing get/set'able options
  * which have global defaults.
@@ -95,13 +97,12 @@ struct ldapoptions {
        int             ldo_refhoplimit;        /* limit on referral nesting */
 
        /* LDAPv3 server and client controls */
-       LDAPControl     **ldo_server_controls;
-       LDAPControl **ldo_client_controls;
+       LDAPControl     **ldo_sctrls;
+       LDAPControl **ldo_cctrls;
        
        LDAP_BOOLEANS ldo_booleans;     /* boolean options */
 };
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 /*
  * structure for tracking LDAP server host, ports, DNs, etc.
  */
@@ -155,7 +156,6 @@ typedef struct ldapreq {
        struct ldapreq  *lr_prev;       /* previous request */
        struct ldapreq  *lr_next;       /* next request */
 } LDAPRequest;
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
 /*
  * structure for client cache
@@ -201,11 +201,14 @@ struct ldap {
 #define ld_cldaptimeout        ld_options.ldo_cldaptimeout
 #define ld_refhoplimit ld_options.ldo_refhoplimit
 
+#define ld_sctrls              ld_options.ldo_sctrls
+#define ld_cctrls              ld_options.ldo_cctrls
+
        int             ld_version;             /* version connected at */
        char    *ld_host;
        int             ld_port;
 
-       char    ld_lberoptions;
+       short           ld_lberoptions;
 
        LDAPFiltDesc    *ld_filtd;      /* from getfilter for ufn searches */
        char            *ld_ufnprefix;  /* for incomplete ufn's */
@@ -216,35 +219,27 @@ struct ldap {
        int             ld_msgid;
 
        /* do not mess with these */
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
        LDAPRequest     *ld_requests;   /* list of outstanding requests */
-#else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
-       LDAPMessage     *ld_requests;   /* list of outstanding requests */
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
        LDAPMessage     *ld_responses;  /* list of outstanding responses */
+
        int             *ld_abandoned;  /* array of abandoned requests */
-       char            ld_attrbuffer[LDAP_MAX_ATTR_LEN];
+
        LDAPCache       *ld_cache;      /* non-null if cache is initialized */
        /* stuff used by connectionless searches. */
        char            *ld_cldapdn;    /* DN used in connectionless search */
        int             ld_cldapnaddr; /* number of addresses */
        void            **ld_cldapaddrs;/* addresses to send request to */
-#ifndef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS       
-       /* BerElement that this connection is receiving. */
-       BerElement      ld_ber;
-#endif 
+
        /* do not mess with the rest though */
        BERTranslateProc ld_lber_encode_translate_proc;
        BERTranslateProc ld_lber_decode_translate_proc;
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
        LDAPConn        *ld_defconn;    /* default connection */
        LDAPConn        *ld_conns;      /* list of server connections */
        void            *ld_selectinfo; /* platform specifics for select */
        int             (*ld_rebindproc)( struct ldap *ld, char **dnp,
                                char **passwdp, int *authmethodp, int freeit );
                                /* routine to get info needed for re-bind */
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 };
 
 /*
@@ -254,10 +249,17 @@ extern int openldap_ldap_initialized;
 extern struct ldapoptions openldap_ldap_global_options;
 void openldap_ldap_initialize LDAP_P((void));
 
+
+/*
+ * in unit-int.c
+ */
+void ldap_int_utils_init LDAP_P(( void ));
+
+
 /*
  * in print.c
  */
-int ldap_log_printf LDAP_P((LDAP *ld, int level, char *fmt, ...));
+int ldap_log_printf LDAP_P((LDAP *ld, int level, const char *fmt, ...));
 
 /*
  * in cache.c
@@ -270,9 +272,20 @@ int ldap_check_cache LDAP_P(( LDAP *ld, unsigned long msgtype, BerElement *reque
 /*
  * in controls.c
  */
-LDAPControl *ldap_control_dup LDAP_P(( LDAPControl *ctrl ));
-LDAPControl **ldap_controls_dup LDAP_P(( LDAPControl **ctrl ));
-int ldap_get_ber_controls LDAP_P(( BerElement *be, LDAPControl ***cp));
+LDAPControl *ldap_control_dup LDAP_P((
+       const LDAPControl *ctrl ));
+
+LDAPControl **ldap_controls_dup LDAP_P((
+       const LDAPControl **ctrls ));
+
+int ldap_int_get_controls LDAP_P((
+       BerElement *be,
+       LDAPControl ***ctrlsp));
+
+int ldap_int_put_controls LDAP_P((
+       LDAP *ld,
+       LDAPControl **ctrls,
+       BerElement *ber ));
 
 /*
  * in dsparse.c
@@ -284,8 +297,11 @@ void free_strarray LDAP_P(( char **sap ));
 /*
  * in kerberos.c
  */
-char *ldap_get_kerberosv4_credentials LDAP_P(( LDAP *ld, char *who, char *service,
-        int *len ));
+char *ldap_get_kerberosv4_credentials LDAP_P((
+       LDAP *ld,
+       LDAP_CONST char *who,
+       LDAP_CONST char *service,
+       int *len ));
 
 #endif /* HAVE_KERBEROS */
 
@@ -293,14 +309,14 @@ char *ldap_get_kerberosv4_credentials LDAP_P(( LDAP *ld, char *who, char *servic
 /*
  * in open.c
  */
-int open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport,
+int open_ldap_connection( LDAP *ld, Sockbuf *sb, const char *host, int defport,
        char **krbinstancep, int async );
 
 
 /*
  * in os-ip.c
  */
-int ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address, int port,
+int ldap_connect_to_host( Sockbuf *sb, const char *host, unsigned long address, int port,
        int async );
 void ldap_close_connection( Sockbuf *sb );
 
@@ -308,7 +324,6 @@ void ldap_close_connection( Sockbuf *sb );
 char *ldap_host_connected_to( Sockbuf *sb );
 #endif /* HAVE_KERBEROS */
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 int do_ldap_select( LDAP *ld, struct timeval *timeout );
 void *ldap_new_select_info( void );
 void ldap_free_select_info( void *sip );
@@ -317,18 +332,16 @@ void ldap_mark_select_read( LDAP *ld, Sockbuf *sb );
 void ldap_mark_select_clear( LDAP *ld, Sockbuf *sb );
 int ldap_is_read_ready( LDAP *ld, Sockbuf *sb );
 int ldap_is_write_ready( LDAP *ld, Sockbuf *sb );
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
 
 /*
  * in request.c
  */
 int ldap_send_initial_request( LDAP *ld, unsigned long msgtype,
-       char *dn, BerElement *ber );
+       const char *dn, BerElement *ber );
 BerElement *ldap_alloc_ber_with_options( LDAP *ld );
 void ldap_set_ber_options( LDAP *ld, BerElement *ber );
 
-#if defined( LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS ) || defined( LDAP_API_FEATURE_X_OPENLDAP_V2_DNS )
 int ldap_send_server_request( LDAP *ld, BerElement *ber, int msgid,
        LDAPRequest *parentreq, LDAPServer *srvlist, LDAPConn *lc,
        int bind );
@@ -339,12 +352,9 @@ 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 );
 void ldap_dump_requests_and_responses( LDAP *ld );
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS || LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 int ldap_chase_referrals( LDAP *ld, LDAPRequest *lr, char **errstrp, int *hadrefp );
 int ldap_append_referral( LDAP *ld, char **referralsp, char *s );
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
 /*
  * in result.c:
@@ -356,8 +366,14 @@ LDAP_F int cldap_getmsg    ( LDAP *ld, struct timeval *timeout, BerElement *ber );
 /*
  * in search.c
  */
-BerElement *ldap_build_search_req( LDAP *ld, char *base, int scope,
-       char *filter, char **attrs, int attrsonly );
+BerElement *ldap_build_search_req LDAP_P((
+       LDAP *ld,
+       const char *base, int scope,
+       const char *filter, char **attrs, int attrsonly,
+       LDAPControl **sctrls,
+       LDAPControl **cctrls,
+       int timelimit,
+       int sizelimit ));
 
 /*
  * in strdup.c
@@ -367,14 +383,23 @@ char *ldap_strdup LDAP_P(( const char * ));
 /*
  * in unbind.c
  */
-int ldap_ld_free( LDAP *ld, int close );
-int ldap_send_unbind( LDAP *ld, Sockbuf *sb );
+int ldap_ld_free LDAP_P((
+       LDAP *ld,
+       int close,
+       LDAPControl **sctrls,
+       LDAPControl **cctrls ));
+
+int ldap_send_unbind LDAP_P((
+       LDAP *ld,
+       Sockbuf *sb,
+       LDAPControl **sctrls,
+       LDAPControl **cctrls ));
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS
 /*
  * in getdxbyname.c
  */
-char **ldap_getdxbyname( char *domain );
+char **ldap_getdxbyname( const char *domain );
 #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */
 
 #if defined( STR_TRANSLATION ) && defined( LDAP_DEFAULT_CHARSET )