]> git.sur5r.net Git - openldap/blob - servers/slapd/back-ldap/back-ldap.h
3692f2804702a447aff9ce8bc5b23557e423952d
[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         struct berval binddn;
80         struct berval 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 slap_op *op, struct slap_rep *rs);
95 int ldap_back_dobind(struct ldapconn *lc, Operation *op, SlapReply *rs);
96 int ldap_back_map_result(int err);
97 int ldap_back_op_result(struct ldapconn *lc, Operation *op, SlapReply *rs,
98         ber_int_t msgid, int rc, int sendok);
99 int     back_ldap_LTX_init_module(int argc, char *argv[]);
100
101 void ldap_back_dn_massage(struct ldapinfo *li, struct berval *dn,
102         struct berval *res, int normalized, int tofrom);
103
104 extern int ldap_back_conn_cmp( const void *c1, const void *c2);
105 extern int ldap_back_conn_dup( void *c1, void *c2 );
106 extern void ldap_back_conn_free( void *c );
107
108 /* attributeType/objectClass mapping */
109 int mapping_cmp (const void *, const void *);
110 int mapping_dup (void *, void *);
111
112 void ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping ** );
113 void ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *m,
114         int remap );
115 #define BACKLDAP_MAP    0
116 #define BACKLDAP_REMAP  1
117 char *
118 ldap_back_map_filter(
119                 struct ldapmap *at_map,
120                 struct ldapmap *oc_map,
121                 struct berval *f,
122                 int remap
123 );
124 char **
125 ldap_back_map_attrs(
126                 struct ldapmap *at_map,
127                 AttributeName *a,
128                 int remap
129 );
130
131 extern void mapping_free ( void *mapping );
132
133 extern int ldap_back_map_config(
134                 struct ldapmap  *oc_map,
135                 struct ldapmap  *at_map,
136                 const char      *fname,
137                 int             lineno,
138                 int             argc,
139                 char            **argv );
140
141 extern int
142 ldap_back_filter_map_rewrite_(
143 #ifdef ENABLE_REWRITE
144                 struct rewrite_info     *info,
145                 void                    *cookie,
146 #endif /* ENABLE_REWRITE */
147                 struct ldapmap          *at_map,
148                 struct ldapmap          *oc_map,
149                 Filter                  *f,
150                 struct berval           *fstr,
151                 int                     remap );
152
153 /* suffix massaging by means of librewrite */
154 #ifdef ENABLE_REWRITE
155 extern int suffix_massage_config( struct rewrite_info *info,
156                 struct berval *pvnc, struct berval *nvnc,
157                 struct berval *prnc, struct berval *nrnc);
158 extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie );
159 #endif /* ENABLE_REWRITE */
160
161 int ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent,
162          struct berval *bdn, int private );
163
164 LDAP_END_DECL
165
166 #endif /* SLAPD_LDAP_H */