s3-smbldap: improve smbldap.h readability and rearrange some defines.
[Samba/gbeck.git] / source3 / include / smb_ldap.h
blob6d15b1a6a2b66111395fe6db7878eb4e1b9eec44
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
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.
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.
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/>.
23 #ifndef _SMB_LDAP_H
24 #define _SMB_LDAP_H
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.
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 */
42 #if HAVE_LDAP_H
43 #include <ldap.h>
44 #ifndef LDAP_CONST
45 #define LDAP_CONST const
46 #endif
48 #ifdef HAVE_LDAP_PVT_H
49 #include <ldap_pvt.h>
50 #endif /* HAVE_LDAP_PVT_H */
52 #ifdef HAVE_LDAP_INIT_FD
53 int ldap_init_fd(ber_socket_t fd, int proto, char *uri, LDAP **ldp);
54 #endif
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);
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
75 #endif /* HAVE_LDAP_H */
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 */
87 #ifndef LDAP_OPT_SUCCESS
88 #define LDAP_OPT_SUCCESS 0
89 #endif
91 #define LDAP_DEFAULT_TIMEOUT 15
92 #define LDAP_CONNECTION_DEFAULT_TIMEOUT 2
93 #define LDAP_PAGE_SIZE 1024
95 #define ADS_PAGE_CTL_OID "1.2.840.113556.1.4.319"
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
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
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
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
122 #endif /* _SMB_LDAP_H */