]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/back-ldap.h
improved filter mapping/rewrite; improved result rewriting; improved attribute/object...
[openldap] / servers / slapd / back-ldap / back-ldap.h
index 45fb33bea6074df2c6e7aeaae0fffac5c608025d..ffe616e24b564c3111efc854fde66193c14c7487 100644 (file)
@@ -1,7 +1,7 @@
 /* back-ldap.h - ldap backend header file */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /* This is an altered version */
@@ -49,12 +49,16 @@ LDAP_BEGIN_DECL
 
 struct slap_conn;
 struct slap_op;
+struct slap_backend_db;
 
 struct ldapconn {
        struct slap_conn        *conn;
        LDAP            *ld;
-       char            *bound_dn;
+       struct berval   cred;
+       struct berval   bound_dn;
+       struct berval   local_dn;
        int             bound;
+       ldap_pvt_thread_mutex_t         lc_mutex;
 };
 
 struct ldapmap {
@@ -65,20 +69,22 @@ struct ldapmap {
 };
 
 struct ldapmapping {
-       char *src;
-       char *dst;
+       struct berval src;
+       struct berval dst;
 };
 
 struct ldapinfo {
+       struct slap_backend_db  *be;
        char *url;
        char *binddn;
        char *bindpw;
        ldap_pvt_thread_mutex_t         conn_mutex;
+       int savecred;
        Avlnode *conntree;
 #ifdef ENABLE_REWRITE
        struct rewrite_info *rwinfo;
 #else /* !ENABLE_REWRITE */
-       char **suffix_massage;
+       BerVarray suffix_massage;
 #endif /* !ENABLE_REWRITE */
 
        struct ldapmap oc_map;
@@ -87,42 +93,72 @@ struct ldapinfo {
 
 struct ldapconn *ldap_back_getconn(struct ldapinfo *li, struct slap_conn *conn,
        struct slap_op *op);
-int ldap_back_dobind(struct ldapconn *lc, Operation *op);
+int ldap_back_dobind(struct ldapinfo *li, struct ldapconn *lc, Connection *conn, Operation *op);
 int ldap_back_map_result(int err);
-int ldap_back_op_result(struct ldapconn *lc, Operation *op);
+int ldap_back_op_result(struct ldapinfo *li, struct ldapconn *lc,
+       Connection *conn, Operation *op, ber_int_t msgid, int rc, int sendok);
 int    back_ldap_LTX_init_module(int argc, char *argv[]);
 
-char *ldap_back_dn_massage(struct ldapinfo *li, char *dn, int normalized);
-char *ldap_back_dn_restore(struct ldapinfo *li, char *dn, int normalized);
+void ldap_back_dn_massage(struct ldapinfo *li, struct berval *dn,
+       struct berval *res, int normalized, int tofrom);
 
 extern int ldap_back_conn_cmp( const void *c1, const void *c2);
 extern int ldap_back_conn_dup( void *c1, void *c2 );
+extern void ldap_back_conn_free( void *c );
 
+/* attributeType/objectClass mapping */
 int mapping_cmp (const void *, const void *);
 int mapping_dup (void *, void *);
 
-char *ldap_back_map ( struct ldapmap *map, char *s, int remap );
+void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );
+void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,
+       int remap );
+#define BACKLDAP_MAP   0
+#define BACKLDAP_REMAP 1
 char *
 ldap_back_map_filter(
                struct ldapmap *at_map,
                struct ldapmap *oc_map,
-               char *f,
+               struct berval *f,
                int remap
 );
 char **
 ldap_back_map_attrs(
                struct ldapmap *at_map,
-               char **a,
+               AttributeName *a,
                int remap
 );
 
-extern void mapping_free ( struct ldapmapping *mapping );
+extern void mapping_free ( void *mapping );
 
+extern int ldap_back_map_config(
+               struct ldapmap  *oc_map,
+               struct ldapmap  *at_map,
+               const char      *fname,
+               int             lineno,
+               int             argc,
+               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,
+               Filter                  *f,
+               struct berval           *fstr,
+               int                     remap );
+
+/* suffix massaging by means of librewrite */
 #ifdef ENABLE_REWRITE
-extern int suffix_massage_config( struct rewrite_info *info, int argc, char **argv );
-extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, struct berval **a_vals, void *cookie );
+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 */
 
 LDAP_END_DECL
 
-#endif
+#endif /* SLAPD_LDAP_H */