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