]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwm.h
Merge remote branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / servers / slapd / overlays / rwm.h
index 932275cccae802140a468d90f6cd211313af3e04..493f6dc4510bac86f1ba5a969bb0ad875d36271e 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2004 The OpenLDAP Foundation.
+ * Copyright 1999-2012 The OpenLDAP Foundation.
  * Portions Copyright 1999-2003 Howard Chu.
  * Portions Copyright 2000-2003 Pierangelo Masarati.
  * All rights reserved.
 #ifndef RWM_H
 #define RWM_H
 
+#ifndef ENABLE_REWRITE
+#error "librewrite must be enabled!"
+#endif /* ENABLE_REWRITE */
+
 /* String rewrite library */
-#ifdef ENABLE_REWRITE
 #include "rewrite.h"
-#endif /* ENABLE_REWRITE */
 
 LDAP_BEGIN_DECL
 
@@ -67,33 +69,33 @@ 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 */
+       BerVarray rwm_bva_rewrite;
 
        /*
         * Attribute/objectClass mapping
         */
        struct ldapmap rwm_oc;
        struct ldapmap rwm_at;
+       BerVarray rwm_bva_map;
+
+#define        RWM_F_NONE                      (0x0000U)
+#define        RWM_F_NORMALIZE_MAPPED_ATTRS    (0x0001U)
+#define        RWM_F_DROP_UNREQUESTED_ATTRS    (0x0002U)
+#define        RWM_F_SUPPORT_T_F               (0x4000U)
+#define        RWM_F_SUPPORT_T_F_DISCOVER      (0x8000U)
+#define        RWM_F_SUPPORT_T_F_MASK          (RWM_F_SUPPORT_T_F)
+#define        RWM_F_SUPPORT_T_F_MASK2         (RWM_F_SUPPORT_T_F|RWM_F_SUPPORT_T_F_DISCOVER)
+       unsigned        rwm_flags;
 };
 
 /* Whatever context ldap_back_dn_massage needs... */
 typedef struct dncookie {
        struct ldaprwmap *rwmap;
 
-#ifdef ENABLE_REWRITE
        Connection *conn;
        char *ctx;
        SlapReply *rs;
-#else /* !ENABLE_REWRITE */
-       int normalized;
-       int tofrom;
-#endif /* !ENABLE_REWRITE */
 } dncookie;
 
 int rwm_dn_massage( dncookie *dc, struct berval *in, struct berval *dn );
@@ -110,7 +112,7 @@ void rwm_map ( struct ldapmap *map, struct berval *s, struct berval *m,
        int remap );
 int rwm_mapping ( struct ldapmap *map, struct berval *s,
                struct ldapmapping **m, int remap );
-#define RWM_MAP        0
+#define RWM_MAP                0
 #define RWM_REMAP      1
 char *
 rwm_map_filter(
@@ -118,21 +120,26 @@ rwm_map_filter(
                struct ldapmap *oc_map,
                struct berval *f );
 
+#if 0 /* unused! */
 int
 rwm_map_attrs(
                struct ldapmap *at_map,
                AttributeName *a,
                int remap,
                char ***mapped_attrs );
+#endif
 
 int
 rwm_map_attrnames(
+               Operation *op,
                struct ldapmap *at_map,
                struct ldapmap *oc_map,
                AttributeName *an,
                AttributeName **anp,
                int remap );
 
+extern void rwm_mapping_dst_free ( void *mapping );
+
 extern void rwm_mapping_free ( void *mapping );
 
 extern int rwm_map_config(
@@ -145,29 +152,34 @@ extern int rwm_map_config(
 
 extern int
 rwm_filter_map_rewrite(
+               Operation               *op,
                dncookie                *dc,
                Filter                  *f,
                struct berval           *fstr );
 
 /* suffix massaging by means of librewrite */
-#ifdef ENABLE_REWRITE
-extern int rwm_suffix_massage_config( struct rewrite_info *info,
-               struct berval *pvnc, struct berval *nvnc,
-               struct berval *prnc, struct berval *nrnc);
-#endif /* ENABLE_REWRITE */
-extern int rwm_dnattr_rewrite(
+extern int
+rwm_suffix_massage_config(
+       struct rewrite_info     *info,
+       struct berval           *pvnc,
+       struct berval           *nvnc,
+       struct berval           *prnc,
+       struct berval           *nrnc);
+extern int
+rwm_dnattr_rewrite(
        Operation               *op,
        SlapReply               *rs,
        void                    *cookie,
        BerVarray               a_vals,
        BerVarray               *pa_nvals );
-extern int rwm_referral_rewrite(
+extern int
+rwm_referral_rewrite(
        Operation               *op,
        SlapReply               *rs,
        void                    *cookie,
        BerVarray               a_vals,
        BerVarray               *pa_nvals );
-extern int rwm_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
+extern int rwm_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals, BerVarray a_nvals );
 extern int rwm_referral_result_rewrite( dncookie *dc, BerVarray a_vals );
 
 LDAP_END_DECL