]> git.sur5r.net Git - openldap/blob - servers/slapd/back-ldap/back-ldap.h
d2dc6c9f192a1dc3f413db10ff663f67b94d8f27
[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, Connection *conn, Operation *op,
99         ber_int_t msgid, int rc);
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 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 #ifdef ENABLE_REWRITE
134 extern int suffix_massage_config( struct rewrite_info *info,
135                 struct berval *pvnc, struct berval *nvnc,
136                 struct berval *prnc, struct berval *nrnc);
137 extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie );
138 #endif /* ENABLE_REWRITE */
139
140 LDAP_END_DECL
141
142 #endif /* SLAPD_LDAP_H */