Diff for /servers/slapd/back-meta/back-meta.h between versions 1.23 and 1.23.2.16

version 1.23, 2004/11/13 13:45:18 version 1.23.2.16, 2006/01/16 21:13:40
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/back-meta.h,v 1.22 2004/11/10 23:40:51 ando Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/back-meta.h,v 1.23.2.15 2006/01/03 22:16:20 kurt Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1999-2004 The OpenLDAP Foundation.   * Copyright 1999-2006 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.   * Portions Copyright 2001-2003 Pierangelo Masarati.
  * Portions Copyright 1999-2003 Howard Chu.   * Portions Copyright 1999-2003 Howard Chu.
  * All rights reserved.   * All rights reserved.
Line 70  struct ldaprwmap { Line 70  struct ldaprwmap {
   
 /* Whatever context ldap_back_dn_massage needs... */  /* Whatever context ldap_back_dn_massage needs... */
 typedef struct dncookie {  typedef struct dncookie {
         struct ldaprwmap *rwmap;          struct metatarget_t     *target;
   
 #ifdef ENABLE_REWRITE  #ifdef ENABLE_REWRITE
         Connection *conn;          Connection              *conn;
         char *ctx;          char                    *ctx;
         SlapReply *rs;          SlapReply               *rs;
 #else  #else
         int normalized;          int                     normalized;
         int tofrom;          int                     tofrom;
 #endif  #endif
 } dncookie;  } dncookie;
   
 int ldap_back_freeconn( Operation *op, struct ldapconn *lc );  
 struct ldapconn *ldap_back_getconn(struct slap_op *op, struct slap_rep *rs);  
 int ldap_back_dobind(struct ldapconn *lc, Operation *op, SlapReply *rs);  
 int ldap_back_retry(struct ldapconn *lc, Operation *op, SlapReply *rs);  
 int ldap_back_map_result(SlapReply *rs);  
 int ldap_back_op_result(struct ldapconn *lc, Operation *op, SlapReply *rs,  
         ber_int_t msgid, int sendok);  
 int     back_ldap_LTX_init_module(int argc, char *argv[]);  
   
 int ldap_back_dn_massage(dncookie *dc, struct berval *dn,  int ldap_back_dn_massage(dncookie *dc, struct berval *dn,
         struct berval *res);          struct berval *res);
   
Line 103  int mapping_cmp (const void *, const voi Line 94  int mapping_cmp (const void *, const voi
 int mapping_dup (void *, void *);  int mapping_dup (void *, void *);
   
 void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );  void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );
   int ldap_back_mapping ( struct ldapmap *map, struct berval *s,
           struct ldapmapping **m, int remap );
 void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,  void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,
         int remap );          int remap );
 #define BACKLDAP_MAP    0  #define BACKLDAP_MAP    0
 #define BACKLDAP_REMAP  1  #define BACKLDAP_REMAP  1
 char *  char *
 ldap_back_map_filter(  ldap_back_map_filter(
                 struct ldapmap *at_map,          struct ldapmap *at_map,
                 struct ldapmap *oc_map,          struct ldapmap *oc_map,
                 struct berval *f,          struct berval *f,
                 int remap          int remap );
 );  
   
 int  int
 ldap_back_map_attrs(  ldap_back_map_attrs(
                 struct ldapmap *at_map,          struct ldapmap *at_map,
                 AttributeName *a,          AttributeName *a,
                 int remap,          int remap,
                 char ***mapped_attrs          char ***mapped_attrs );
 );  
   
 extern int ldap_back_map_config(  extern int ldap_back_map_config(
                 struct ldapmap  *oc_map,          struct ldapmap  *oc_map,
                 struct ldapmap  *at_map,          struct ldapmap  *at_map,
                 const char      *fname,          const char      *fname,
                 int             lineno,          int             lineno,
                 int             argc,          int             argc,
                 char            **argv );          char            **argv );
   
 extern int  extern int
 ldap_back_filter_map_rewrite(  ldap_back_filter_map_rewrite(
                 dncookie                *dc,          dncookie        *dc,
                 Filter                  *f,          Filter          *f,
                 struct berval           *fstr,          struct berval   *fstr,
                 int                     remap );          int             remap );
   
 /* suffix massaging by means of librewrite */  /* suffix massaging by means of librewrite */
 #ifdef ENABLE_REWRITE  #ifdef ENABLE_REWRITE
 extern int suffix_massage_config( struct rewrite_info *info,  extern int
                 struct berval *pvnc, struct berval *nvnc,  suffix_massage_config( struct rewrite_info *info,
                 struct berval *prnc, struct berval *nrnc);          struct berval *pvnc,
           struct berval *nvnc,
           struct berval *prnc,
           struct berval *nrnc );
 #endif /* ENABLE_REWRITE */  #endif /* ENABLE_REWRITE */
 extern int ldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );  extern int
 extern int ldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );  ldap_back_referral_result_rewrite(
           dncookie        *dc,
           BerVarray       a_vals );
   extern int
   ldap_dnattr_rewrite(
           dncookie        *dc,
           BerVarray       a_vals );
   extern int
   ldap_dnattr_result_rewrite(
           dncookie        *dc,
           BerVarray       a_vals );
   
 /* (end of) from back-ldap.h before rwm removal */  /* (end of) from back-ldap.h before rwm removal */
   
 struct metasingleconn {  struct metainfo_t;
         int                     candidate;  
 #define META_NOT_CANDIDATE      0  typedef struct metasingleconn_t {
 #define META_CANDIDATE          1          int                     msc_candidate;
 #define META_LAST_CONN          -1  #define META_NOT_CANDIDATE      ((ber_tag_t)0)
   #define META_CANDIDATE          ((ber_tag_t)1)
                   
         LDAP                    *ld;          LDAP                    *msc_ld;
         struct berval           bound_dn;          struct berval           msc_bound_ndn;
         struct berval           cred;          struct berval           msc_cred;
         int                     bound;          unsigned                msc_mscflags;
           /* NOTE: lc_lcflags is redefined to msc_mscflags to reuse the macros
            * defined for back-ldap */
   #define lc_lcflags              msc_mscflags
   #if 0
           int                     msc_bound;
 #define META_UNBOUND            0  #define META_UNBOUND            0
 #define META_BOUND              1  #define META_BOUND              1
 #define META_ANONYMOUS          2  #define META_ANONYMOUS          2
 };  #endif
   
           time_t                  msc_time;
   
 #define META_LAST(lsc)          ((lsc)->candidate == META_LAST_CONN)          struct metainfo_t       *msc_info;
   } metasingleconn_t;
   
 struct metaconn {  typedef struct metaconn_t {
         struct slap_conn        *conn;          struct slap_conn        *mc_conn;
         struct rewrite_info     *rwinfo;          ldap_pvt_thread_mutex_t mc_mutex;
           unsigned                mc_refcnt;
           int                     mc_tainted;
                   
           struct berval           mc_local_ndn;
           /* NOTE: msc_mscflags is used to recycle the #define
            * in metasingleconn_t */
           unsigned                msc_mscflags;
   
         /*          /*
          * means that the connection is bound;            * means that the connection is bound; 
          * of course only one target actually is ...           * of course only one target actually is ...
          */           */
         int             bound_target;          int                     mc_authz_target;
 #define META_BOUND_NONE         -1  #define META_BOUND_NONE         (-1)
 #define META_BOUND_ALL          -2  #define META_BOUND_ALL          (-2)
         /* supersedes the connection stuff */          /* supersedes the connection stuff */
         struct metasingleconn *conns;          metasingleconn_t        mc_conns[ 1 ];
 };          /* NOTE: mc_conns must be last, because
            * the required number of conns is malloc'ed
            * in one block with the metaconn_t structure */
   } metaconn_t;
   
   typedef struct metatarget_t {
           char                    *mt_uri;
           int                     mt_scope;
   
           struct berval           mt_psuffix;             /* pretty suffix */
           struct berval           mt_nsuffix;             /* normalized suffix */
   
           struct berval           mt_binddn;
           struct berval           mt_bindpw;
   
           struct berval           mt_pseudorootdn;
           struct berval           mt_pseudorootpw;
   
           int                     mt_nretries;
   #define META_RETRY_UNDEFINED    (-2)
   #define META_RETRY_FOREVER      (-1)
   #define META_RETRY_NEVER        (0)
   #define META_RETRY_DEFAULT      (3)
   
           struct ldaprwmap        mt_rwmap;
   
           unsigned                mt_flags;
           int                     mt_version;
           time_t                  mt_network_timeout;
           time_t                  mt_idle_timeout;
           struct timeval          mt_bind_timeout;
   #define META_BIND_TIMEOUT       LDAP_BACK_RESULT_UTIMEOUT
           time_t                  mt_timeout[ LDAP_BACK_OP_LAST ];
   } metatarget_t;
   
 struct metatarget {  typedef struct metadncache_t {
         char                    *uri;          ldap_pvt_thread_mutex_t mutex;
         struct berval           psuffix;        /* pretty suffix */          Avlnode                 *tree;
         struct berval           suffix;         /* normalized suffix */  
         struct berval           binddn;  
         struct berval           bindpw;  
   
         struct berval           pseudorootdn;  #define META_DNCACHE_DISABLED   (0)
         struct berval           pseudorootpw;  #define META_DNCACHE_FOREVER    ((time_t)(-1))
           time_t                  ttl;  /* seconds; 0: no cache, -1: no expiry */
   } metadncache_t;
   
   typedef struct metacandidates_t {
           int                     mc_ntargets;
           SlapReply               *mc_candidates;
   } metacandidates_t;
   
   typedef struct metainfo_t {
           int                     mi_ntargets;
           int                     mi_defaulttarget;
   #define META_DEFAULT_TARGET_NONE        (-1)
           int                     mi_nretries;
   
 #if 0          metatarget_t            *mi_targets;
         struct rewrite_info     *rwinfo;          metacandidates_t        *mi_candidates;
   
         struct ldapmap          oc_map;          metadncache_t           mi_cache;
         struct ldapmap          at_map;          
 #endif          ldap_avl_info_t         mi_conninfo;
         struct ldaprwmap        rwmap;  
 };  
   
 struct metadncache {          unsigned                mi_flags;
         ldap_pvt_thread_mutex_t mutex;  #define li_flags                mi_flags
         Avlnode                 *tree;  /* uses flags as defined in <back-ldap/back-ldap.h> */
   #define META_BACK_F_ONERR_STOP          0x00010000U
   #define META_BACK_F_DEFER_ROOTDN_BIND   0x00020000U
   
   #define META_BACK_ONERR_STOP(mi)        ( (mi)->mi_flags & META_BACK_F_ONERR_STOP )
   #define META_BACK_ONERR_CONTINUE(mi)    ( !META_BACK_ONERR_CONTINUE( (mi) ) )
   
   #define META_BACK_DEFER_ROOTDN_BIND(mi) ( (mi)->mi_flags & META_BACK_F_DEFER_ROOTDN_BIND )
   
           int                     mi_version;
           time_t                  mi_network_timeout;
           time_t                  mi_idle_timeout;
           struct timeval          mi_bind_timeout;
           time_t                  mi_timeout[ LDAP_BACK_OP_LAST ];
   } metainfo_t;
   
   typedef enum meta_op_type {
           META_OP_ALLOW_MULTIPLE = 0,
           META_OP_REQUIRE_SINGLE,
           META_OP_REQUIRE_ALL
   } meta_op_type;
   
 #define META_DNCACHE_DISABLED   0  SlapReply *
 #define META_DNCACHE_FOREVER    -1  meta_back_candidates_get( Operation *op );
         long int                ttl;  /* seconds; 0: no cache, -1: no expiry */  
 };  
   
 struct metainfo {  extern metaconn_t *
         int                     ntargets;  meta_back_getconn(
         int                     defaulttarget;          Operation               *op,
         int                     network_timeout;          SlapReply               *rs,
 #define META_DEFAULT_TARGET_NONE        -1          int                     *candidate,
         struct metatarget       **targets;          ldap_back_send_t        sendok );
   
         struct rewrite_info     *rwinfo;  extern void
         Backend                 *glue_be;   meta_back_release_conn(
           Operation               *op,
           metaconn_t              *mc );
   
         struct metadncache      cache;  extern int
           meta_back_retry_lock(
         ldap_pvt_thread_mutex_t conn_mutex;          Operation               *op,
         Avlnode                 *conntree;          SlapReply               *rs,
           metaconn_t              *mc,
           int                     candidate,
           ldap_back_send_t        sendok,
           int                     dolock );
   #define meta_back_retry(op, rs, mc, candidate, sendok) \
           meta_back_retry_lock((op), (rs), (mc), (candidate), (sendok), 1)
   
         int                     savecred;  extern void
 };  meta_back_conn_free(
           void                    *v_mc );
   
 #define META_OP_ALLOW_MULTIPLE          0x00  extern int
 #define META_OP_REQUIRE_SINGLE          0x01  meta_back_init_one_conn(
 #define META_OP_REQUIRE_ALL             0x02          Operation               *op,
 extern struct metaconn *          SlapReply               *rs,
 meta_back_getconn(          metatarget_t            *mt, 
                 Operation               *op,          metaconn_t              *mc,
                 SlapReply               *rs,          int                     candidate,
                 int                     op_type,          int                     ispriv,
                 struct berval           *dn,          ldap_back_send_t        sendok );
                 int                     *candidate  
 );  extern int
   meta_back_single_bind(
           Operation               *op,
           SlapReply               *rs,
           metaconn_t              *mc,
           int                     candidate,
           int                     massage );
   
 extern int  extern int
 meta_back_dobind(  meta_back_dobind(
                 struct metaconn         *lc,          Operation               *op,
                 Operation               *op          SlapReply               *rs,
 );          metaconn_t              *mc,
           ldap_back_send_t        sendok );
   
 extern int  extern int
 meta_back_is_valid(  meta_back_single_dobind(
                 struct metaconn         *lc,           Operation               *op,
                 int                     candidate           SlapReply               *rs,
 );          metaconn_t              *msc,
           int                     candidate,
           ldap_back_send_t        sendok,
           int                     retries,
           int                     dolock );
   
 extern int  extern int
 meta_back_op_result(  meta_back_op_result(
                 struct metaconn         *lc,          metaconn_t              *mc,
                 Operation               *op,          Operation               *op,
                 SlapReply               *rs          SlapReply               *rs,
 );          int                     candidate );
   
 extern int  extern int
 back_meta_LTX_init_module(  back_meta_LTX_init_module(
                 int                     argc,          int                     argc,
                 char                    *argv[]          char                    *argv[] );
 );  
   
 extern int  extern int
 meta_back_conn_cmp(  meta_back_conn_cmp(
                 const void              *c1,          const void              *c1,
                 const void              *c2          const void              *c2 );
 );  
   
 extern int  extern int
 meta_back_conn_dup(  meta_back_conn_dup(
                 void                    *c1,          void                    *c1,
                 void                    *c2          void                    *c2 );
 );  
   
 /*  /*
  * Candidate stuff   * Candidate stuff
  */   */
 extern int  extern int
 meta_back_is_candidate(  meta_back_is_candidate(
                 struct berval           *nsuffix,          struct berval           *nsuffix,
                 struct berval           *ndn          int                     suffixscope,
 );          struct berval           *ndn,
           int                     scope );
 extern int  
 meta_back_count_candidates(  
                 struct metainfo         *li,  
                 struct berval           *ndn  
 );  
   
 extern int  
 meta_back_is_candidate_unique(  
                 struct metainfo         *li,  
                 struct berval           *ndn  
 );  
   
 extern int  extern int
 meta_back_select_unique_candidate(  meta_back_select_unique_candidate(
                 struct metainfo         *li,          metainfo_t              *mi,
                 struct berval           *ndn          struct berval           *ndn );
 );  
   
 extern int  extern int
 meta_clear_unused_candidates(  meta_clear_unused_candidates(
                 struct metainfo         *li,          Operation               *op,
                 struct metaconn         *lc,          int                     candidate );
                 int                     candidate,  
                 int                     reallyclean  
 );  
   
 extern int  extern int
 meta_clear_one_candidate(  meta_clear_one_candidate(
                 struct metasingleconn   *lc,          metasingleconn_t        *mc );
                 int                     reallyclean  
 );  
   
 /*  /*
  * Dn cache stuff (experimental)   * Dn cache stuff (experimental)
  */   */
 extern int  extern int
 meta_dncache_cmp(  meta_dncache_cmp(
                 const void              *c1,          const void              *c1,
                 const void              *c2          const void              *c2 );
 );  
   
 extern int  extern int
 meta_dncache_dup(  meta_dncache_dup(
                 void                    *c1,          void                    *c1,
                 void                    *c2          void                    *c2 );
 );  
   
   #define META_TARGET_NONE        (-1)
   #define META_TARGET_MULTIPLE    (-2)
 extern int  extern int
 meta_dncache_get_target(  meta_dncache_get_target(
                 struct metadncache      *cache,          metadncache_t           *cache,
                 struct berval           *ndn          struct berval           *ndn );
 );  
   
 extern int  extern int
 meta_dncache_update_entry(  meta_dncache_update_entry(
                 struct metadncache      *cache,          metadncache_t           *cache,
                 struct berval           *ndn,          struct berval           *ndn,
                 int                     target          int                     target );
 );  
   
 extern int  extern int
 meta_dncache_delete_entry(  meta_dncache_delete_entry(
                 struct metadncache      *cache,          metadncache_t           *cache,
                 struct berval           *ndn          struct berval           *ndn );
 );  
   
 extern void  extern void
 meta_dncache_free(  meta_dncache_free( void *entry );
                 void *entry  
 );  extern LDAP_REBIND_PROC         *meta_back_rebind_f;
   
 LDAP_END_DECL  LDAP_END_DECL
   

Removed from v.1.23  
changed lines
  Added in v.1.23.2.16


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org