]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/back-ldap.h
Free IDL_CACHE locks
[openldap] / servers / slapd / back-ldap / back-ldap.h
index 7a21585ef80687f453aeb6476968ea040658e377..dc67f7e1586c0a964f097e8cf992bec23afd4723 100644 (file)
@@ -73,14 +73,35 @@ struct ldapmapping {
        struct berval dst;
 };
 
+struct ldaprwmap {
+       /*
+        * DN rewriting
+        */
+#ifdef ENABLE_REWRITE
+       struct rewrite_info *rwm_rw;
+#else /* !ENABLE_REWRITE */
+       /* some time the suffix massaging without librewrite
+        * will be disabled */
+       BerVarray rwm_suffix_massage;
+#endif /* !ENABLE_REWRITE */
+
+       /*
+        * Attribute/objectClass mapping
+        */
+       struct ldapmap rwm_oc;
+       struct ldapmap rwm_at;
+};
+
 struct ldapinfo {
        struct slap_backend_db  *be;
        char *url;
-       char *binddn;
-       char *bindpw;
+       struct berval binddn;
+       struct berval bindpw;
        ldap_pvt_thread_mutex_t         conn_mutex;
        int savecred;
        Avlnode *conntree;
+
+#if 0
 #ifdef ENABLE_REWRITE
        struct rewrite_info *rwinfo;
 #else /* !ENABLE_REWRITE */
@@ -89,17 +110,34 @@ struct ldapinfo {
 
        struct ldapmap oc_map;
        struct ldapmap at_map;
+#endif
+
+       struct ldaprwmap rwmap;
 };
 
-struct ldapconn *ldap_back_getconn(struct ldapinfo *li, struct slap_op *op, struct slap_rep *rs);
-int ldap_back_dobind(struct ldapinfo *li, struct ldapconn *lc, Operation *op, SlapReply *rs);
-int ldap_back_map_result(int err);
-int ldap_back_op_result(struct ldapinfo *li, struct ldapconn *lc,
-       Operation *op, SlapReply *rs, ber_int_t msgid, int rc, int sendok);
+/* Whatever context ldap_back_dn_massage needs... */
+typedef struct dncookie {
+       struct ldaprwmap *rwmap;
+
+#ifdef ENABLE_REWRITE
+       Connection *conn;
+       char *ctx;
+       SlapReply *rs;
+#else
+       int normalized;
+       int tofrom;
+#endif
+} dncookie;
+
+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_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[]);
 
-void ldap_back_dn_massage(struct ldapinfo *li, struct berval *dn,
-       struct berval *res, int normalized, int tofrom);
+int ldap_back_dn_massage(dncookie *dc, struct berval *dn,
+       struct berval *res);
 
 extern int ldap_back_conn_cmp( const void *c1, const void *c2);
 extern int ldap_back_conn_dup( void *c1, void *c2 );
@@ -121,11 +159,13 @@ ldap_back_map_filter(
                struct berval *f,
                int remap
 );
-char **
+
+int
 ldap_back_map_attrs(
                struct ldapmap *at_map,
                AttributeName *a,
-               int remap
+               int remap,
+               char ***mapped_attrs
 );
 
 extern void mapping_free ( void *mapping );
@@ -139,13 +179,8 @@ extern int ldap_back_map_config(
                char            **argv );
 
 extern int
-ldap_back_filter_map_rewrite_(
-#ifdef ENABLE_REWRITE
-               struct rewrite_info     *info,
-               void                    *cookie,
-#endif /* ENABLE_REWRITE */
-               struct ldapmap          *at_map,
-               struct ldapmap          *oc_map,
+ldap_back_filter_map_rewrite(
+               dncookie                *dc,
                Filter                  *f,
                struct berval           *fstr,
                int                     remap );
@@ -155,11 +190,9 @@ ldap_back_filter_map_rewrite_(
 extern int suffix_massage_config( struct rewrite_info *info,
                struct berval *pvnc, struct berval *nvnc,
                struct berval *prnc, struct berval *nrnc);
-extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie );
 #endif /* ENABLE_REWRITE */
-
-int ldap_build_entry( Backend *be, Connection *c, LDAPMessage *e, Entry *ent,
-        struct berval *bdn, int private );
+extern int ldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );
+extern int ldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
 
 LDAP_END_DECL