6d15b1a6a2b66111395fe6db7878eb4e1b9eec44
[mat/samba.git] / source3 / include / smb_ldap.h
1 /*
2    Unix SMB/CIFS implementation.
3    Copyright (C) Andrew Tridgell 2001
4    Copyright (C) Remus Koos 2001
5    Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2002
6    Copyright (C) Guenther Deschner 2005
7    Copyright (C) Gerald Carter 2006
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 */
22
23 #ifndef _SMB_LDAP_H
24 #define _SMB_LDAP_H
25
26 #if HAVE_LBER_H
27 #include <lber.h>
28 #if defined(HPUX) && !defined(_LBER_TYPES_H)
29 /* Define ber_tag_t and ber_int_t for using
30  * HP LDAP-UX Integration products' LDAP libraries.
31 */
32 #ifndef ber_tag_t
33 typedef unsigned long ber_tag_t;
34 typedef int ber_int_t;
35 #endif
36 #endif /* defined(HPUX) && !defined(_LBER_TYPES_H) */
37 #ifndef LBER_USE_DER
38 #define LBER_USE_DER 0x01
39 #endif
40 #endif /* HAVE_LBER_H */
41
42 #if HAVE_LDAP_H
43 #include <ldap.h>
44 #ifndef LDAP_CONST
45 #define LDAP_CONST const
46 #endif
47
48 #ifdef HAVE_LDAP_PVT_H
49 #include <ldap_pvt.h>
50 #endif /* HAVE_LDAP_PVT_H */
51
52 #ifdef HAVE_LDAP_INIT_FD
53 int ldap_init_fd(ber_socket_t fd, int proto, char *uri, LDAP **ldp);
54 #endif
55
56 /* function declarations not included in proto.h */
57 LDAP *ldap_open_with_timeout(const char *server,
58                              struct sockaddr_storage *ss,
59                              int port, unsigned int to);
60
61 #ifndef LDAP_OPT_SUCCESS
62 #define LDAP_OPT_SUCCESS 0
63 #endif
64 /* Solaris 8 and maybe other LDAP implementations spell this "..._INPROGRESS": */
65 #if defined(LDAP_SASL_BIND_INPROGRESS) && !defined(LDAP_SASL_BIND_IN_PROGRESS)
66 #define LDAP_SASL_BIND_IN_PROGRESS LDAP_SASL_BIND_INPROGRESS
67 #endif
68 /* Solaris 8 defines SSL_LDAP_PORT, not LDAPS_PORT and it only does so if
69    LDAP_SSL is defined - but SSL is not working. We just want the
70    port number! Let's just define LDAPS_PORT correct. */
71 #if !defined(LDAPS_PORT)
72 #define LDAPS_PORT 636
73 #endif
74
75 #endif /* HAVE_LDAP_H */
76
77 #ifndef HAVE_LDAP
78 #define LDAP void
79 #define LDAPMessage void
80 #define LDAPMod void
81 #define LDAP_CONST const
82 #define LDAPControl void
83 struct berval;
84 struct ldapsam_privates;
85 #endif /* HAVE_LDAP */
86
87 #ifndef LDAP_OPT_SUCCESS
88 #define LDAP_OPT_SUCCESS 0
89 #endif
90
91 #define LDAP_DEFAULT_TIMEOUT   15
92 #define LDAP_CONNECTION_DEFAULT_TIMEOUT 2
93 #define LDAP_PAGE_SIZE 1024
94
95 #define ADS_PAGE_CTL_OID        "1.2.840.113556.1.4.319"
96
97 /*
98  * Work around versions of the LDAP client libs that don't have the OIDs
99  * defined, or have them defined under the old name.
100  * This functionality is really a factor of the server, not the client
101  *
102  */
103
104 #if defined(LDAP_EXOP_X_MODIFY_PASSWD) && !defined(LDAP_EXOP_MODIFY_PASSWD)
105 #define LDAP_EXOP_MODIFY_PASSWD LDAP_EXOP_X_MODIFY_PASSWD
106 #elif !defined(LDAP_EXOP_MODIFY_PASSWD)
107 #define LDAP_EXOP_MODIFY_PASSWD "1.3.6.1.4.1.4203.1.11.1"
108 #endif
109
110 #if defined(LDAP_EXOP_X_MODIFY_PASSWD_ID) && !defined(LDAP_EXOP_MODIFY_PASSWD_ID)
111 #define LDAP_TAG_EXOP_MODIFY_PASSWD_ID LDAP_EXOP_X_MODIFY_PASSWD_ID
112 #elif !defined(LDAP_EXOP_MODIFY_PASSWD_ID)
113 #define LDAP_TAG_EXOP_MODIFY_PASSWD_ID        ((ber_tag_t) 0x80U)
114 #endif
115
116 #if defined(LDAP_EXOP_X_MODIFY_PASSWD_NEW) && !defined(LDAP_EXOP_MODIFY_PASSWD_NEW)
117 #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW LDAP_EXOP_X_MODIFY_PASSWD_NEW
118 #elif !defined(LDAP_EXOP_MODIFY_PASSWD_NEW)
119 #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW       ((ber_tag_t) 0x82U)
120 #endif
121
122 #endif /* _SMB_LDAP_H */