]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/ldap-int.h
Don't assert on null
[openldap] / libraries / libldap / ldap-int.h
index b3192d5721501177f05123189466f72437702c44..14152a939f722b7e609236488e9c17d3f343a6c5 100644 (file)
@@ -1,3 +1,4 @@
+/*  ldap-int.h - defines & prototypes internal to the LDAP library */
 /* $OpenLDAP$ */
 /*
  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
@@ -6,8 +7,6 @@
 /*  Portions
  *  Copyright (c) 1995 Regents of the University of Michigan.
  *  All rights reserved.
- *
- *  ldap-int.h - defines & prototypes internal to the LDAP library
  */
 
 #ifndef        _LDAP_INT_H
 
 #include "../liblber/lber-int.h"
 
+#ifdef HAVE_CYRUS_SASL
+       /* the need for this should be removed */
+#include <sasl.h>
+#endif
+
 /* 
  * Support needed if the library is running in the kernel
  */
@@ -58,17 +62,16 @@ LDAP_BEGIN_DECL
 #define LDAPS_URL_PREFIX_LEN   (sizeof(LDAPS_URL_PREFIX)-1)
 #define LDAPI_URL_PREFIX       "ldapi://"
 #define LDAPI_URL_PREFIX_LEN   (sizeof(LDAPI_URL_PREFIX)-1)
-#define LDAPIS_URL_PREFIX      "ldapis://"
-#define LDAPIS_URL_PREFIX_LEN  (sizeof(LDAPIS_URL_PREFIX)-1)
 #define LDAP_URL_URLCOLON              "URL:"
 #define LDAP_URL_URLCOLON_LEN  (sizeof(LDAP_URL_URLCOLON)-1)
-#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL)
+
+#define CLDAP_URL_PREFIX         "cldap://"
+#define CLDAP_URL_PREFIX_LEN     (sizeof(CLDAP_URL_PREFIX)-1)
 
 #define LDAP_REF_STR           "Referral:\n"
 #define LDAP_REF_STR_LEN       (sizeof(LDAP_REF_STR)-1)
 #define LDAP_LDAP_REF_STR      LDAP_URL_PREFIX
-#define LDAP_LDAP_REF_STR_LEN  (sizeof(LDAP_LDAP_REF_STR)-1)
-
+#define LDAP_LDAP_REF_STR_LEN  LDAP_URL_PREFIX_LEN
 
 #define LDAP_DEFAULT_REFHOPLIMIT 5
 
@@ -78,8 +81,8 @@ LDAP_BEGIN_DECL
 
 #define LDAP_BOOLEANS  unsigned long
 #define LDAP_BOOL(n)   (1 << (n))
