~ttx/openldap/lucid-gssapi-495418

« back to all changes in this revision

Viewing changes to servers/slapd/overlays/rwm.h

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug
  • Date: 2008-07-10 14:45:49 UTC
  • Revision ID: james.westby@ubuntu.com-20080710144549-wck73med0e72gfyo
Tags: upstream-2.4.10
ImportĀ upstreamĀ versionĀ 2.4.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* rwm.h - dn rewrite/attribute mapping header file */
 
2
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwm.h,v 1.15.2.3 2008/02/11 23:26:48 kurt Exp $ */
 
3
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
 
4
 *
 
5
 * Copyright 1999-2008 The OpenLDAP Foundation.
 
6
 * Portions Copyright 1999-2003 Howard Chu.
 
7
 * Portions Copyright 2000-2003 Pierangelo Masarati.
 
8
 * All rights reserved.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted only as authorized by the OpenLDAP
 
12
 * Public License.
 
13
 *
 
14
 * A copy of this license is available in the file LICENSE in the
 
15
 * top-level directory of the distribution or, alternatively, at
 
16
 * <http://www.OpenLDAP.org/license.html>.
 
17
 */
 
18
/* ACKNOWLEDGEMENTS:
 
19
 * This work was initially developed by the Howard Chu for inclusion
 
20
 * in OpenLDAP Software and subsequently enhanced by Pierangelo
 
21
 * Masarati.
 
22
 */
 
23
 
 
24
#ifndef RWM_H
 
25
#define RWM_H
 
26
 
 
27
#ifndef ENABLE_REWRITE
 
28
#error "librewrite must be enabled!"
 
29
#endif /* ENABLE_REWRITE */
 
30
 
 
31
/* String rewrite library */
 
32
#include "rewrite.h"
 
33
 
 
34
LDAP_BEGIN_DECL
 
35
 
 
36
/* define to enable referral DN massage by default */
 
37
#undef RWM_REFERRAL_REWRITE
 
38
 
 
39
struct ldapmap {
 
40
        int drop_missing;
 
41
 
 
42
        Avlnode *map;
 
43
        Avlnode *remap;
 
44
};
 
45
 
 
46
struct ldapmapping {
 
47
        int                     m_flags;
 
48
#define RWMMAP_F_NONE           0x00
 
49
#define RWMMAP_F_IS_OC          0x01
 
50
#define RWMMAP_F_FREE_SRC       0x10
 
51
#define RWMMAP_F_FREE_DST       0x20
 
52
        struct berval           m_src;
 
53
        union {
 
54
                AttributeDescription    *m_s_ad;
 
55
                ObjectClass             *m_s_oc;
 
56
        } m_src_ref;
 
57
#define m_src_ad        m_src_ref.m_s_ad
 
58
#define m_src_oc        m_src_ref.m_s_oc
 
59
        struct berval           m_dst;
 
60
        union {
 
61
                AttributeDescription    *m_d_ad;
 
62
                ObjectClass             *m_d_oc;
 
63
        } m_dst_ref;
 
64
#define m_dst_ad        m_dst_ref.m_d_ad
 
65
#define m_dst_oc        m_dst_ref.m_d_oc
 
66
};
 
67
 
 
68
struct ldaprwmap {
 
69
        /*
 
70
         * DN rewriting
 
71
         */
 
72
        struct rewrite_info *rwm_rw;
 
73
        BerVarray rwm_bva_rewrite;
 
74
 
 
75
        /*
 
76
         * Attribute/objectClass mapping
 
77
         */
 
78
        struct ldapmap rwm_oc;
 
79
        struct ldapmap rwm_at;
 
80
        BerVarray rwm_bva_map;
 
81
 
 
82
#define RWM_F_NONE                      (0x0000U)
 
83
#define RWM_F_NORMALIZE_MAPPED_ATTRS    (0x0001U)
 
84
#define RWM_F_SUPPORT_T_F               (0x4000U)
 
85
#define RWM_F_SUPPORT_T_F_DISCOVER      (0x8000U)
 
86
#define RWM_F_SUPPORT_T_F_MASK          (RWM_F_SUPPORT_T_F)
 
87
#define RWM_F_SUPPORT_T_F_MASK2         (RWM_F_SUPPORT_T_F|RWM_F_SUPPORT_T_F_DISCOVER)
 
88
        unsigned        rwm_flags;
 
89
};
 
