~zulcss/samba/server-dailies-3.0.37

« back to all changes in this revision

Viewing changes to source/include/smb_ldap.h

  • Committer: Chuck Short
  • Date: 2010-09-28 20:24:01 UTC
  • Revision ID: zulcss@ubuntu.com-20100928202401-tgh438aoatxv3zp3
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   Unix SMB/CIFS Implementation.
 
3
   LDAP protocol helper functions for SAMBA
 
4
   Copyright (C) Volker Lendecke 2004
 
5
    
 
6
   This program is free software; you can redistribute it and/or modify
 
7
   it under the terms of the GNU General Public License as published by
 
8
   the Free Software Foundation; either version 2 of the License, or
 
9
   (at your option) any later version.
 
10
   
 
11
   This program is distributed in the hope that it will be useful,
 
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
   GNU General Public License for more details.
 
15
   
 
16
   You should have received a copy of the GNU General Public License
 
17
   along with this program; if not, write to the Free Software
 
18
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
19
   
 
20
*/
 
21
 
 
22
#ifndef _SMB_LDAP_H
 
23
#define _SMB_LDAP_H
 
24
 
 
25
enum ldap_request_tag {
 
26
        LDAP_TAG_BindRequest = 0,
 
27
        LDAP_TAG_BindResponse = 1,
 
28
        LDAP_TAG_UnbindRequest = 2,
 
29
        LDAP_TAG_SearchRequest = 3,
 
30
        LDAP_TAG_SearchResultEntry = 4,
 
31
        LDAP_TAG_SearchResultDone = 5,
 
32
        LDAP_TAG_ModifyRequest = 6,
 
33
        LDAP_TAG_ModifyResponse = 7,
 
34
        LDAP_TAG_AddRequest = 8,
 
35
        LDAP_TAG_AddResponse = 9,
 
36
        LDAP_TAG_DelRequest = 10,
 
37
        LDAP_TAG_DelResponse = 11,
 
38
        LDAP_TAG_ModifyDNRequest = 12,
 
39
        LDAP_TAG_ModifyDNResponse = 13,
 
40
        LDAP_TAG_CompareRequest = 14,
 
41
        LDAP_TAG_CompareResponse = 15,
 
42
        LDAP_TAG_AbandonRequest = 16,
 
43
        LDAP_TAG_SearchResultReference = 19,
 
44
        LDAP_TAG_ExtendedRequest = 23,
 
45
        LDAP_TAG_ExtendedResponse = 24
 
46
};
 
47
 
 
48
enum ldap_auth_mechanism {
 
49
        LDAP_AUTH_MECH_SIMPLE = 0,
 
50
        LDAP_AUTH_MECH_SASL = 3
 
51
};
 
52
 
 
53
#ifndef LDAP_SUCCESS
 
54
enum ldap_result_code {
 
55
        LDAP_SUCCESS = 0,
 
56
        LDAP_SASL_BIND_IN_PROGRESS = 0x0e,
 
57
        LDAP_INVALID_CREDENTIALS = 0x31,
 
58
        LDAP_OTHER = 0x50
 
59
};
 
60
#endif /* LDAP_SUCCESS */
 
61
 
 
62
struct ldap_Result {
 
63
        int resultcode;
 
64
        const char *dn;
 
65
        const char *errormessage;
 
66
        const char *referral;
 
67
};
 
68
 
 
69
struct ldap_attribute {
 
70
        const char *name;
 
71
        int num_values;
 
72
        DATA_BLOB *values;
 
73
};
 
74
 
 
75
struct ldap_BindRequest {
 
76
        int version;
 
77
        const char *dn;
 
78
        enum ldap_auth_mechanism mechanism;
 
79
        union {
 
80
                const char *password;
 
81
                struct {
 
82
                        const char *mechanism;
 
83
                        DATA_BLOB secblob;
 
84
                } SASL;
 
85
        } creds;
 
86
};
 
87
 
 
88
struct ldap_BindResponse {
 
89
        struct ldap_Result response;
 
90
        union {
 
91
                DATA_BLOB secblob;
 
92
        } SASL;
 
93
};
 
94
 
 
95
struct ldap_UnbindRequest {
 
96
        uint8 __dummy;
 
97
};
 
98
 
 
99
enum ldap_scope {
 
100
        LDAP_SEARCH_SCOPE_BASE = 0,
 
101
        LDAP_SEARCH_SCOPE_SINGLE = 1,
 
102
        LDAP_SEARCH_SCOPE_SUB = 2
 
103
};
 
104
 
 
105
enum ldap_deref {
 
106
        LDAP_DEREFERENCE_NEVER = 0,
 
107
        LDAP_DEREFERENCE_IN_SEARCHING = 1,
 
108
        LDAP_DEREFERENCE_FINDING_BASE = 2,
 
109
        LDAP_DEREFERENCE_ALWAYS
 
110
};
 
111
 
 
112
struct ldap_SearchRequest {
 
113
        const char *basedn;
 
114
        enum ldap_scope scope;
 
115
        enum ldap_deref deref;
 
116
        uint32 timelimit;
 
117
        uint32 sizelimit;
 
118
        BOOL attributesonly;
 
119
        char *filter;
 
120
        int num_attributes;
 
121
        const char **attributes;
 
122
};
 