-#define LDAP_BOOL_GET(lo, bool)        ((lo)->ldo_booleans & LDAP_BOOL(bool) \
-                                                                       ?  -1 : 0)
+#define LDAP_BOOL_GET(lo, bool)        \
+       ((lo)->ldo_booleans & LDAP_BOOL(bool) ? -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)
@@ -122,11 +125,16 @@ struct ldapoptions {
        LDAPURLDesc *ldo_defludp;
        int             ldo_defport;
        char*   ldo_defbase;
-       char*   ldo_defbinddn;  /* simple bind dn */
+       char*   ldo_defbinddn;  /* bind dn */
+
+#ifdef HAVE_CYRUS_SASL
+       char*   ldo_def_sasl_mech;              /* SASL Mechanism(s) */
+       char*   ldo_def_sasl_realm;             /* SASL realm */
+       char*   ldo_def_sasl_authcid;   /* SASL authentication identity */
+       char*   ldo_def_sasl_authzid;   /* SASL authorization identity */
 
-#ifdef LDAP_CONNECTIONLESS
-       int             ldo_cldaptries; /* connectionless search retry count */
-       int             ldo_cldaptimeout;/* time between retries */
+       /* SASL Security Properties */
+       struct sasl_security_properties ldo_sasl_secprops;
 #endif
 
        int             ldo_refhoplimit;        /* limit on referral nesting */
@@ -134,18 +142,14 @@ struct ldapoptions {
        /* LDAPv3 server and client controls */
        LDAPControl     **ldo_sctrls;
        LDAPControl **ldo_cctrls;
-       /* LDAPV3 rebind callback function
-       */
+
+       /* LDAP rebind callback function */
        LDAP_REBIND_PROC                *ldo_rebindproc;
 
 #ifdef HAVE_TLS
        /* tls context */
        void            *ldo_tls_ctx;
        int             ldo_tls_mode;
-#endif
-#ifdef HAVE_CYRUS_SASL
-       sasl_ssf_t      ldo_sasl_minssf;
-       sasl_ssf_t      ldo_sasl_maxssf;
 #endif
        LDAP_BOOLEANS ldo_booleans;     /* boolean options */
 };
@@ -158,7 +162,6 @@ typedef struct ldap_server {
        char                    *lsrv_host;
        char                    *lsrv_dn;       /* if NULL, use default */
        int                     lsrv_port;
-/*     int                     lsrv_protocol; */
        struct ldap_server      *lsrv_next;
 } LDAPServer;
 
@@ -167,7 +170,8 @@ typedef struct ldap_server {
  * structure for representing an LDAP server connection
  */
 typedef struct ldap_conn {
-       Sockbuf                 *lconn_sb;
+       Sockbuf         *lconn_sb;
+       void            *lconn_sasl_ctx;
        int                     lconn_refcnt;
        time_t          lconn_lastused; /* time */
        int                     lconn_rebind_inprogress;        /* set if rebind in progress */
@@ -177,7 +181,9 @@ typedef struct ldap_conn {
 #define LDAP_CONNST_CONNECTING         2
 #define LDAP_CONNST_CONNECTED          3
        LDAPURLDesc             *lconn_server;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
        char                    *lconn_krbinstance;
+#endif
        struct ldap_conn        *lconn_next;
        BerElement              *lconn_ber;/* ber receiving on this conn. */
 } LDAPConn;
@@ -234,12 +240,6 @@ typedef struct ldapreqinfo {
        char            *ri_url;
 } LDAPreqinfo;
 
-/*
- * handy macro for checking if handle is connectionless
- */
-
-#define LDAP_IS_CLDAP(ld) ((ld)->ld_cldapnaddr>0)
-
 /*
  * structure representing an ldap connection
  */
@@ -261,15 +261,14 @@ struct ldap {
 #define ld_defhost             ld_options.ldo_defhost
 #define ld_defport             ld_options.ldo_defport
 
-#define ld_cldaptries  ld_options.ldo_cldaptries
-#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
 #define ld_rebindproc  ld_options.ldo_rebindproc
 
-#define ld_version             ld_options.ldo_version  
+#define ld_version             ld_options.ldo_version
+
        char    *ld_host;
        int             ld_port;
 
@@ -290,33 +289,26 @@ struct ldap {
        ber_int_t               *ld_abandoned;  /* array of abandoned requests */
 
        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 */
 
        /* do not mess with the rest though */
 
        LDAPConn        *ld_defconn;    /* default connection */
        LDAPConn        *ld_conns;      /* list of server connections */
        void            *ld_selectinfo; /* platform specifics for select */
-#ifdef HAVE_CYRUS_SASL
-       sasl_conn_t             *ld_sasl_context;
-#endif /* HAVE_CYRUS_SASL */
 };
 #define LDAP_VALID(ld) ( (ld)->ld_valid == LDAP_VALID_SESSION )
 
 #if defined(HAVE_RES_QUERY) && defined(LDAP_R_COMPILE)
 #include <ldap_pvt_thread.h>
-extern ldap_pvt_thread_mutex_t ldap_int_resolv_mutex;
+LDAP_V ( ldap_pvt_thread_mutex_t ) ldap_int_resolv_mutex;
 #endif /* HAVE_RES_QUERY && LDAP_R_COMPILE */
 
 /*
  * in init.c
  */
 
-LDAP_F ( struct ldapoptions ) ldap_int_global_options;
+LDAP_V ( struct ldapoptions ) ldap_int_global_options;
+
 LDAP_F ( void ) ldap_int_initialize LDAP_P((struct ldapoptions *, int *));
 LDAP_F ( void ) ldap_int_initialize_global_options LDAP_P((
        struct ldapoptions *, int *));
@@ -374,12 +366,6 @@ LDAP_F (int) ldap_int_put_controls LDAP_P((
        LDAPControl *const *ctrls,
        BerElement *ber ));
 
-LDAP_F( int ) 
-ldap_int_create_control LDAP_P(( 
-       const char *requestOID, 
-       BerElement *ber, 
-       int iscritical,
-       LDAPControl **ctrlp ));
 
 /*
  * in dsparse.c
@@ -403,16 +389,20 @@ LDAP_F (char *) ldap_get_kerberosv4_credentials LDAP_P((
  * in open.c
  */
 LDAP_F (int) ldap_open_defconn( LDAP *ld );
-LDAP_F (int) open_ldap_connection( LDAP *ld, Sockbuf *sb, LDAPURLDesc *srvlist, char **krbinstancep, int async );
+LDAP_F (int) ldap_int_open_connection( LDAP *ld,
+       LDAPConn *conn, LDAPURLDesc *srvlist, int async );
 
 /*
  * in os-ip.c
  */
 LDAP_F (int) ldap_int_tblsize;
 LDAP_F (int) ldap_int_timeval_dup( struct timeval **dest, const struct timeval *tm );
-LDAP_F (int) ldap_connect_to_host( LDAP *ld, Sockbuf *sb, const char *host, unsigned long address, int port, int async );
+LDAP_F (int) ldap_connect_to_host( LDAP *ld, Sockbuf *sb,
+       int proto, const char *host, unsigned long address, int port,
+       int async );
 
 #if defined(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND) || defined(HAVE_TLS) || defined(HAVE_CYRUS_SASL)
+LDAP_V (char *) ldap_int_hostname;
 LDAP_F (char *) ldap_host_connected_to( Sockbuf *sb );
 #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND */
 
@@ -429,9 +419,10 @@ LDAP_F (int) ldap_is_write_ready( LDAP *ld, Sockbuf *sb );
 /*
  * in os-local.c
  */
-#ifdef LDAP_PF_UNIX 
-LDAP_F (int) ldap_connect_to_path( LDAP *ld, Sockbuf *sb, const char *path, int async );
-#endif /* LDAP_PF_UNIX */
+#ifdef LDAP_PF_LOCAL
+LDAP_F (int) ldap_connect_to_path( LDAP *ld, Sockbuf *sb,
+       const char *path, int async );
+#endif /* LDAP_PF_LOCAL */
 
 /*
  * in request.c
@@ -455,9 +446,7 @@ LDAP_F (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 );
-#endif
+LDAP_F (char *) ldap_int_msgtype2str( ber_tag_t tag );
 
 /*
  * in search.c
@@ -509,7 +498,8 @@ LDAP_F (int) ldap_url_parselist LDAP_P((
 
 LDAP_F (int) ldap_url_parsehosts LDAP_P((
        LDAPURLDesc **ludlist,
-       const char *hosts ));
+       const char *hosts,
+       int port ));
 
 LDAP_F (char *) ldap_url_list2hosts LDAP_P((
        LDAPURLDesc *ludlist ));
@@ -520,6 +510,38 @@ LDAP_F (char *) ldap_url_list2urls LDAP_P((
 LDAP_F (void) ldap_free_urllist LDAP_P((
        LDAPURLDesc *ludlist ));
 
+/*
+ * in cyrus.c
+ */
+LDAP_F (int) ldap_int_sasl_init LDAP_P(( void ));
+
+LDAP_F (int) ldap_int_sasl_open LDAP_P((
+       LDAP *ld, LDAPConn *conn,
+       const char* host, ber_len_t ssf ));
+LDAP_F (int) ldap_int_sasl_close LDAP_P(( LDAP *ld, LDAPConn *conn ));
+
+LDAP_F (int) ldap_int_sasl_get_option LDAP_P(( LDAP *ld,
+       int option, void *arg ));
+LDAP_F (int) ldap_int_sasl_set_option LDAP_P(( LDAP *ld,
+       int option, void *arg ));
+LDAP_F (int) ldap_int_sasl_config LDAP_P(( struct ldapoptions *lo,
+       int option, const char *arg ));
+
+LDAP_F (int) ldap_int_sasl_bind LDAP_P((
+       struct ldap *ld,
+       const char *,
+       const char *,
+       LDAPControl **, LDAPControl **,
+
+       /* should be passed in client controls */
+       unsigned flags,
+       LDAP_SASL_INTERACT_PROC *interact,
+       void *defaults ));
+
+/*
+ * in tls.c
+ */
+LDAP_F (int) ldap_int_tls_config LDAP_P(( struct ldapoptions *lo, int option, const char *arg ));
 
 LDAP_END_DECL