int i = 0, j, crit = 0, err;
LDAPControl c[3], **ctrls;
- ctrls = (LDAPControl **)malloc( sizeof(c) + (count + 1)*sizeof(LDAPControl *) );
+ ctrls = (LDAPControl**) malloc(sizeof(c) + (count+1)*sizeof(LDAPControl*));
if ( ctrls == NULL ) {
fprintf( stderr, "No memory\n" );
exit( EXIT_FAILURE );
" -A retrieve attribute names only (no values)\n"
" -b basedn base dn for search\n"
" -E [!]<ctrl>[=<ctrlparam>] search controls (! indicates criticality)\n"
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+" [!]domainScope (domain scope)\n"
+#endif
" [!]mv=<filter> (matched values filter)\n"
#ifdef LDAP_CONTROL_PAGEDRESULTS
" [!]pr=<size> (paged results)\n"
" [!]subentries[=true|false] (subentries)\n"
#endif
#ifdef LDAP_CLIENT_UPDATE
-" [!]lcup= p/<cint>/<cookie>/<slimit> (client update)\n"
+" [!]lcup=p/<cint>/<cookie>/<slimit> (LDAP client update)\n"
/*
- * " s/<cint>/<cookie> (client update)\n"
+ * " s/<cint>/<cookie> (LDAP client update)\n"
* " sp/<cint>/<cookie>/<slimit>\n"
* */
#endif
#ifdef LDAP_SYNC
-" [!]sync= ro[/<cookie>] (ldap sync - refreshOnly)\n"
-" rp[/<cookie>][/<slimit>] (ldap sync - refreshAndPersist)\n"
+" [!]sync=ro[/<cookie>] (LDAP Sync refreshOnly)\n"
+" rp[/<cookie>][/<slimit>] (LDAP Sync refreshAndPersist)\n"
#endif
" -F prefix URL prefix for files (default: %s)\n"
" -l limit time limit (in seconds) for search\n"
static int subentries = 0, valuesReturnFilter = 0;
static char *vrFilter = NULL;
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+static int domainScope = 0;
+#endif
+
#if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
static int lcup = 0;
static int ldapsync = 0;
pagedResults = 1 + crit;
#endif
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+ } else if ( strcasecmp( control, "domainScope" ) == 0 ) {
+ if( domainScope ) {
+ fprintf( stderr,
+ "domainScope control previously specified\n");
+ exit( EXIT_FAILURE );
+ }
+ if( cvalue != NULL ) {
+ fprintf( stderr,
+ "domainScope: no control value expected\n" );
+ usage();
+ }
+
+ domainScope = 1 + crit;
+#endif
#ifdef LDAP_CONTROL_SUBENTRIES
} else if ( strcasecmp( control, "subentries" ) == 0 ) {
if( subentries ) {
getNextPage:
if ( manageDSAit || noop || subentries || valuesReturnFilter
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+ || domainScope
+#endif
#ifdef LDAP_CONTROL_PAGEDRESULTS
|| pageSize
#endif
) {
int err;
int i=0;
- LDAPControl c[3];
+ LDAPControl c[6];
+
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+ if ( domainScope ) {
+ c[i].ldctl_oid = LDAP_CONTROL_X_DOMAIN_SCOPE;
+ c[i].ldctl_value.bv_val = NULL;
+ c[i].ldctl_value.bv_len = 0;
+ c[i].ldctl_iscritical = domainScope > 1;
+ i++;
+ }
+#endif
#ifdef LDAP_CONTROL_SUBENTRIES
if ( subentries ) {
err = ber_printf( cuber, "{ei}", abs(lcup), lcup_cint );
} else {
err = ber_printf( cuber, "{ei{sO}}", abs(lcup), lcup_cint,
- LDAP_LCUP_COOKIE_OID, &lcup_cookie );
+ LDAP_CUP_COOKIE_OID, &lcup_cookie );
}
if ( err == LBER_ERROR ) {
#! /bin/sh
# $OpenLDAP$
-# from OpenLDAP: pkg/ldap/configure.in,v 1.456 2003/02/09 06:42:24 kurt Exp
+# from OpenLDAP: pkg/ldap/configure.in,v 1.408.2.29 2003/02/09 16:31:35 kurt Exp
# Copyright 1998-2003 The OpenLDAP Foundation. All Rights Reserved.
#
LTSTATIC=""
-if test -z "$LTDYNAMIC" -a "${OPENLDAP_CVS}"; then
+if test -z "$LTDYNAMIC"; then
LTSTATIC="-static"
fi
--- /dev/null
+/* Generic assert.h */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License. A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+#ifndef _AC_ASSERT_H
+#define _AC_ASSERT_H
+
+#undef assert
+
+#ifdef LDAP_DEBUG
+
+#if defined( HAVE_ASSERT_H ) || defined( STDC_HEADERS )
+
+#undef NDEBUG
+#include <assert.h>
+
+#else /* !(HAVE_ASSERT_H || STDC_HEADERS) */
+
+#define LDAP_NEED_ASSERT 1
+
+/*
+ * no assert()... must be a very old compiler.
+ * create a replacement and hope it works
+ */
+
+LBER_F (void) ber_pvt_assert LDAP_P(( const char *file, int line,
+ const char *test ));
+
+/* Can't use LDAP_STRING(test), that'd expand to "test" */
+#if defined(__STDC__) || defined(__cplusplus)
+#define assert(test) \
+ ((test) ? (void)0 : ber_pvt_assert( __FILE__, __LINE__, #test ) )
+#else
+#define assert(test) \
+ ((test) ? (void)0 : ber_pvt_assert( __FILE__, __LINE__, "test" ) )
+#endif
+
+#endif /* (HAVE_ASSERT_H || STDC_HEADERS) */
+
+#else /* !LDAP_DEBUG */
+/* no asserts */
+#define assert(test) ((void)0)
+#endif /* LDAP_DEBUG */
+
+#endif /* _AC_ASSERT_H */
--- /dev/null
+/* Generic bytes.h */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License. A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+#ifndef _AC_BYTES_H
+#define _AC_BYTES_H
+
+/* cross compilers should define both AC_INT{2,4}_TYPE in CPPFLAGS */
+
+#if !defined( AC_INT4_TYPE )
+ /* use autoconf defines to provide sized typedefs */
+# if SIZEOF_LONG == 4
+# define AC_INT4_TYPE long
+# elif SIZEOF_INT == 4
+# define AC_INT4_TYPE int
+# elif SIZEOF_SHORT == 4
+# define AC_INT4_TYPE short
+# else
+# error "AC_INT4_TYPE?"
+# endif
+#endif
+
+typedef AC_INT4_TYPE ac_int4;
+typedef signed AC_INT4_TYPE ac_sint4;
+typedef unsigned AC_INT4_TYPE ac_uint4;
+
+#if !defined( AC_INT2_TYPE )
+# if SIZEOF_SHORT == 2
+# define AC_INT2_TYPE short
+# elif SIZEOF_INT == 2
+# define AC_INT2_TYPE int
+# elif SIZEOF_LONG == 2
+# define AC_INT2_TYPE long
+# else
+# error "AC_INT2_TYPE?"
+# endif
+#endif
+
+#if defined( AC_INT2_TYPE )
+typedef AC_INT2_TYPE ac_int2;
+typedef signed AC_INT2_TYPE ac_sint2;
+typedef unsigned AC_INT2_TYPE ac_uint2;
+#endif
+
+#ifndef BYTE_ORDER
+/* cross compilers should define BYTE_ORDER in CPPFLAGS */
+
+/*
+ * Definitions for byte order, according to byte significance from low
+ * address to high.
+ */
+#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
+#define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
+#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
+
+/* assume autoconf's AC_C_BIGENDIAN has been ran */
+/* if it hasn't, we assume (maybe falsely) the order is LITTLE ENDIAN */
+# ifdef WORDS_BIGENDIAN
+# define BYTE_ORDER BIG_ENDIAN
+# else
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+#endif /* BYTE_ORDER */
+
+#endif /* _AC_BYTES_H */
/* Generic socket.h */
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
# define AC_GAI_STRERROR(x) (gai_strerror((x)))
# else
# define AC_GAI_STRERROR(x) (ldap_pvt_gai_strerror((x)))
- char * ldap_pvt_gai_strerror( int );
+ LDAP_F (char *) ldap_pvt_gai_strerror( int );
# endif
#endif
+#ifndef HAVE_GETPEEREID
+LDAP_LUTIL_F( int ) getpeereid( int s, uid_t *, gid_t * );
+#endif
+
#endif /* _AC_SOCKET_H_ */
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
BerElement *ber,
struct berval **bvPtr ));
+LBER_F( int )
+ber_flatten2 LDAP_P((
+ BerElement *ber,
+ struct berval *bv,
+ int alloc ));
+
/*
* LBER ber accessor functions
*/
#ifdef LDAP_CLIENT_UPDATE
#define LDAP_CONTROL_CLIENT_UPDATE "1.3.6.1.4.1.4203.666.5.3"
#define LDAP_CONTROL_ENTRY_UPDATE "1.3.6.1.4.1.4203.666.5.4"
-#define LDAP_CONTROL_CLIENT_UPDATE_DONE "1.3.6.1.4.1.4203.666.5.5"
-#define LDAP_LCUP_COOKIE_OID "1.3.6.1.4.1.4203.666.10.1"
+#define LDAP_CONTROL_CLIENT_UPDATE_DONE "1.3.6.1.4.1.4203.666.5.5"
+#define LDAP_CUP_COOKIE_OID "1.3.6.1.4.1.4203.666.10.1"
#endif
#ifdef LDAP_SYNC
-#define LDAP_CONTROL_SYNC "1.3.6.1.4.1.4203.666.5.6"
-#define LDAP_CONTROL_SYNC_STATE "1.3.6.1.4.1.4203.666.5.7"
-#define LDAP_CONTROL_SYNC_DONE "1.3.6.1.4.1.4203.666.5.8"
-#define LDAP_SYNC_INFO "1.3.6.1.4.1.4203.666.10.2"
+#define LDAP_CONTROL_SYNC "1.3.6.1.4.1.4203.666.5.6"
+#define LDAP_CONTROL_SYNC_STATE "1.3.6.1.4.1.4203.666.5.7"
+#define LDAP_CONTROL_SYNC_DONE "1.3.6.1.4.1.4203.666.5.8"
+#define LDAP_SYNC_INFO "1.3.6.1.4.1.4203.666.10.2"
-#define LDAP_SYNC_REFRESH_DONE 0
-#define LDAP_SYNC_NEW_COOKIE 1
+#define LDAP_SYNC_REFRESH_DONE 0
+#define LDAP_SYNC_NEW_COOKIE 1
#define LDAP_SYNC_PRESENT 0
#define LDAP_SYNC_ADD 1
#define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10"
#ifdef LDAP_DEVEL
-#define LDAP_CONTROL_PERMITMODIFY "1.2.840.113556.1.4.1413"
-#define LDAP_CONTROL_NOREFERRALS "1.2.840.113556.1.4.1339"
+#define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339"
+#define LDAP_CONTROL_X_PERMISSIVE_MODIFY "1.2.840.113556.1.4.1413"
#endif
/* LDAP Unsolicited Notifications */
#define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW ((ber_tag_t) 0x82U)
#define LDAP_TAG_EXOP_MODIFY_PASSWD_GEN ((ber_tag_t) 0x80U)
+#define LDAP_EXOP_X_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3"
+
#ifdef LDAP_DEVEL
#define LDAP_EXOP_X_CANCEL "1.3.6.1.4.1.4203.666.6.3"
#endif
-#define LDAP_EXOP_X_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3"
/* LDAP Features */
#define LDAP_FEATURE_ALL_OPERATIONAL_ATTRS "1.3.6.1.4.1.4203.1.5.1" /* + */
#define LDAP_TAG_SASL_RES_CREDS ((ber_tag_t) 0x87U) /* context specific + primitive */
#ifdef LDAP_CLIENT_UPDATE
-#define LDAP_TAG_INTERVAL ((ber_tag_t) 0x02U) /* integer */
-#define LDAP_LCUP_TAG_COOKIE ((ber_tag_t) 0x30U) /* sequence */
+#define LDAP_CUP_TAG_INTERVAL ((ber_tag_t) 0x02U) /* integer */
+#define LDAP_CUP_TAG_COOKIE ((ber_tag_t) 0x30U) /* sequence */
#endif
#ifdef LDAP_SYNC
/* possible operations a client can invoke */
-#define LDAP_REQ_BIND ((ber_tag_t) 0x60U) /* application + constructed */
-#define LDAP_REQ_UNBIND ((ber_tag_t) 0x42U) /* application + primitive */
-#define LDAP_REQ_SEARCH ((ber_tag_t) 0x63U) /* application + constructed */
-#define LDAP_REQ_MODIFY ((ber_tag_t) 0x66U) /* application + constructed */
-#define LDAP_REQ_ADD ((ber_tag_t) 0x68U) /* application + constructed */
-#define LDAP_REQ_DELETE ((ber_tag_t) 0x4aU) /* application + primitive */
-#define LDAP_REQ_MODDN ((ber_tag_t) 0x6cU) /* application + constructed */
-#define LDAP_REQ_MODRDN LDAP_REQ_MODDN
-#define LDAP_REQ_RENAME LDAP_REQ_MODDN
-#define LDAP_REQ_COMPARE ((ber_tag_t) 0x6eU) /* application + constructed */
-#define LDAP_REQ_ABANDON ((ber_tag_t) 0x50U) /* application + primitive */
-#define LDAP_REQ_EXTENDED ((ber_tag_t) 0x77U) /* application + constructed */
+#define LDAP_REQ_BIND ((ber_tag_t) 0x60U) /* application + constructed */
+#define LDAP_REQ_UNBIND ((ber_tag_t) 0x42U) /* application + primitive */
+#define LDAP_REQ_SEARCH ((ber_tag_t) 0x63U) /* application + constructed */
+#define LDAP_REQ_MODIFY ((ber_tag_t) 0x66U) /* application + constructed */
+#define LDAP_REQ_ADD ((ber_tag_t) 0x68U) /* application + constructed */
+#define LDAP_REQ_DELETE ((ber_tag_t) 0x4aU) /* application + primitive */
+#define LDAP_REQ_MODDN ((ber_tag_t) 0x6cU) /* application + constructed */
+#define LDAP_REQ_MODRDN LDAP_REQ_MODDN
+#define LDAP_REQ_RENAME LDAP_REQ_MODDN
+#define LDAP_REQ_COMPARE ((ber_tag_t) 0x6eU) /* application + constructed */
+#define LDAP_REQ_ABANDON ((ber_tag_t) 0x50U) /* application + primitive */
+#define LDAP_REQ_EXTENDED ((ber_tag_t) 0x77U) /* application + constructed */
/* possible result types a server can return */
-#define LDAP_RES_BIND ((ber_tag_t) 0x61U) /* application + constructed */
-#define LDAP_RES_SEARCH_ENTRY ((ber_tag_t) 0x64U) /* application + constructed */
+#define LDAP_RES_BIND ((ber_tag_t) 0x61U) /* application + constructed */
+#define LDAP_RES_SEARCH_ENTRY ((ber_tag_t) 0x64U) /* application + constructed */
#define LDAP_RES_SEARCH_REFERENCE ((ber_tag_t) 0x73U) /* V3: application + constructed */
-#define LDAP_RES_SEARCH_RESULT ((ber_tag_t) 0x65U) /* application + constructed */
-#define LDAP_RES_MODIFY ((ber_tag_t) 0x67U) /* application + constructed */
-#define LDAP_RES_ADD ((ber_tag_t) 0x69U) /* application + constructed */
-#define LDAP_RES_DELETE ((ber_tag_t) 0x6bU) /* application + constructed */
-#define LDAP_RES_MODDN ((ber_tag_t) 0x6dU) /* application + constructed */
-#define LDAP_RES_MODRDN LDAP_RES_MODDN /* application + constructed */
-#define LDAP_RES_RENAME LDAP_RES_MODDN /* application + constructed */
-#define LDAP_RES_COMPARE ((ber_tag_t) 0x6fU) /* application + constructed */
-#define LDAP_RES_EXTENDED ((ber_tag_t) 0x78U) /* V3: application + constructed */
+#define LDAP_RES_SEARCH_RESULT ((ber_tag_t) 0x65U) /* application + constructed */
+#define LDAP_RES_MODIFY ((ber_tag_t) 0x67U) /* application + constructed */
+#define LDAP_RES_ADD ((ber_tag_t) 0x69U) /* application + constructed */
+#define LDAP_RES_DELETE ((ber_tag_t) 0x6bU) /* application + constructed */
+#define LDAP_RES_MODDN ((ber_tag_t) 0x6dU) /* application + constructed */
+#define LDAP_RES_MODRDN LDAP_RES_MODDN /* application + constructed */
+#define LDAP_RES_RENAME LDAP_RES_MODDN /* application + constructed */
+#define LDAP_RES_COMPARE ((ber_tag_t) 0x6fU) /* application + constructed */
+#define LDAP_RES_EXTENDED ((ber_tag_t) 0x78U) /* V3: application + constructed */
#define LDAP_RES_EXTENDED_PARTIAL ((ber_tag_t) 0x79U) /* V3+: application + constructed */
#ifdef LDAP_DEVEL
#define LDAP_RES_INTERMEDIATE_RESP ((ber_tag_t) 0x7aU)
/* sasl methods */
-#define LDAP_SASL_SIMPLE ((char*)0)
-#define LDAP_SASL_NULL ("")
+#define LDAP_SASL_SIMPLE ((char*)0)
+#define LDAP_SASL_NULL ("")
/* authentication methods available */
-#define LDAP_AUTH_NONE ((ber_tag_t) 0x00U) /* no authentication */
-#define LDAP_AUTH_SIMPLE ((ber_tag_t) 0x80U) /* context specific + primitive */
-#define LDAP_AUTH_SASL ((ber_tag_t) 0xa3U) /* context specific + constructed */
-#define LDAP_AUTH_KRBV4 ((ber_tag_t) 0xffU) /* means do both of the following */
-#define LDAP_AUTH_KRBV41 ((ber_tag_t) 0x81U) /* context specific + primitive */
-#define LDAP_AUTH_KRBV42 ((ber_tag_t) 0x82U) /* context specific + primitive */
+#define LDAP_AUTH_NONE ((ber_tag_t) 0x00U) /* no authentication */
+#define LDAP_AUTH_SIMPLE ((ber_tag_t) 0x80U) /* context specific + primitive */
+#define LDAP_AUTH_SASL ((ber_tag_t) 0xa3U) /* context specific + constructed */
+#define LDAP_AUTH_KRBV4 ((ber_tag_t) 0xffU) /* means do both of the following */
+#define LDAP_AUTH_KRBV41 ((ber_tag_t) 0x81U) /* context specific + primitive */
+#define LDAP_AUTH_KRBV42 ((ber_tag_t) 0x82U) /* context specific + primitive */
/* filter types */
-#define LDAP_FILTER_AND ((ber_tag_t) 0xa0U) /* context specific + constructed */
-#define LDAP_FILTER_OR ((ber_tag_t) 0xa1U) /* context specific + constructed */
-#define LDAP_FILTER_NOT ((ber_tag_t) 0xa2U) /* context specific + constructed */
+#define LDAP_FILTER_AND ((ber_tag_t) 0xa0U) /* context specific + constructed */
+#define LDAP_FILTER_OR ((ber_tag_t) 0xa1U) /* context specific + constructed */
+#define LDAP_FILTER_NOT ((ber_tag_t) 0xa2U) /* context specific + constructed */
#define LDAP_FILTER_EQUALITY ((ber_tag_t) 0xa3U) /* context specific + constructed */
#define LDAP_FILTER_SUBSTRINGS ((ber_tag_t) 0xa4U) /* context specific + constructed */
-#define LDAP_FILTER_GE ((ber_tag_t) 0xa5U) /* context specific + constructed */
-#define LDAP_FILTER_LE ((ber_tag_t) 0xa6U) /* context specific + constructed */
+#define LDAP_FILTER_GE ((ber_tag_t) 0xa5U) /* context specific + constructed */
+#define LDAP_FILTER_LE ((ber_tag_t) 0xa6U) /* context specific + constructed */
#define LDAP_FILTER_PRESENT ((ber_tag_t) 0x87U) /* context specific + primitive */
#define LDAP_FILTER_APPROX ((ber_tag_t) 0xa8U) /* context specific + constructed */
-#define LDAP_FILTER_EXT ((ber_tag_t) 0xa9U) /* context specific + constructed */
+#define LDAP_FILTER_EXT ((ber_tag_t) 0xa9U) /* context specific + constructed */
/* extended filter component types */
-#define LDAP_FILTER_EXT_OID ((ber_tag_t) 0x81U) /* context specific */
+#define LDAP_FILTER_EXT_OID ((ber_tag_t) 0x81U) /* context specific */
#define LDAP_FILTER_EXT_TYPE ((ber_tag_t) 0x82U) /* context specific */
#define LDAP_FILTER_EXT_VALUE ((ber_tag_t) 0x83U) /* context specific */
#define LDAP_FILTER_EXT_DNATTRS ((ber_tag_t) 0x84U) /* context specific */
/* substring filter component types */
#define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */
-#define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */
+#define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */
#define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */
/* search scopes */
/* substring filter component types */
#define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */
-#define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */
+#define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */
#define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */
/*
#define LDAP_RANGE(n,x,y) (((x) <= (n)) && ((n) <= (y)))
-#define LDAP_SUCCESS 0x00
+#define LDAP_SUCCESS 0x00
#define LDAP_OPERATIONS_ERROR 0x01
-#define LDAP_PROTOCOL_ERROR 0x02
+#define LDAP_PROTOCOL_ERROR 0x02
#define LDAP_TIMELIMIT_EXCEEDED 0x03
#define LDAP_SIZELIMIT_EXCEEDED 0x04
-#define LDAP_COMPARE_FALSE 0x05
-#define LDAP_COMPARE_TRUE 0x06
+#define LDAP_COMPARE_FALSE 0x05
+#define LDAP_COMPARE_TRUE 0x06
#define LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07
#define LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_AUTH_METHOD_NOT_SUPPORTED
#define LDAP_STRONG_AUTH_REQUIRED 0x08
#define LDAP_ATTR_ERROR(n) LDAP_RANGE((n),0x10,0x15) /* 16-21 */
#define LDAP_NO_SUCH_ATTRIBUTE 0x10
-#define LDAP_UNDEFINED_TYPE 0x11
+#define LDAP_UNDEFINED_TYPE 0x11
#define LDAP_INAPPROPRIATE_MATCHING 0x12
#define LDAP_CONSTRAINT_VIOLATION 0x13
#define LDAP_TYPE_OR_VALUE_EXISTS 0x14
-#define LDAP_INVALID_SYNTAX 0x15
+#define LDAP_INVALID_SYNTAX 0x15
#define LDAP_NAME_ERROR(n) LDAP_RANGE((n),0x20,0x24) /* 32-34,36 */
-#define LDAP_NO_SUCH_OBJECT 0x20
-#define LDAP_ALIAS_PROBLEM 0x21
+#define LDAP_NO_SUCH_OBJECT 0x20
+#define LDAP_ALIAS_PROBLEM 0x21
#define LDAP_INVALID_DN_SYNTAX 0x22
-#define LDAP_IS_LEAF 0x23 /* not LDAPv3 */
+#define LDAP_IS_LEAF 0x23 /* not LDAPv3 */
#define LDAP_ALIAS_DEREF_PROBLEM 0x24
#define LDAP_SECURITY_ERROR(n) LDAP_RANGE((n),0x2F,0x32) /* 47-50 */
#define LDAP_SERVICE_ERROR(n) LDAP_RANGE((n),0x33,0x36) /* 51-54 */
-#define LDAP_BUSY 0x33
-#define LDAP_UNAVAILABLE 0x34
+#define LDAP_BUSY 0x33
+#define LDAP_UNAVAILABLE 0x34
#define LDAP_UNWILLING_TO_PERFORM 0x35
-#define LDAP_LOOP_DETECT 0x36
+#define LDAP_LOOP_DETECT 0x36
#define LDAP_UPDATE_ERROR(n) LDAP_RANGE((n),0x40,0x47) /* 64-69,71 */
#define LDAP_OBJECT_CLASS_VIOLATION 0x41
#define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42
#define LDAP_NOT_ALLOWED_ON_RDN 0x43
-#define LDAP_ALREADY_EXISTS 0x44
+#define LDAP_ALREADY_EXISTS 0x44
#define LDAP_NO_OBJECT_CLASS_MODS 0x45
#define LDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */
#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 /* LDAPv3 */
-#define LDAP_OTHER 0x50
+#define LDAP_OTHER 0x50
#define LDAP_API_ERROR(n) LDAP_RANGE((n),0x51,0x61) /* 81-97 */
#define LDAP_API_RESULT(n) (((n) == LDAP_SUCCESS) || \
- LDAP_RANGE((n),0x51,0x61)) /* 0,81-97 */
+ LDAP_RANGE((n),0x51,0x61)) /* 0,81-97 */
/* reserved for APIs */
#define LDAP_SERVER_DOWN 0x51
#define LDAP_NO_SUCH_OPERATION 0x111
#define LDAP_TOO_LATE 0x112
#define LDAP_CANNOT_CANCEL 0x113
-
-#define LDAP_CANCEL_NONE 0x00
-#define LDAP_CANCEL_REQ 0x01
-#define LDAP_CANCEL_ACK 0x02
-#define LDAP_CANCEL_DONE 0x03
#endif
#ifdef LDAP_CLIENT_UPDATE
typedef struct ldapmod {
int mod_op;
-#define LDAP_MOD_ADD ((ber_int_t) 0x0000)
-#define LDAP_MOD_DELETE ((ber_int_t) 0x0001)
-#define LDAP_MOD_REPLACE ((ber_int_t) 0x0002)
-#define LDAP_MOD_BVALUES ((ber_int_t) 0x0080)
+#define LDAP_MOD_ADD (0x0000)
+#define LDAP_MOD_DELETE (0x0001)
+#define LDAP_MOD_REPLACE (0x0002)
+#define LDAP_MOD_BVALUES (0x0080)
/* IMPORTANT: do not use code 0x1000 (or above),
* it is used internally by the backends!
* (see ldap/servers/slapd/slap.h)
*/
typedef struct ldap LDAP;
-#define LDAP_DEREF_NEVER 0x00
+#define LDAP_DEREF_NEVER 0x00
#define LDAP_DEREF_SEARCHING 0x01
-#define LDAP_DEREF_FINDING 0x02
-#define LDAP_DEREF_ALWAYS 0x03
+#define LDAP_DEREF_FINDING 0x02
+#define LDAP_DEREF_ALWAYS 0x03
-#define LDAP_NO_LIMIT 0
+#define LDAP_NO_LIMIT 0
/* how many messages to retrieve results for */
-#define LDAP_MSG_ONE 0x00
-#define LDAP_MSG_ALL 0x01
-#define LDAP_MSG_RECEIVED 0x02
+#define LDAP_MSG_ONE 0x00
+#define LDAP_MSG_ALL 0x01
+#define LDAP_MSG_RECEIVED 0x02
/*
* types for ldap URL handling
LDAP *ld,
LDAP_CONST char *who ));
-/*
- * in cache.c
- * (deprecated)
- */
-LDAP_F( int )
-ldap_enable_cache LDAP_P(( LDAP *ld, long timeout, ber_len_t maxmem ));
-
-LDAP_F( void )
-ldap_disable_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_set_cache_options LDAP_P(( LDAP *ld, unsigned long opts ));
-
-LDAP_F( void )
-ldap_destroy_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_flush_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_uncache_entry LDAP_P(( LDAP *ld, LDAP_CONST char *dn ));
-
-LDAP_F( void )
-ldap_uncache_request LDAP_P(( LDAP *ld, int msgid ));
-
/*
* LDAP Cancel Extended Operation <draft-zeilenga-ldap-cancel-xx.txt>
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#define LDAP_RUNDIR "%RUNDIR%"
#endif
-/* command locations */
-#ifndef LDAP_EDITOR
-#define LDAP_EDITOR "%EDITOR%"
-#endif
-#ifndef LDAP_SENDMAIL
-#define LDAP_SENDMAIL "%SENDMAIL%"
-#endif
-
#endif /* _LDAP_CONFIG_H */
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted only
#define LDAP_RUNDIR LDAP_PREFIX "\\run"
#endif
-/* command locations */
-#ifndef LDAP_EDITOR
-#define LDAP_EDITOR "%EDITOR%"
-#endif
-#ifndef LDAP_SENDMAIL
-#define LDAP_SENDMAIL "%SENDMAIL%"
-#endif
-
#endif /* _LDAP_CONFIG_H */
--- /dev/null
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License. A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+/*
+ * LDAP Features
+ */
+
+#ifndef _LDAP_FEATURES_H
+#define _LDAP_FEATURES_H 1
+
+/* OpenLDAP API version macros */
+#undef LDAP_VENDOR_VERSION
+#undef LDAP_VENDOR_VERSION_MAJOR
+#undef LDAP_VENDOR_VERSION_MINOR
+#undef LDAP_VENDOR_VERSION_PATCH
+
+/*
+** WORK IN PROGRESS!
+**
+** OpenLDAP reentrancy/thread-safeness should be dynamically
+** checked using ldap_get_option().
+**
+** The -lldap implementation is not thread-safe.
+**
+** The -lldap_r implementation is:
+** LDAP_API_FEATURE_THREAD_SAFE (basic thread safety)
+** but also be:
+** LDAP_API_FEATURE_SESSION_THREAD_SAFE
+** LDAP_API_FEATURE_OPERATION_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+** can be used to determine if -lldap_r is available at compile
+** time. You must define LDAP_THREAD_SAFE if and only if you
+** link with -lldap_r.
+**
+** If you fail to define LDAP_THREAD_SAFE when linking with
+** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap,
+** provided header definations and declarations may be incorrect.
+**
+*/
+
+/* is -lldap_r available or not */
+#undef LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+
+/* LDAP v2 Kerberos Bind */
+#undef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
+
+/* LDAP v2 Referrals */
+#undef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
+
+/* LDAP Server Side Sort. */
+#define LDAP_API_FEATURE_SERVER_SIDE_SORT 1000
+
+/* LDAP Virtual List View. */
+#define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1000
+
+#endif /* LDAP_FEATURES */
--- /dev/null
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License. A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+/*
+ * LDAP Features
+ */
+#ifndef _LDAP_FEATURES_H
+#define _LDAP_FEATURES_H 1
+
+/* OpenLDAP API version macros */
+#define LDAP_VENDOR_VERSION 0
+#define LDAP_VENDOR_VERSION_MAJOR 2
+#define LDAP_VENDOR_VERSION_MINOR X
+#define LDAP_VENDOR_VERSION_PATCH X
+
+/*
+** WORK IN PROGRESS!
+**
+** OpenLDAP reentrancy/thread-safeness should be dynamically
+** checked using ldap_get_option().
+**
+** The -lldap implementation may or may not be:
+** LDAP_API_FEATURE_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_REENTRANT can
+** be used to determine if -lldap is LDAP_API_FEATURE_THREAD_SAFE at
+** compile time.
+**
+** The -lldap_r implementation is always THREAD_SAFE but
+** may also be:
+** LDAP_API_FEATURE_SESSION_THREAD_SAFE
+** LDAP_API_FEATURE_OPERATION_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+** can be used to determine if -lldap_r is availalbe at compile
+** time. You must define LDAP_THREAD_SAFE if and only if you
+** link with -lldap_r.
+**
+** If you fail to define LDAP_THREAD_SAFE when linking with
+** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap,
+** provided header definations and declarations may be incorrect.
+**
+*/
+
+/* is -lldap reentrant or not */
+/* #undef LDAP_API_FEATURE_X_OPENLDAP_REENTRANT */
+
+/* is threadsafe version of -lldap (ie: -lldap_r) *available* or not */
+#define LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE LDAP_VENDOR_VERSION
+
+/* LDAP v2 Referrals */
+#define LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS LDAP_VENDOR_VERSION
+
+/* LDAP Server Side Sort. */
+#define LDAP_API_FEATURE_SERVER_SIDE_SORT 1000
+
+/* LDAP Virtual List View. Version = 1000 + draft revision.
+ * VLV requires Server Side Sort control.
+ */
+#define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1000
+
+#endif /* LDAP_FEATURES */
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
LDAP_F( int )
ldap_pvt_thread_mutex_unlock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+LDAP_F( ldap_pvt_thread_t )
+ldap_pvt_thread_self LDAP_P(( void ));
+
#ifndef LDAP_THREAD_HAVE_RDWR
typedef struct ldap_int_thread_rdwr_s * ldap_pvt_thread_rdwr_t;
#endif
void *data,
ldap_pvt_thread_pool_keyfree_t *kfree ));
+LDAP_F( void *)
+ldap_pvt_thread_pool_context LDAP_P((
+ ldap_pvt_thread_pool_t *pool ));
LDAP_END_DECL
/* include/portable.nt -- manually updated of MS NT (MS VC5) */
/* synced with portable.h.in 1.191 */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
/* Define if you have the recvfrom function. */
/* #undef HAVE_RECVFROM */
-/* Define if you have the recvmsg function. */
-/* #undef HAVE_RECVMSG */
-
/* Define if you have the sched_yield function. */
/* #undef HAVE_SCHED_YIELD */
SRCS = bind.c open.c result.c error.c compare.c search.c \
controls.c messages.c references.c extended.c cyrus.c \
- modify.c add.c modrdn.c delete.c abandon.c cache.c \
- sasl.c sbind.c kbind.c unbind.c cancel.c \
+ modify.c add.c modrdn.c delete.c abandon.c \
+ sasl.c sbind.c kbind.c unbind.c cancel.c \
filter.c free.c sort.c passwd.c whoami.c \
getdn.c getentry.c getattr.c getvalues.c addentry.c \
request.c os-ip.c url.c sortctrl.c vlvctrl.c \
charray.c tls.c os-local.c dnssrv.c utf-8.c utf-8-conv.c
OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \
controls.lo messages.lo references.lo extended.lo cyrus.lo \
- modify.lo add.lo modrdn.lo delete.lo abandon.lo cache.lo \
+ modify.lo add.lo modrdn.lo delete.lo abandon.lo \
sasl.lo sbind.lo kbind.lo unbind.lo cancel.lo \
filter.lo free.lo sort.lo passwd.lo whoami.lo \
getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
return( ld->ld_errno );
}
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- if ( ldap_check_cache( ld, LDAP_REQ_COMPARE, ber ) == 0 ) {
- ber_free( ber, 1 );
- ld->ld_errno = LDAP_SUCCESS;
- *msgidp = ld->ld_msgid;
- return( ld->ld_errno );
- }
- ldap_add_request_to_cache( ld, LDAP_REQ_COMPARE, ber );
- }
-#endif /* LDAP_NOCACHE */
/* send the message */
*msgidp = ldap_send_initial_request( ld, LDAP_REQ_COMPARE, dn, ber );
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
LDAP_FREE( cred );
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- ldap_flush_cache( ld );
- }
-#endif /* !LDAP_NOCACHE */
/* send the message */
return ( ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber ));
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
#include <ac/string.h>
#include <ac/time.h>
+#include <ac/unistd.h>
+
#include "ldap-int.h"
#include "ldap_log.h"
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
}
#undef TRACE
+#if !defined(HAVE_GETPEEREID) && !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && defined(HAVE_SENDMSG)
+#define DO_SENDMSG
+#endif
+
static int
ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
{
if ( ldap_pvt_ndelay_off(ld, s) == -1 ) {
return ( -1 );
}
+#ifdef DO_SENDMSG
+ /* Send a dummy message with access rights. Remote side will
+ * obtain our uid/gid by fstat'ing this descriptor.
+ */
+sendcred: {
+ int fds[2];
+ struct iovec iov = {(char *)fds, sizeof(int)};
+ struct msghdr msg = {0};
+ if (pipe(fds) == 0) {
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+ msg.msg_accrights = (char *)fds;
+ msg.msg_accrightslen = sizeof(int);
+ sendmsg( s, &msg, 0 );
+ close(fds[0]);
+ close(fds[1]);
+ }
+ }
+#endif
return ( 0 );
}
return ( -1 );
if ( ldap_pvt_ndelay_off(ld, s) == -1 )
return ( -1 );
+#ifdef DO_SENDMSG
+ goto sendcred;
+#else
return ( 0 );
+#endif
}
oslocal_debug(ld, "ldap_connect_timeout: timed out\n",0,0,0);
ldap_pvt_set_errno( ETIMEDOUT );
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
new->lm_msgtype = tag;
new->lm_ber = ber;
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- ldap_add_result_to_cache( ld, new );
- }
-#endif /* LDAP_NOCACHE */
/* is this the one we're looking for? */
if ( msgid == LDAP_RES_ANY || id == msgid ) {
prev->lm_next = l->lm_next;
*result = l;
ld->ld_errno = LDAP_SUCCESS;
-#ifdef LDAP_WORLD_P16
- /*
- * XXX questionable fix; see text for [P16] on
- * http://www.critical-angle.com/ldapworld/patch/
- *
- * inclusion of this patch causes searchs to hang on
- * multiple platforms
- */
- return( l->lm_msgtype );
-#else /* LDAP_WORLD_P16 */
return( tag );
-#endif /* !LDAP_WORLD_P16 */
}
leave:
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
return ld->ld_errno;
}
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- ldap_flush_cache( ld );
- }
-#endif /* !LDAP_NOCACHE */
/* send the message */
*msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber );
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
return ld->ld_errno;
}
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- if ( ldap_check_cache( ld, LDAP_REQ_SEARCH, ber ) == 0 ) {
- ber_free( ber, 1 );
- ld->ld_errno = LDAP_SUCCESS;
- *msgidp = ld->ld_msgid;
- return ld->ld_errno;
- }
- ldap_add_request_to_cache( ld, LDAP_REQ_SEARCH, ber );
- }
-#endif /* LDAP_NOCACHE */
/* send the message */
*msgidp = ldap_send_initial_request( ld, LDAP_REQ_SEARCH, base, ber );
return( -1 );
}
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- if ( ldap_check_cache( ld, LDAP_REQ_SEARCH, ber ) == 0 ) {
- ber_free( ber, 1 );
- ld->ld_errno = LDAP_SUCCESS;
- return( ld->ld_msgid );
- }
- ldap_add_request_to_cache( ld, LDAP_REQ_SEARCH, ber );
- }
-#endif /* LDAP_NOCACHE */
/* send the message */
return ( ldap_send_initial_request( ld, LDAP_REQ_SEARCH, base, ber ));
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
static void print_search_entry LDAP_P(( LDAP *ld, LDAPMessage *res ));
static void free_list LDAP_P(( char **list ));
-#define NOCACHEERRMSG "don't compile with -DLDAP_NOCACHE if you desire local caching"
-
static char *dnsuffix;
#ifndef HAVE_GETLINE
strcpy( dnsuffix, line );
break;
- case 'e': /* enable cache */
-#ifdef LDAP_NOCACHE
- printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
- getline( line, sizeof(line), stdin, "Cache timeout (secs)? " );
- i = atoi( line );
- getline( line, sizeof(line), stdin, "Maximum memory to use (bytes)? " );
- if ( ldap_enable_cache( ld, i, atoi( line )) == 0 ) {
- printf( "local cache is on\n" );
- } else {
- printf( "ldap_enable_cache failed\n" );
- }
-#endif /* LDAP_NOCACHE */
- break;
-
- case 'x': /* uncache entry */
-#ifdef LDAP_NOCACHE
- printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
- getline( line, sizeof(line), stdin, "DN? " );
- ldap_uncache_entry( ld, line );
-#endif /* LDAP_NOCACHE */
- break;
-
- case 'X': /* uncache request */
-#ifdef LDAP_NOCACHE
- printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
- getline( line, sizeof(line), stdin, "request msgid? " );
- ldap_uncache_request( ld, atoi( line ));
-#endif /* LDAP_NOCACHE */
- break;
-
case 'o': /* set ldap options */
getline( line, sizeof(line), stdin, "alias deref (0=never, 1=searching, 2=finding, 3=always)?" );
ld->ld_deref = atoi( line );
}
break;
- case 'O': /* set cache options */
-#ifdef LDAP_NOCACHE
- printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
- getline( line, sizeof(line), stdin, "cache errors (0=smart, 1=never, 2=always)?" );
- switch( atoi( line )) {
- case 0:
- ldap_set_cache_options( ld, 0 );
- break;
- case 1:
- ldap_set_cache_options( ld,
- LDAP_CACHE_OPT_CACHENOERRS );
- break;
- case 2:
- ldap_set_cache_options( ld,
- LDAP_CACHE_OPT_CACHEALLERRS );
- break;
- default:
- printf( "not a valid cache option\n" );
- }
-#endif /* LDAP_NOCACHE */
- break;
-
case '?': /* help */
- printf( "Commands: [ad]d [ab]andon [b]ind\n" );
- printf( " [B]ind async [c]ompare\n" );
- printf( " [modi]fy [modr]dn [rem]ove\n" );
- printf( " [res]ult [s]earch [q]uit/unbind\n\n" );
- printf( " [d]ebug [e]nable cache set ms[g]id\n" );
- printf( " d[n]suffix [t]imeout [v]ersion\n" );
- printf( " [?]help [o]ptions [O]cache options\n" );
- printf( " [E]xplode dn [p]arse LDAP URL\n" );
- printf( " [x]uncache entry [X]uncache request\n" );
+ printf(
+"Commands: [ad]d [ab]andon [b]ind\n"
+" [B]ind async [c]ompare\n"
+" [modi]fy [modr]dn [rem]ove\n"
+" [res]ult [s]earch [q]uit/unbind\n\n"
+" [d]ebug set ms[g]id\n"
+" d[n]suffix [t]imeout [v]ersion\n"
+" [?]help [o]ptions"
+" [E]xplode dn [p]arse LDAP URL\n" );
break;
default:
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
ldap_msgfree( lm );
}
-#ifndef LDAP_NOCACHE
- if ( ld->ld_cache != NULL ) {
- ldap_destroy_cache( ld );
- ld->ld_cache = NULL;
- }
-#endif /* !LDAP_NOCACHE */
if ( ld->ld_error != NULL ) {
LDAP_FREE( ld->ld_error );
XXSRCS = apitest.c test.c \
bind.c open.c result.c error.c compare.c search.c \
controls.c messages.c references.c extended.c cyrus.c \
- modify.c add.c modrdn.c delete.c abandon.c cache.c \
- sasl.c sbind.c kbind.c unbind.c \
+ modify.c add.c modrdn.c delete.c abandon.c \
+ sasl.c sbind.c kbind.c unbind.c cancel.c \
filter.c free.c sort.c passwd.c whoami.c \
getdn.c getentry.c getattr.c getvalues.c addentry.c \
request.c os-ip.c url.c sortctrl.c vlvctrl.c \
thr_pth.lo thr_stub.lo \
bind.lo open.lo result.lo error.lo compare.lo search.lo \
controls.lo messages.lo references.lo extended.lo cyrus.lo \
- modify.lo add.lo modrdn.lo delete.lo abandon.lo cache.lo \
- sasl.lo sbind.lo kbind.lo unbind.lo \
+ modify.lo add.lo modrdn.lo delete.lo abandon.lo \
+ sasl.lo sbind.lo kbind.lo unbind.lo cancel.lo \
filter.lo free.lo sort.lo passwd.lo whoami.lo \
getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \
request.lo os-ip.lo url.lo sortctrl.lo vlvctrl.lo \
*/
static void
rewrite_var_free(
- struct rewrite_var *var
+ void *v_var
)
{
+ struct rewrite_var *var = v_var;
assert( var != NULL );
assert( var->lv_name != NULL );
Avlnode *tree
)
{
- avl_free( tree, ( AVL_FREE )rewrite_var_free );
+ avl_free( tree, rewrite_var_free );
return REWRITE_SUCCESS;
}