]> git.sur5r.net Git - openldap/blob - servers/slapd/back-ldap/back-ldap.h
improved filter mapping/rewrite; improved result rewriting; improved attribute/object...
[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 ldapinfo {
77         struct slap_backend_db  *be;
78         char *url;
79         char *binddn;
80         char *bindpw;
81         ldap_pvt_thread_mutex_t         conn_mutex;
82         int savecred;
83         Avlnode *conntree;
84 #ifdef ENABLE_REWRITE
85         struct rewrite_info *rwinfo;
86 #else /* !ENABLE_REWRITE */
87         BerVarray suffix_massage;
88 #endif /* !ENABLE_REWRITE */
89
90         struct ldapmap oc_map;
91         struct ldapmap at_map;
92 };
93
94 struct ldapconn *ldap_back_getconn(struct ldapinfo *li, struct slap_conn *conn,
95         struct slap_op *op);
96 int ldap_back_dobind(struct ldapinfo *li, struct ldapconn *lc, Connection *conn, Operation *op);
97 int ldap_back_map_result(int err);
98 int ldap_back_op_result(struct ldapinfo *li, struct ldapconn *lc,
99         Connection *conn, Operation *op, ber_int_t msgid, int rc, int sendok);
100 int     back_ldap_LTX_init_module(int argc, char *argv[]);
101
102 void ldap_back_dn_massage(struct ldapinfo *li, struct berval *dn,
103         struct berval *res, int normalized, int tofrom);
104
105 extern int ldap_back_conn_cmp( const void *c1, const void *c2);
106 extern int ldap_back_conn_dup( void *c1, void *c2 );
107 extern void ldap_back_conn_free( void *c );
108
109 /* attributeType/objectClass mapping */
110 int mapping_cmp (const void *, const void *);
111 int mapping_dup (void *, void *);
112
113 void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );
114 void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,
115         int remap );
116 #define BACKLDAP_MAP    0
117 #define BACKLDAP_REMAP  1
118 char *
119 ldap_back_map_filter(
120                 struct ldapmap *at_map,
121                 struct ldapmap *oc_map,
122                 struct berval *f,
123                 int remap
124 );
125 char **
126 ldap_back_map_attrs(
127                 struct ldapmap *at_map,
128                 AttributeName *a,
129                 int remap
130 );
131
132 extern void mapping_free ( void *mapping );
133
134 extern int ldap_back_map_config(
135                 struct ldapmap  *oc_map,
136                 struct ldapmap  *at_map,
137                 const char      *fname,
138                 int             lineno,
139                 int             argc,
140                 char            **argv );
141
142 extern int
143 ldap_back_filter_map_rewrite_(
144 #ifdef ENABLE_REWRITE
145                 struct rewrite_info     *info,
146                 void                    *cookie,
147 #endif /* ENABLE_REWRITE */
148                 struct ldapmap          *at_map,
149                 struct ldapmap          *oc_map,
150                 Filter                  *f,
151                 struct berval           *fstr,
152                 int                     remap );
153
154 /* suffix massaging by means of librewrite */
155 #ifdef ENABLE_REWRITE
156 extern int suffix_massage_config( struct rewrite_info *info,
157                 struct berval *pvnc, struct berval *nvnc,
158                 struct berval *prnc, struct berval *nrnc);
159 extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie );
160 #endif /* ENABLE_REWRITE */
161
162 LDAP_END_DECL
163
164 #endif /* SLAPD_LDAP_H */