90
 
 
91
/* Whatever context ldap_back_dn_massage needs... */
 
92
typedef struct dncookie {
 
93
        struct ldaprwmap *rwmap;
 
94
 
 
95
        Connection *conn;
 
96
        char *ctx;
 
97
        SlapReply *rs;
 
98
} dncookie;
 
99
 
 
100
int rwm_dn_massage( dncookie *dc, struct berval *in, struct berval *dn );
 
101
int rwm_dn_massage_pretty( dncookie *dc, struct berval *in, struct berval *pdn );
 
102
int rwm_dn_massage_normalize( dncookie *dc, struct berval *in, struct berval *ndn );
 
103
int rwm_dn_massage_pretty_normalize( dncookie *dc, struct berval *in, struct berval *pdn, struct berval *ndn );
 
104
 
 
105
/* attributeType/objectClass mapping */
 
106
int rwm_mapping_cmp (const void *, const void *);
 
107
int rwm_mapping_dup (void *, void *);
 
108
 
 
109
int rwm_map_init ( struct ldapmap *lm, struct ldapmapping ** );
 
110
void rwm_map ( struct ldapmap *map, struct berval *s, struct berval *m,
 
111
        int remap );
 
112
int rwm_mapping ( struct ldapmap *map, struct berval *s,
 
113
                struct ldapmapping **m, int remap );
 
114
#define RWM_MAP         0
 
115
#define RWM_REMAP       1
 
116
char *
 
117
rwm_map_filter(
 
118
                struct ldapmap *at_map,
 
119
                struct ldapmap *oc_map,
 
120
                struct berval *f );
 
121
 
 
122
int
 
123
rwm_map_attrs(
 
124
                struct ldapmap *at_map,
 
125
                AttributeName *a,
 
126
                int remap,
 
127
                char ***mapped_attrs );
 
128
 
 
129
int
 
130
rwm_map_attrnames(
 
131
                struct ldapmap *at_map,
 
132
                struct ldapmap *oc_map,
 
133
                AttributeName *an,
 
134
                AttributeName **anp,
 
135
                int remap );
 
136
 
 
137
extern void rwm_mapping_dst_free ( void *mapping );
 
138
 
 
139
extern void rwm_mapping_free ( void *mapping );
 
140
 
 
141
extern int rwm_map_config(
 
142
                struct ldapmap  *oc_map,
 
143
                struct ldapmap  *at_map,
 
144
                const char      *fname,
 
145
                int             lineno,
 
146
                int             argc,
 
147
                char            **argv );
 
148
 
 
149
extern int
 
150
rwm_filter_map_rewrite(
 
151
                Operation               *op,
 
152
                dncookie                *dc,
 
153
                Filter                  *f,
 
154
                struct berval           *fstr );
 
155
 
 
156
/* suffix massaging by means of librewrite */
 
157
extern int
 
158
rwm_suffix_massage_config(
 
159
        struct rewrite_info     *info,
 
160
        struct berval           *pvnc,
 
161
        struct berval           *nvnc,
 
162
        struct berval           *prnc,
 
163
        struct berval           *nrnc);
 
164
extern int
 
165
rwm_dnattr_rewrite(
 
166
        Operation               *op,
 
167
        SlapReply               *rs,
 
168
        void                    *cookie,
 
169
        BerVarray               a_vals,
 
170
        BerVarray               *pa_nvals );
 
171
extern int
 
172
rwm_referral_rewrite(
 
173
        Operation               *op,
 
174
        SlapReply               *rs,
 
175
        void                    *cookie,
 
176
        BerVarray               a_vals,
 
177
        BerVarray               *pa_nvals );
 
178
extern int rwm_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
 
179
extern int rwm_referral_result_rewrite( dncookie *dc, BerVarray a_vals );
 
180
 
 
181
LDAP_END_DECL
 
182
 
 
183
#endif /* RWM_H */