123
 
 
124
struct ldap_SearchResEntry {
 
125
        const char *dn;
 
126
        int num_attributes;
 
127
        struct ldap_attribute *attributes;
 
128
};
 
129
 
 
130
struct ldap_SearchResRef {
 
131
        int num_referrals;
 
132
        const char **referrals;
 
133
};
 
134
 
 
135
enum ldap_modify_type {
 
136
        LDAP_MODIFY_NONE = -1,
 
137
        LDAP_MODIFY_ADD = 0,
 
138
        LDAP_MODIFY_DELETE = 1,
 
139
        LDAP_MODIFY_REPLACE = 2
 
140
};
 
141
 
 
142
struct ldap_mod {
 
143
        enum ldap_modify_type type;
 
144
        struct ldap_attribute attrib;
 
145
};
 
146
 
 
147
struct ldap_ModifyRequest {
 
148
        const char *dn;
 
149
        int num_mods;
 
150
        struct ldap_mod *mods;
 
151
};
 
152
 
 
153
struct ldap_AddRequest {
 
154
        const char *dn;
 
155
        int num_attributes;
 
156
        struct ldap_attribute *attributes;
 
157
};
 
158
 
 
159
struct ldap_DelRequest {
 
160
        const char *dn;
 
161
};
 
162
 
 
163
struct ldap_ModifyDNRequest {
 
164
        const char *dn;
 
165
        const char *newrdn;
 
166
        BOOL deleteolddn;
 
167
        const char *newsuperior;
 
168
};
 
169
 
 
170
struct ldap_CompareRequest {
 
171
        const char *dn;
 
172
        const char *attribute;
 
173
        const char *value;
 
174
};
 
175
 
 
176
struct ldap_AbandonRequest {
 
177
        uint32 messageid;
 
178
};
 
179
 
 
180
struct ldap_ExtendedRequest {
 
181
        const char *oid;
 
182
        DATA_BLOB value;
 
183
};
 
184
 
 
185
struct ldap_ExtendedResponse {
 
186
        struct ldap_Result response;
 
187
        const char *name;
 
188
        DATA_BLOB value;
 
189
};
 
190
 
 
191
union ldap_Request {
 
192
        struct ldap_BindRequest         BindRequest;
 
193
        struct ldap_BindResponse        BindResponse;
 
194
        struct ldap_UnbindRequest       UnbindRequest;
 
195
        struct ldap_SearchRequest       SearchRequest;
 
196
        struct ldap_SearchResEntry      SearchResultEntry;
 
197
        struct ldap_Result              SearchResultDone;
 
198
        struct ldap_SearchResRef        SearchResultReference;
 
199
        struct ldap_ModifyRequest       ModifyRequest;
 
200
        struct ldap_Result              ModifyResponse;
 
201
        struct ldap_AddRequest          AddRequest;
 
202
        struct ldap_Result              AddResponse;
 
203
        struct ldap_DelRequest          DelRequest;
 
204
        struct ldap_Result              DelResponse;
 
205
        struct ldap_ModifyDNRequest     ModifyDNRequest;
 
206
        struct ldap_Result              ModifyDNResponse;
 
207
        struct ldap_CompareRequest      CompareRequest;
 
208
        struct ldap_Result              CompareResponse;
 
209
        struct ldap_AbandonRequest      AbandonRequest;
 
210
        struct ldap_ExtendedRequest     ExtendedRequest;
 
211
        struct ldap_ExtendedResponse    ExtendedResponse;
 
212
};
 
213
 
 
214
struct ldap_Control {
 
215
        const char *oid;
 
216
        BOOL        critical;
 
217
        DATA_BLOB   value;
 
218
};
 
219
 
 
220
struct ldap_message {
 
221
        TALLOC_CTX             *mem_ctx;
 
222
        uint32                  messageid;
 
223
        uint8                   type;
 
224
        union  ldap_Request     r;
 
225
        int                     num_controls;
 
226
        struct ldap_Control    *controls;
 
227
};
 
228
 
 
229
struct ldap_queue_entry {
 
230
        struct ldap_queue_entry *next, *prev;
 
231
        int msgid;
 
232
        struct ldap_message *msg;
 
233
};
 
234
 
 
235
struct ldap_connection {
 
236
        TALLOC_CTX *mem_ctx;
 
237
        int sock;
 
238
        int next_msgid;
 
239
        char *host;
 
240
        uint16 port;
 
241
        BOOL ldaps;
 
242
 
 
243
        const char *auth_dn;
 
244
        const char *simple_pw;
 
245
 
 
246
        /* Current outstanding search entry */
 
247
        int searchid;
 
248
 
 
249
        /* List for incoming search entries */
 
250
        struct ldap_queue_entry *search_entries;
 
251
 
 
252
        /* Outstanding LDAP requests that have not yet been replied to */
 
253
        struct ldap_queue_entry *outstanding;
 
254
};
 
255
 
 
256
#endif