X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Frwm.h;h=59e440c58744beb2a70b0c8a07b0f22714d008d1;hb=bc97f801bfd87b715ff1324b5219dc33301d25c0;hp=9c17b198e9a06dc3a70ba1fc706c82f4237b19c4;hpb=fbba83b20f3a645b2dc19b8ec4a0026f71f5b15c;p=openldap diff --git a/servers/slapd/overlays/rwm.h b/servers/slapd/overlays/rwm.h index 9c17b198e9..59e440c587 100644 --- a/servers/slapd/overlays/rwm.h +++ b/servers/slapd/overlays/rwm.h @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2003 The OpenLDAP Foundation. + * Copyright 1999-2005 The OpenLDAP Foundation. * Portions Copyright 1999-2003 Howard Chu. * Portions Copyright 2000-2003 Pierangelo Masarati. * All rights reserved. @@ -31,6 +31,9 @@ LDAP_BEGIN_DECL +/* define to enable referral DN massage by default */ +#undef RWM_REFERRAL_REWRITE + struct ldapmap { int drop_missing; @@ -39,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 { @@ -70,40 +90,50 @@ 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 mapping_free ( void *mapping ); +extern void rwm_mapping_free ( void *mapping ); extern int rwm_map_config( struct ldapmap *oc_map, @@ -117,17 +147,28 @@ extern int rwm_filter_map_rewrite( 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