]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwm.h
trim listed modules
[openldap] / servers / slapd / overlays / rwm.h
index c1a5b8cdebfe14fd712c9c6579db2b9ae8079299..bc349d9c4092477fde5faee7b6522033f12d1121 100644 (file)
@@ -2,7 +2,9 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2003 The OpenLDAP Foundation.
+ * Copyright 1999-2007 The OpenLDAP Foundation.
+ * Portions Copyright 1999-2003 Howard Chu.
+ * Portions Copyright 2000-2003 Pierangelo Masarati.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * in OpenLDAP Software and subsequently enhanced by Pierangelo
  * Masarati.
  */
-/* This is an altered version */
-/*
- * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
- * 
- * Permission is granted to anyone to use this software for any purpose
- * on any computer system, and to alter it and redistribute it, subject
- * to the following restrictions:
- * 
- * 1. The author is not responsible for the consequences of use of this
- *    software, no matter how awful, even if they arise from flaws in it.
- * 
- * 2. The origin of this software must not be misrepresented, either by
- *    explicit claim or by omission.  Since few users ever read sources,
- *    credits should appear in the documentation.
- * 
- * 3. Altered versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.  Since few users
- *    ever read sources, credits should appear in the documentation.
- * 
- * 4. This notice may not be removed or altered.
- *
- *
- *
- * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
- * 
- * This software is being modified by Pierangelo Masarati.
- * The previously reported conditions apply to the modified code as well.
- * Changes in the original code are highlighted where required.
- * Credits for the original code go to the author, Howard Chu.      
- */
 
 #ifndef RWM_H
 #define RWM_H
@@ -59,6 +31,9 @@
 
 LDAP_BEGIN_DECL
 
+/* define to enable referral DN massage by default */
+#undef RWM_REFERRAL_REWRITE
+
 struct ldapmap {
        int drop_missing;
 
@@ -67,8 +42,25 @@ struct ldapmap {
 };
 
 struct ldapmapping {
-       struct berval src;
-       struct berval dst;
+       int                     m_flags;
+#define        RWMMAP_F_NONE           0x00
+#define        RWMMAP_F_IS_OC          0x01
+#define RWMMAP_F_FREE_SRC      0x10
+#define RWMMAP_F_FREE_DST      0x20
+       struct berval           m_src;
+       union {
+               AttributeDescription    *m_s_ad;
+               ObjectClass             *m_s_oc;
+       } m_src_ref;
+#define m_src_ad       m_src_ref.m_s_ad
+#define m_src_oc       m_src_ref.m_s_oc
+       struct berval           m_dst;
+       union {
+               AttributeDescription    *m_d_ad;
+               ObjectClass             *m_d_oc;
+       } m_dst_ref;
+#define m_dst_ad       m_dst_ref.m_d_ad
+#define m_dst_oc       m_dst_ref.m_d_oc
 };
 
 struct ldaprwmap {
@@ -88,6 +80,11 @@ struct ldaprwmap {
         */
        struct ldapmap rwm_oc;
        struct ldapmap rwm_at;
+
+#define        RWM_F_NONE                      0x0000U
+#define        RWM_F_SUPPORT_T_F               0x4000U
+#define        RWM_F_SUPPORT_T_F_DISCOVER      0x8000U
+       unsigned        rwm_flags;
 };
 
 /* Whatever context ldap_back_dn_massage needs... */
@@ -98,40 +95,52 @@ typedef struct dncookie {
        Connection *conn;
        char *ctx;
        SlapReply *rs;
-#else
+#else /* !ENABLE_REWRITE */
        int normalized;
        int tofrom;
-#endif
+#endif /* !ENABLE_REWRITE */
 } dncookie;
 
-int rwm_dn_massage(dncookie *dc, struct berval *dn, struct berval *res);
+int rwm_dn_massage( dncookie *dc, struct berval *in, struct berval *dn );
+int rwm_dn_massage_pretty( dncookie *dc, struct berval *in, struct berval *pdn );
+int rwm_dn_massage_normalize( dncookie *dc, struct berval *in, struct berval *ndn );
+int rwm_dn_massage_pretty_normalize( dncookie *dc, struct berval *in, struct berval *pdn, struct berval *ndn );
 
 /* attributeType/objectClass mapping */
-int mapping_cmp (const void *, const void *);
-int mapping_dup (void *, void *);
+int rwm_mapping_cmp (const void *, const void *);
+int rwm_mapping_dup (void *, void *);
 
-void rwm_map_init ( struct ldapmap *lm, struct ldapmapping ** );
+int rwm_map_init ( struct ldapmap *lm, struct ldapmapping ** );
 void rwm_map ( struct ldapmap *map, struct berval *s, struct berval *m,
        int remap );
-#define BACKLDAP_MAP   0
-#define BACKLDAP_REMAP 1
+int rwm_mapping ( struct ldapmap *map, struct berval *s,
+               struct ldapmapping **m, int remap );
+#define RWM_MAP                0
+#define RWM_REMAP      1
 char *
 rwm_map_filter(
                struct ldapmap *at_map,
                struct ldapmap *oc_map,
-               struct berval *f,
-               int remap
-);
+               struct berval *f );
 
 int
 rwm_map_attrs(
                struct ldapmap *at_map,
                AttributeName *a,
                int remap,
-               char ***mapped_attrs
-);
+               char ***mapped_attrs );
+
+int
+rwm_map_attrnames(
+               struct ldapmap *at_map,
+               struct ldapmap *oc_map,
+               AttributeName *an,
+               AttributeName **anp,
+               int remap );
+
+extern void rwm_mapping_dst_free ( void *mapping );
 
-extern void mapping_free ( void *mapping );
+extern void rwm_mapping_free ( void *mapping );
 
 extern int rwm_map_config(
                struct ldapmap  *oc_map,
@@ -143,19 +152,31 @@ extern int rwm_map_config(
 
 extern int
 rwm_filter_map_rewrite(
+               Operation               *op,
                dncookie                *dc,
                Filter                  *f,
-               struct berval           *fstr,
-               int                     remap );
+               struct berval           *fstr );
 
 /* suffix massaging by means of librewrite */
 #ifdef ENABLE_REWRITE
-extern int suffix_massage_config( struct rewrite_info *info,
+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 ldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );
-extern int ldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
+extern int rwm_dnattr_rewrite(
+       Operation               *op,
+       SlapReply               *rs,
+       void                    *cookie,
+       BerVarray               a_vals,
+       BerVarray               *pa_nvals );
+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_referral_result_rewrite( dncookie *dc, BerVarray a_vals );
 
 LDAP_END_DECL