]> git.sur5r.net Git - openldap/blob - servers/slapd/back-ldap/back-ldap.h
need a second function because of different free() routines
[openldap] / servers / slapd / back-ldap / back-ldap.h
1 /* back-ldap.h - ldap backend header file */
2 /* $OpenLDAP$ */
3 /*
4  * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
5  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
6  */
7 /* This is an altered version */
8 /*
9  * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
10  * 
11  * Permission is granted to anyone to use this software for any purpose
12  * on any computer system, and to alter it and redistribute it, subject
13  * to the following restrictions:
14  * 
15  * 1. The author is not responsible for the consequences of use of this
16  *    software, no matter how awful, even if they arise from flaws in it.
17  * 
18  * 2. The origin of this software must not be misrepresented, either by
19  *    explicit claim or by omission.  Since few users ever read sources,
20  *    credits should appear in the documentation.
21  * 
22  * 3. Altered versions must be plainly marked as such, and must not be
23  *    misrepresented as being the original software.  Since few users
24  *    ever read sources, credits should appear in the documentation.
25  * 
26  * 4. This notice may not be removed or altered.
27  *
28  *
29  *
30  * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
31  * 
32  * This software is being modified by Pierangelo Masarati.
33  * The previously reported conditions apply to the modified code as well.
34  * Changes in the original code are highlighted where required.
35  * Credits for the original code go to the author, Howard Chu.      
36  */
37
38 #ifndef SLAPD_LDAP_H
39 #define SLAPD_LDAP_H
40
41 #include "external.h"
42
43 /* String rewrite library */
44 #ifdef ENABLE_REWRITE
45 #include "rewrite.h"
46 #endif /* ENABLE_REWRITE */
47
48 LDAP_BEGIN_DECL
49
50 struct slap_conn;
51 struct slap_op;
52 struct slap_backend_db;
53
54 struct ldapconn {
55         struct slap_conn        *conn;
56         LDAP            *ld;
57         struct berval   cred;
58         struct berval   bound_dn;
59         struct berval   local_dn;
60         int             bound;
61         ldap_pvt_thread_mutex_t         lc_mutex;
62 };
63
64 struct ldapmap {
65         int drop_missing;
66
67         Avlnode *map;
68         Avlnode *remap;
69 };
70
71 struct ldapmapping {
72         struct berval src;
73         struct berval dst;
74 };
75
76 struct ldaprwmap {
77         /*
78          * DN rewriting
79          */
80 #ifdef ENABLE_REWRITE
81         struct rewrite_info *rwm_rw;
82 #else /* !ENABLE_REWRITE */
83         /* some time the suffix massaging without librewrite
84          * will be disabled */
85         BerVarray rwm_suffix_massage;
86 #endif /* !ENABLE_REWRITE */
87
88         /*
89          * Attribute/objectClass mapping
90          */
91         struct ldapmap rwm_oc;
92         struct ldapmap rwm_at;
93 };
94
95 struct ldapinfo {
96         struct slap_backend_db  *be;
97         char *url;
98         struct berval binddn;
99         struct berval bindpw;
100         ldap_pvt_thread_mutex_t         conn_mutex;
101         int savecred;
102         Avlnode *conntree;
103
104 #if 0
105 #ifdef ENABLE_REWRITE
106         struct rewrite_info *rwinfo;
107 #else /* !ENABLE_REWRITE */
108         BerVarray suffix_massage;
109 #endif /* !ENABLE_REWRITE */
110
111         struct ldapmap oc_map;
112         struct ldapmap at_map;
113 #endif
114
115         struct ldaprwmap rwmap;
116 };
117
118 /* Whatever context ldap_back_dn_massage needs... */
119 typedef struct dncookie {
120         struct ldaprwmap *rwmap;
121
122 #ifdef ENABLE_REWRITE
123         Connection *conn;
124         char *ctx;
125         SlapReply *rs;
126 #else
127         int normalized;
128         int tofrom;
129 #endif
130 } dncookie;
131
132 struct ldapconn *ldap_back_getconn(struct slap_op *op, struct slap_rep *rs);
133 int ldap_back_dobind(struct ldapconn *lc, Operation *op, SlapReply *rs);
134 int ldap_back_map_result(SlapReply *rs);
135 int ldap_back_op_result(struct ldapconn *lc, Operation *op, SlapReply *rs,
136         ber_int_t msgid, int sendok);
137 int     back_ldap_LTX_init_module(int argc, char *argv[]);
138
139 int ldap_back_dn_massage(dncookie *dc, struct berval *dn,
140         struct berval *res);
141
142 extern int ldap_back_conn_cmp( const void *c1, const void *c2);
143 extern int ldap_back_conn_dup( void *c1, void *c2 );
144 extern void ldap_back_conn_free( void *c );
145
146 /* attributeType/objectClass mapping */
147 int mapping_cmp (const void *, const void *);
148 int mapping_dup (void *, void *);
149
150 void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );
151 void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,
152         int remap );
153 #define BACKLDAP_MAP    0
154 #define BACKLDAP_REMAP  1
155 char *
156 ldap_back_map_filter(
157                 struct ldapmap *at_map,
158                 struct ldapmap *oc_map,
159                 struct berval *f,
160                 int remap
161 );
162
163 int
164 ldap_back_map_attrs(
165                 struct ldapmap *at_map,
166                 AttributeName *a,
167                 int remap,
168                 char ***mapped_attrs
169 );
170
171 extern void mapping_free ( void *mapping );
172
173 extern int ldap_back_map_config(
174                 struct ldapmap  *oc_map,
175                 struct ldapmap  *at_map,
176                 const char      *fname,
177                 int             lineno,
178                 int             argc,
179                 char            **argv );
180
181 extern int
182 ldap_back_filter_map_rewrite(
183                 dncookie                *dc,
184                 Filter                  *f,
185                 struct berval           *fstr,
186                 int                     remap );
187
188 /* suffix massaging by means of librewrite */
189 #ifdef ENABLE_REWRITE
190 extern int suffix_massage_config( struct rewrite_info *info,
191                 struct berval *pvnc, struct berval *nvnc,
192                 struct berval *prnc, struct berval *nrnc);
193 #endif /* ENABLE_REWRITE */
194 extern int ldap_dnattr_rewrite( dncookie *dc, BerVarray a_vals );
195 extern int ldap_dnattr_result_rewrite( dncookie *dc, BerVarray a_vals );
196
197 LDAP_END_DECL
198
199 #endif /* SLAPD_LDAP_H */