1251876Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2251876Speter * contributor license agreements. See the NOTICE file distributed with 3251876Speter * this work for additional information regarding copyright ownership. 4251876Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5251876Speter * (the "License"); you may not use this file except in compliance with 6251876Speter * the License. You may obtain a copy of the License at 7251876Speter * 8251876Speter * http://www.apache.org/licenses/LICENSE-2.0 9251876Speter * 10251876Speter * Unless required by applicable law or agreed to in writing, software 11251876Speter * distributed under the License is distributed on an "AS IS" BASIS, 12251876Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13251876Speter * See the License for the specific language governing permissions and 14251876Speter * limitations under the License. 15251876Speter */ 16251876Speter 17251876Speter/* 18251876Speter * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h 19251876Speter */ 20251876Speter/** 21251876Speter * @file apr_ldap.h 22251876Speter * @brief APR-UTIL LDAP 23251876Speter */ 24251876Speter#ifndef APU_LDAP_H 25251876Speter#define APU_LDAP_H 26251876Speter 27251876Speter/** 28251876Speter * @defgroup APR_Util_LDAP LDAP 29251876Speter * @ingroup APR_Util 30251876Speter * @{ 31251876Speter */ 32251876Speter 33251876Speter/* this will be defined if LDAP support was compiled into apr-util */ 34251876Speter#define APR_HAS_LDAP @apu_has_ldap@ 35251876Speter 36251876Speter/* identify the LDAP toolkit used */ 37251876Speter#define APR_HAS_NETSCAPE_LDAPSDK @apu_has_ldap_netscape@ 38251876Speter#define APR_HAS_SOLARIS_LDAPSDK @apu_has_ldap_solaris@ 39251876Speter#define APR_HAS_NOVELL_LDAPSDK @apu_has_ldap_novell@ 40251876Speter#define APR_HAS_MOZILLA_LDAPSDK @apu_has_ldap_mozilla@ 41251876Speter#define APR_HAS_OPENLDAP_LDAPSDK @apu_has_ldap_openldap@ 42251876Speter#define APR_HAS_MICROSOFT_LDAPSDK @apu_has_ldap_microsoft@ 43251876Speter#define APR_HAS_TIVOLI_LDAPSDK @apu_has_ldap_tivoli@ 44251876Speter#define APR_HAS_ZOS_LDAPSDK @apu_has_ldap_zos@ 45251876Speter#define APR_HAS_OTHER_LDAPSDK @apu_has_ldap_other@ 46251876Speter 47251876Speter 48251876Speter/* 49251876Speter * Handle the case when LDAP is enabled 50251876Speter */ 51251876Speter#if APR_HAS_LDAP 52251876Speter 53251876Speter/* 54251876Speter * The following #defines are DEPRECATED and should not be used for 55251876Speter * anything. They remain to maintain binary compatibility. 56251876Speter * The original code defined the OPENLDAP SDK as present regardless 57251876Speter * of what really was there, which was way bogus. In addition, the 58251876Speter * apr_ldap_url_parse*() functions have been rewritten specifically for 59251876Speter * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. 60251876Speter */ 61251876Speter#if APR_HAS_TIVOLI_LDAPSDK 62251876Speter#define APR_HAS_LDAP_SSL 0 63251876Speter#else 64251876Speter#define APR_HAS_LDAP_SSL 1 65251876Speter#endif 66251876Speter#define APR_HAS_LDAP_URL_PARSE 0 67251876Speter 68251876Speter#if APR_HAS_OPENLDAP_LDAPSDK && !defined(LDAP_DEPRECATED) 69251876Speter/* Ensure that the "deprecated" interfaces are still exposed 70251876Speter * with OpenLDAP >= 2.3; these were exposed by default in earlier 71251876Speter * releases. */ 72251876Speter#define LDAP_DEPRECATED 1 73251876Speter#endif 74251876Speter 75251876Speter/* 76251876Speter * Include the standard LDAP header files. 77251876Speter */ 78251876Speter 79251876Speter@lber_h@ 80251876Speter@ldap_h@ 81251876Speter@ldap_ssl_h@ 82251876Speter 83251876Speter 84251876Speter/* 85251876Speter * Detected standard functions 86251876Speter */ 87251876Speter#define APR_HAS_LDAPSSL_CLIENT_INIT @apu_has_ldapssl_client_init@ 88251876Speter#define APR_HAS_LDAPSSL_CLIENT_DEINIT @apu_has_ldapssl_client_deinit@ 89251876Speter#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT @apu_has_ldapssl_add_trusted_cert@ 90251876Speter#define APR_HAS_LDAP_START_TLS_S @apu_has_ldap_start_tls_s@ 91251876Speter#define APR_HAS_LDAP_SSLINIT @apu_has_ldap_sslinit@ 92251876Speter#define APR_HAS_LDAPSSL_INIT @apu_has_ldapssl_init@ 93251876Speter#define APR_HAS_LDAPSSL_INSTALL_ROUTINES @apu_has_ldapssl_install_routines@ 94251876Speter 95251876Speter/* 96251876Speter * Make sure the secure LDAP port is defined 97251876Speter */ 98251876Speter#ifndef LDAPS_PORT 99251876Speter#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ 100251876Speter#endif 101251876Speter 102251876Speter/* 103251876Speter * For ldap function calls that input a size limit on the number of returned elements 104251876Speter * Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0) 105251876Speter * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK 106251876Speter * or process is configured for. 107251876Speter */ 108251876Speter#ifdef LDAP_DEFAULT_LIMIT 109251876Speter#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT 110251876Speter#else 111251876Speter#ifdef LDAP_NO_LIMIT 112251876Speter#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT 113251876Speter#endif 114251876Speter#endif 115251876Speter 116251876Speter#ifndef APR_LDAP_SIZELIMIT 117251876Speter#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */ 118251876Speter#endif 119251876Speter 120251876Speter/* 121251876Speter * z/OS is missing some defines 122251876Speter */ 123251876Speter#ifndef LDAP_VERSION_MAX 124251876Speter#define LDAP_VERSION_MAX LDAP_VERSION 125251876Speter#endif 126251876Speter#if APR_HAS_ZOS_LDAPSDK 127251876Speter#define LDAP_VENDOR_NAME "IBM z/OS" 128251876Speter#endif 129251876Speter 130251876Speter/* Note: Macros defining const casting has been removed in APR v1.0, 131251876Speter * pending real support for LDAP v2.0 toolkits. 132251876Speter * 133251876Speter * In the mean time, please use an LDAP v3.0 toolkit. 134251876Speter */ 135251876Speter#if LDAP_VERSION_MAX <= 2 136251876Speter#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. 137251876Speter#endif 138251876Speter 139251876Speter#ifdef __cplusplus 140251876Speterextern "C" { 141251876Speter#endif /* __cplusplus */ 142251876Speter 143251876Speter/** 144251876Speter * This structure allows the C LDAP API error codes to be returned 145251876Speter * along with plain text error messages that explain to us mere mortals 146251876Speter * what really happened. 147251876Speter */ 148251876Spetertypedef struct apr_ldap_err_t { 149251876Speter const char *reason; 150251876Speter const char *msg; 151251876Speter int rc; 152251876Speter} apr_ldap_err_t; 153251876Speter 154251876Speter#ifdef __cplusplus 155251876Speter} 156251876Speter#endif 157251876Speter 158251876Speter/* The MS SDK returns LDAP_UNAVAILABLE when the backend has closed the connection 159251876Speter * between LDAP calls. Protect with APR_HAS_MICROSOFT_LDAPSDK in case someone 160251876Speter * manually chooses another SDK on Windows 161251876Speter */ 162251876Speter#if APR_HAS_MICROSOFT_LDAPSDK 163251876Speter#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN \ 164251876Speter || (s) == LDAP_UNAVAILABLE) 165251876Speter#else 166251876Speter#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN) 167251876Speter#endif 168251876Speter 169251876Speter/* These symbols are not actually exported in a DSO build, but mapped into 170251876Speter * a private exported function array for apr_ldap_stub to bind dynamically. 171251876Speter * Rename them appropriately to protect the global namespace. 172251876Speter */ 173251876Speter#ifdef APU_DSO_LDAP_BUILD 174251876Speter 175251876Speter#define apr_ldap_info apr__ldap_info 176251876Speter#define apr_ldap_init apr__ldap_init 177251876Speter#define apr_ldap_ssl_init apr__ldap_ssl_init 178251876Speter#define apr_ldap_ssl_deinit apr__ldap_ssl_deinit 179251876Speter#define apr_ldap_get_option apr__ldap_get_option 180251876Speter#define apr_ldap_set_option apr__ldap_set_option 181251876Speter#define apr_ldap_rebind_init apr__ldap_rebind_init 182251876Speter#define apr_ldap_rebind_add apr__ldap_rebind_add 183251876Speter#define apr_ldap_rebind_remove apr__ldap_rebind_remove 184251876Speter 185251876Speter#define APU_DECLARE_LDAP(type) type 186251876Speter#else 187251876Speter#define APU_DECLARE_LDAP(type) APU_DECLARE(type) 188251876Speter#endif 189251876Speter 190251876Speter#include "apr_ldap_url.h" 191251876Speter#include "apr_ldap_init.h" 192251876Speter#include "apr_ldap_option.h" 193251876Speter#include "apr_ldap_rebind.h" 194251876Speter 195251876Speter#endif /* APR_HAS_LDAP */ 196251876Speter/** @} */ 197251876Speter#endif /* APU_LDAP_H */ 198