mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-18 18:18:06 -05:00
Round 2 of changes from HEAD
This commit is contained in:
parent
6d6766c7db
commit
4a3dc100a2
26 changed files with 468 additions and 293 deletions
|
|
@ -653,7 +653,7 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
|
|||
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 );
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ usage( void )
|
|||
" -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"
|
||||
|
|
@ -72,15 +75,15 @@ usage( void )
|
|||
" [!]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"
|
||||
|
|
@ -153,6 +156,10 @@ static int includeufn, vals2tmp = 0, ldif = 0;
|
|||
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;
|
||||
|
|
@ -289,6 +296,21 @@ handle_private_option( int i )
|
|||
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 ) {
|
||||
|
|
@ -609,6 +631,9 @@ main( int argc, char **argv )
|
|||
|
||||
getNextPage:
|
||||
if ( manageDSAit || noop || subentries || valuesReturnFilter
|
||||
#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
|
||||
|| domainScope
|
||||
#endif
|
||||
#ifdef LDAP_CONTROL_PAGEDRESULTS
|
||||
|| pageSize
|
||||
#endif
|
||||
|
|
@ -621,7 +646,17 @@ getNextPage:
|
|||
) {
|
||||
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 ) {
|
||||
|
|
@ -656,7 +691,7 @@ getNextPage:
|
|||
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 ) {
|
||||
|
|
|
|||
4
configure
vendored
4
configure
vendored
|
|
@ -1,6 +1,6 @@
|
|||
#! /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.
|
||||
#
|
||||
|
|
@ -7760,7 +7760,7 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
|||
|
||||
|
||||
LTSTATIC=""
|
||||
if test -z "$LTDYNAMIC" -a "${OPENLDAP_CVS}"; then
|
||||
if test -z "$LTDYNAMIC"; then
|
||||
LTSTATIC="-static"
|
||||
fi
|
||||
|
||||
|
|
|
|||
54
include/ac/assert.h
Normal file
54
include/ac/assert.h
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/* 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 */
|
||||
75
include/ac/bytes.h
Normal file
75
include/ac/bytes.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/* 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 */
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/* 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
|
||||
|
|
@ -197,8 +197,12 @@ LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * ));
|
|||
# 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_ */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -469,6 +469,12 @@ ber_flatten LDAP_P((
|
|||
BerElement *ber,
|
||||
struct berval **bvPtr ));
|
||||
|
||||
LBER_F( int )
|
||||
ber_flatten2 LDAP_P((
|
||||
BerElement *ber,
|
||||
struct berval *bv,
|
||||
int alloc ));
|
||||
|
||||
/*
|
||||
* LBER ber accessor functions
|
||||
*/
|
||||
|
|
|
|||
189
include/ldap.h
189
include/ldap.h
|
|
@ -205,18 +205,18 @@ typedef struct ldapcontrol {
|
|||
#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
|
||||
|
|
@ -230,8 +230,8 @@ typedef struct ldapcontrol {
|
|||
#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 */
|
||||
|
|
@ -247,10 +247,11 @@ typedef struct ldapcontrol {
|
|||
#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" /* + */
|
||||
|
|
@ -300,8 +301,8 @@ typedef struct ldapcontrol {
|
|||
#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
|
||||
|
|
@ -310,32 +311,32 @@ typedef struct ldapcontrol {
|
|||
|
||||
|
||||
/* 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)
|
||||
|
|
@ -346,40 +347,40 @@ typedef struct ldapcontrol {
|
|||
|
||||
|
||||
/* 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 */
|
||||
|
|
@ -390,7 +391,7 @@ typedef struct ldapcontrol {
|
|||
|
||||
/* 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 */
|
||||
|
||||
/*
|
||||
|
|
@ -399,13 +400,13 @@ typedef struct ldapcontrol {
|
|||
|
||||
#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
|
||||
|
|
@ -420,18 +421,18 @@ typedef struct ldapcontrol {
|
|||
#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 */
|
||||
|
|
@ -443,10 +444,10 @@ typedef struct ldapcontrol {
|
|||
|
||||
#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 */
|
||||
|
||||
|
|
@ -454,16 +455,16 @@ typedef struct ldapcontrol {
|
|||
#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
|
||||
|
|
@ -502,11 +503,6 @@ typedef struct ldapcontrol {
|
|||
#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
|
||||
|
|
@ -539,10 +535,10 @@ typedef struct ldapmsg LDAPMessage;
|
|||
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)
|
||||
|
|
@ -564,17 +560,17 @@ typedef struct ldapmod {
|
|||
*/
|
||||
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
|
||||
|
|
@ -893,31 +889,6 @@ ldap_kerberos_bind2_s LDAP_P(( /* deprecated */
|
|||
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>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -60,12 +60,4 @@
|
|||
#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 */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -52,12 +52,4 @@
|
|||
#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 */
|
||||
|
|
|
|||
66
include/ldap_features.h.in
Normal file
66
include/ldap_features.h.in
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/* $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 */
|
||||
69
include/ldap_features.nt
Normal file
69
include/ldap_features.nt
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/* $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 */
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -97,6 +97,9 @@ ldap_pvt_thread_mutex_trylock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
|
|||
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
|
||||
|
|
@ -184,6 +187,9 @@ ldap_pvt_thread_pool_setkey LDAP_P((
|
|||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
/* 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
|
||||
|
|
@ -246,9 +246,6 @@
|
|||
/* 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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ PROGRAMS = apitest dntest ftest ltest
|
|||
|
||||
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 \
|
||||
|
|
@ -19,7 +19,7 @@ SRCS = bind.c open.c result.c error.c compare.c search.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 \
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -97,17 +97,6 @@ ldap_compare_ext(
|
|||
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 );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -101,11 +101,6 @@ ldap_kerberos_bind1( LDAP *ld, LDAP_CONST char *dn )
|
|||
|
||||
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 ));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -22,6 +22,8 @@
|
|||
#include <ac/string.h>
|
||||
#include <ac/time.h>
|
||||
|
||||
#include <ac/unistd.h>
|
||||
|
||||
#include "ldap-int.h"
|
||||
#include "ldap_log.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -131,6 +131,10 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s)
|
|||
}
|
||||
#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)
|
||||
{
|
||||
|
|
@ -155,6 +159,25 @@ 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 );
|
||||
}
|
||||
|
||||
|
|
@ -181,7 +204,11 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
|
|||
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 );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -811,11 +811,6 @@ lr->lr_res_matched ? lr->lr_res_matched : "" );
|
|||
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 ) {
|
||||
|
|
@ -883,18 +878,7 @@ lr->lr_res_matched ? lr->lr_res_matched : "" );
|
|||
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:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
*/
|
||||
|
||||
|
|
@ -138,11 +138,6 @@ ldap_sasl_bind(
|
|||
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 );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -98,17 +98,6 @@ ldap_search_ext(
|
|||
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 );
|
||||
|
|
@ -199,16 +188,6 @@ ldap_search(
|
|||
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 ));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
*/
|
||||
|
||||
|
|
@ -47,8 +47,6 @@ static void print_ldap_result LDAP_P(( LDAP *ld, LDAPMessage *lm,
|
|||
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
|
||||
|
|
@ -646,39 +644,6 @@ main( int argc, char **argv )
|
|||
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 );
|
||||
|
|
@ -701,39 +666,16 @@ main( int argc, char **argv )
|
|||
}
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* $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
|
||||
|
|
@ -93,12 +93,6 @@ ldap_ld_free(
|
|||
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 );
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ XXDIR = $(srcdir)/../libldap
|
|||
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 \
|
||||
|
|
@ -27,8 +27,8 @@ OBJS = threads.lo rdwr.lo tpool.lo \
|
|||
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 \
|
||||
|
|
|
|||
|
|
@ -173,9 +173,10 @@ rewrite_var_set(
|
|||
*/
|
||||
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 );
|
||||
|
|
@ -193,7 +194,7 @@ rewrite_var_delete(
|
|||
Avlnode *tree
|
||||
)
|
||||
{
|
||||
avl_free( tree, ( AVL_FREE )rewrite_var_free );
|
||||
avl_free( tree, rewrite_var_free );
|
||||
return REWRITE_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue