1251886Speter/* $FreeBSD: releng/10.2/usr.bin/svn/lib/libapr_util/apr_ldap.h 252454 2013-07-01 07:00:12Z peter $ */
2251886Speter/* Licensed to the Apache Software Foundation (ASF) under one or more
3251886Speter * contributor license agreements.  See the NOTICE file distributed with
4251886Speter * this work for additional information regarding copyright ownership.
5251886Speter * The ASF licenses this file to You under the Apache License, Version 2.0
6251886Speter * (the "License"); you may not use this file except in compliance with
7251886Speter * the License.  You may obtain a copy of the License at
8251886Speter *
9251886Speter *     http://www.apache.org/licenses/LICENSE-2.0
10251886Speter *
11251886Speter * Unless required by applicable law or agreed to in writing, software
12251886Speter * distributed under the License is distributed on an "AS IS" BASIS,
13251886Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14251886Speter * See the License for the specific language governing permissions and
15251886Speter * limitations under the License.
16251886Speter */
17251886Speter
18251886Speter/*
19251886Speter * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h
20251886Speter */
21251886Speter/**
22251886Speter * @file apr_ldap.h
23251886Speter * @brief  APR-UTIL LDAP
24251886Speter */
25251886Speter#ifndef APU_LDAP_H
26251886Speter#define APU_LDAP_H
27251886Speter
28251886Speter/**
29251886Speter * @defgroup APR_Util_LDAP LDAP
30251886Speter * @ingroup APR_Util
31251886Speter * @{
32251886Speter */
33251886Speter
34251886Speter/* this will be defined if LDAP support was compiled into apr-util */
35251886Speter#define APR_HAS_LDAP		  0
36251886Speter
37251886Speter/* identify the LDAP toolkit used */
38251886Speter#define APR_HAS_NETSCAPE_LDAPSDK  0
39251886Speter#define APR_HAS_SOLARIS_LDAPSDK   0
40251886Speter#define APR_HAS_NOVELL_LDAPSDK    0
41251886Speter#define APR_HAS_MOZILLA_LDAPSDK   0
42251886Speter#define APR_HAS_OPENLDAP_LDAPSDK  0
43251886Speter#define APR_HAS_MICROSOFT_LDAPSDK 0
44252454Speter#define APR_HAS_TIVOLI_LDAPSDK    0
45251886Speter#define APR_HAS_ZOS_LDAPSDK       0
46251886Speter#define APR_HAS_OTHER_LDAPSDK     0
47251886Speter
48251886Speter
49251886Speter/*
50251886Speter * Handle the case when LDAP is enabled
51251886Speter */
52251886Speter#if APR_HAS_LDAP
53251886Speter
54251886Speter/*
55251886Speter * The following #defines are DEPRECATED and should not be used for
56251886Speter * anything. They remain to maintain binary compatibility.
57251886Speter * The original code defined the OPENLDAP SDK as present regardless
58251886Speter * of what really was there, which was way bogus. In addition, the
59251886Speter * apr_ldap_url_parse*() functions have been rewritten specifically for
60251886Speter * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero.
61251886Speter */
62252454Speter#if APR_HAS_TIVOLI_LDAPSDK
63252454Speter#define APR_HAS_LDAP_SSL 0
64252454Speter#else
65251886Speter#define APR_HAS_LDAP_SSL 1
66252454Speter#endif
67251886Speter#define APR_HAS_LDAP_URL_PARSE      0
68251886Speter
69251886Speter#if APR_HAS_OPENLDAP_LDAPSDK && !defined(LDAP_DEPRECATED)
70251886Speter/* Ensure that the "deprecated" interfaces are still exposed
71251886Speter * with OpenLDAP >= 2.3; these were exposed by default in earlier
72251886Speter * releases. */
73251886Speter#define LDAP_DEPRECATED 1
74251886Speter#endif
75251886Speter
76251886Speter/*
77251886Speter * Include the standard LDAP header files.
78251886Speter */
79251886Speter
80251886Speter
81251886Speter
82251886Speter
83251886Speter
84251886Speter
85251886Speter/*
86251886Speter * Detected standard functions
87251886Speter */
88251886Speter#define APR_HAS_LDAPSSL_CLIENT_INIT 0
89251886Speter#define APR_HAS_LDAPSSL_CLIENT_DEINIT 0
90251886Speter#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT 0
91251886Speter#define APR_HAS_LDAP_START_TLS_S 0
92251886Speter#define APR_HAS_LDAP_SSLINIT 0
93251886Speter#define APR_HAS_LDAPSSL_INIT 0
94251886Speter#define APR_HAS_LDAPSSL_INSTALL_ROUTINES 0
95251886Speter
96251886Speter/*
97251886Speter * Make sure the secure LDAP port is defined
98251886Speter */
99251886Speter#ifndef LDAPS_PORT
100251886Speter#define LDAPS_PORT 636  /* ldaps:/// default LDAP over TLS port */
101251886Speter#endif
102251886Speter
103251886Speter/*
104251886Speter * For ldap function calls that input a size limit on the number of returned elements
105251886Speter * Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0)
106252454Speter * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK
107252454Speter * or process is configured for.
108251886Speter */
109251886Speter#ifdef LDAP_DEFAULT_LIMIT
110251886Speter#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT
111251886Speter#else
112252454Speter#ifdef LDAP_NO_LIMIT
113252454Speter#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT
114251886Speter#endif
115251886Speter#endif
116251886Speter
117252454Speter#ifndef APR_LDAP_SIZELIMIT
118252454Speter#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */
119252454Speter#endif
120252454Speter
121251886Speter/*
122251886Speter * z/OS is missing some defines
123251886Speter */
124251886Speter#ifndef LDAP_VERSION_MAX
125251886Speter#define LDAP_VERSION_MAX  LDAP_VERSION
126251886Speter#endif
127251886Speter#if APR_HAS_ZOS_LDAPSDK
128251886Speter#define LDAP_VENDOR_NAME "IBM z/OS"
129251886Speter#endif
130251886Speter
131251886Speter/* Note: Macros defining const casting has been removed in APR v1.0,
132251886Speter * pending real support for LDAP v2.0 toolkits.
133251886Speter *
134251886Speter * In the mean time, please use an LDAP v3.0 toolkit.
135251886Speter */
136251886Speter#if LDAP_VERSION_MAX <= 2
137251886Speter#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit.
138251886Speter#endif
139251886Speter
140251886Speter#ifdef __cplusplus
141251886Speterextern "C" {
142251886Speter#endif /* __cplusplus */
143251886Speter
144251886Speter/**
145251886Speter * This structure allows the C LDAP API error codes to be returned
146251886Speter * along with plain text error messages that explain to us mere mortals
147251886Speter * what really happened.
148251886Speter */
149251886Spetertypedef struct apr_ldap_err_t {
150251886Speter    const char *reason;
151251886Speter    const char *msg;
152251886Speter    int rc;
153251886Speter} apr_ldap_err_t;
154251886Speter
155251886Speter#ifdef __cplusplus
156251886Speter}
157251886Speter#endif
158251886Speter
159252454Speter/* The MS SDK returns LDAP_UNAVAILABLE when the backend has closed the connection
160252454Speter * between LDAP calls. Protect with APR_HAS_MICROSOFT_LDAPSDK in case someone
161252454Speter * manually chooses another SDK on Windows
162252454Speter */
163252454Speter#if APR_HAS_MICROSOFT_LDAPSDK
164252454Speter#define APR_LDAP_IS_SERVER_DOWN(s)    ((s) == LDAP_SERVER_DOWN \
165252454Speter                                    || (s) == LDAP_UNAVAILABLE)
166252454Speter#else
167252454Speter#define APR_LDAP_IS_SERVER_DOWN(s)    ((s) == LDAP_SERVER_DOWN)
168252454Speter#endif
169252454Speter
170252454Speter/* These symbols are not actually exported in a DSO build, but mapped into
171252454Speter * a private exported function array for apr_ldap_stub to bind dynamically.
172252454Speter * Rename them appropriately to protect the global namespace.
173252454Speter */
174252454Speter#ifdef APU_DSO_LDAP_BUILD
175252454Speter
176252454Speter#define apr_ldap_info apr__ldap_info
177252454Speter#define apr_ldap_init apr__ldap_init
178252454Speter#define apr_ldap_ssl_init apr__ldap_ssl_init
179252454Speter#define apr_ldap_ssl_deinit apr__ldap_ssl_deinit
180252454Speter#define apr_ldap_get_option apr__ldap_get_option
181252454Speter#define apr_ldap_set_option apr__ldap_set_option
182252454Speter#define apr_ldap_rebind_init apr__ldap_rebind_init
183252454Speter#define apr_ldap_rebind_add apr__ldap_rebind_add
184252454Speter#define apr_ldap_rebind_remove apr__ldap_rebind_remove
185252454Speter
186252454Speter#define APU_DECLARE_LDAP(type) type
187252454Speter#else
188252454Speter#define APU_DECLARE_LDAP(type) APU_DECLARE(type)
189252454Speter#endif
190252454Speter
191251886Speter#include "apr_ldap_url.h"
192251886Speter#include "apr_ldap_init.h"
193251886Speter#include "apr_ldap_option.h"
194252454Speter#include "apr_ldap_rebind.h"
195251886Speter
196252454Speter#endif /* APR_HAS_LDAP */
197251886Speter/** @} */
198251886Speter#endif /* APU_LDAP_H */
199