Commit 2af64577 authored by Sang Seok Lim's avatar Sang Seok Lim
Browse files

This patch is for a component filter. please refer ITS#3260 for detail

and "implementing GSER and Component Matching" in ODD 2004.
All codes are #ifdef'd with LDAP_COMP_MATCH.
test031-component-filter works correctly only when the LDAP_COMP_MATCH macro is set.
To disable it, set AC_WITH_COMP_MATCH "no" in "openldap_src/tests/run.in".
parent 05e7632c
......@@ -1992,5 +1992,9 @@ ldap_passwordpolicy_err2txt LDAP_P(( LDAPPasswordPolicyError ));
#endif /* LDAP_CONTROL_PASSWORDPOLICYREQUEST */
#ifdef LDAP_DEVEL
#define LDAP_COMP_MATCH 1
#endif
LDAP_END_DECL
#endif /* _LDAP_H */
......@@ -37,7 +37,7 @@ SRCS = main.c globals.c config.c daemon.c \
backglue.c operational.c matchedValues.c cancel.c syncrepl.c \
backover.c ctxcsn.c ldapsync.c sessionlog.c frontend.c \
slapadd.c slapcat.c slapcommon.c slapdn.c slapindex.c \
slappasswd.c slaptest.c slapauth.c slapacl.c \
slappasswd.c slaptest.c slapauth.c slapacl.c component.c\
$(@PLAT@_SRCS)
OBJS = main.o globals.o config.o daemon.o \
......@@ -54,7 +54,7 @@ OBJS = main.o globals.o config.o daemon.o \
backglue.o operational.o matchedValues.o cancel.o syncrepl.o \
backover.o ctxcsn.o ldapsync.o sessionlog.o frontend.o \
slapadd.o slapcat.o slapcommon.o slapdn.o slapindex.o \
slappasswd.o slaptest.o slapauth.o slapacl.o \
slappasswd.o slaptest.o slapauth.o slapacl.o component.o\
$(@PLAT@_OBJS)
LDAP_INCDIR= ../../include -I$(srcdir)/slapi
......
/* asn.h -- Component Filter Match Routines */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2003-2004 The OpenLDAP Foundation.
* Portions Copyright 2004 by IBM Corporation.
* 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 in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#ifdef LDAP_COMP_MATCH
#include <asn-incl.h>
#define AsnId AsnOcts
#define NUM_ENCODING_TYPE 2
typedef enum { BER, GSER } EncRulesType;
typedef enum { ASN_BASIC, ASN_COMPOSITE } AsnType;
static EncRulesType rulesListG[NUM_ENCODING_TYPE] = { BER, GSER };
typedef enum AsnTypeId {
BASICTYPE_BOOLEAN, /* 1 */
BASICTYPE_INTEGER,
BASICTYPE_BITSTRING,
BASICTYPE_OCTETSTRING,
BASICTYPE_NULL,
BASICTYPE_OID,
BASICTYPE_REAL,
BASICTYPE_ENUMERATED,
BASICTYPE_NUMERIC_STR,
BASICTYPE_PRINTABLE_STR,
BASICTYPE_UNIVERSAL_STR,
BASICTYPE_IA5_STR,
BASICTYPE_BMP_STR,
BASICTYPE_UTF8_STR,
BASICTYPE_UTCTIME,
BASICTYPE_GENERALIZEDTIME,
BASICTYPE_GRAPHIC_STR,
BASICTYPE_VISIBLE_STR,
BASICTYPE_GENERAL_STR,
BASICTYPE_OBJECTDESCRIPTOR,
BASICTYPE_VIDEOTEX_STR,
BASICTYPE_T61_STR,
BASICTYPE_OCTETCONTAINING,
BASICTYPE_BITCONTAINING,
BASICTYPE_RELATIVE_OID, /* 25 */
/* Embedded Composite Types*/
COMPOSITE_ASN1_TYPE,
/* A New ASN.1 types including type reference */
RDNSequence,
RelativeDistinguishedName,
TelephoneNumber,
FacsimileTelephoneNumber_telephoneNumber,
DirectoryString,
/* Newly Defined ASN.1 Type, Manually registered */
ASN_T1,
/* ASN.1 Type End */
ASNTYPE_END
} AsnTypeId;
#endif
This diff is collapsed.
......@@ -214,6 +214,13 @@ static int test_mra_filter(
memfree = op->o_tmpfree;
}
#ifdef LDAP_COMP_MATCH
/* Component Matching */
if( mra->cf &&
mra->ma_rule->smr_usage & (SLAP_MR_COMPONENT) ){
return test_comp_filter_entry( op, e, mra );
}
#endif
if ( mra->ma_desc ) {
/*
* if ma_desc is available, then we're filtering for
......
......@@ -223,6 +223,13 @@ get_mra(
return rc;
}
#ifdef LDAP_COMP_MATCH
/* Matching Rule for Component Matching */
Debug( LDAP_DEBUG_FILTER, "matchingrule %s\n",ma.ma_rule->smr_mrule.mr_oid,0,0);
if( ma.ma_rule && ma.ma_rule->smr_usage & SLAP_MR_COMPONENT )
rc = get_comp_filter( op, &ma.ma_value, &ma.cf, text );
if ( rc != LDAP_SUCCESS ) return rc;
#endif
length = sizeof(ma);
/* Append rule_text to end of struct */
if (rule_text.bv_val) length += rule_text.bv_len + 1;
......
......@@ -313,6 +313,34 @@ LDAP_SLAPD_F (void) ch_free LDAP_P(( void * ));
#define free ch_free
#endif
/*
* component.c
*/
#ifdef LDAP_COMP_MATCH
LDAP_SLAPD_F (int) test_comp_filter_entry LDAP_P((
Operation* op,
Entry* e,
MatchingRuleAssertion* mr));
LDAP_SLAPD_F (int) get_comp_filter LDAP_P((
Operation* op,
BerValue* bv,
ComponentFilter** filt,
const char **text ));
LDAP_SLAPD_F (int) componentFilterMatch LDAP_P((
int *matchp,
slap_mask_t flags,
Syntax *syntax,
MatchingRule *mr,
struct berval *value,
void *assertedValue ));
LDAP_SLAPD_F (int) componentFilterValidate LDAP_P((
Syntax *syntax,
struct berval* bv ));
#endif
/*
* controls.c
*/
......@@ -486,6 +514,7 @@ LDAP_SLAPD_F (int) rdnMatch LDAP_P((
struct berval *value,
void *assertedValue ));
LDAP_SLAPD_F (int) dnIsSuffix LDAP_P((
const struct berval *dn, const struct berval *suffix ));
......
......@@ -255,6 +255,12 @@ attributetype ( 2.5.4.37 NAME 'cACertificate'
EQUALITY certificateExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
# Component Filter Testing
attributetype ( 1.3.6.1.4.1.4203.666.1.33 NAME 'componentTest'
DESC 'RFC3687 Component Matching , use ;gser'
EQUALITY componentFilterMatch
SYNTAX 1.2.36.79672281.1.5.2 )
# Must be transferred using ;binary
attributetype ( 2.5.4.38 NAME 'authorityRevocationList'
DESC 'RFC2256: X.509 authority revocation list, use ;binary'
......@@ -366,7 +372,7 @@ objectclass ( 2.5.6.4 NAME 'organization'
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
x121Address $ registeredAddress $ destinationIndicator $
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationaliSDNNumber $
telephoneNumber $ internationaliSDNNumber $
facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
......@@ -385,7 +391,7 @@ objectclass ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person'
SUP top STRUCTURAL
MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description $componentTest ) )
objectclass ( 2.5.6.7 NAME 'organizationalPerson'
DESC 'RFC2256: an organizational person'
......
......@@ -3031,10 +3031,12 @@ static slap_syntax_defs_rec syntax_defs[] = {
0, countryStringValidate, NULL},
{"( 1.3.6.1.4.1.1466.115.121.1.12 DESC 'Distinguished Name' )",
0, dnValidate, dnPretty},
{"( 1.2.36.79672281.1.5.0 DESC 'RDN' )",
0, rdnValidate, rdnPretty},
#ifdef LDAP_COMP_MATCH
{"( 1.2.36.79672281.1.5.2 DESC 'ComponentFilter' )",
0, componentFilterValidate, NULL},
#endif
{"( 1.3.6.1.4.1.1466.115.121.1.13 DESC 'Data Quality' )",
0, NULL, NULL},
{"( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )",
......@@ -3240,6 +3242,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
NULL, dnNormalize, dnMatch,
octetStringIndexer, octetStringFilter,
NULL },
{"( 1.2.36.79672281.1.13.3 NAME 'rdnMatch' "
"SYNTAX 1.2.36.79672281.1.5.0 )",
SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL,
......@@ -3247,6 +3250,15 @@ static slap_mrule_defs_rec mrule_defs[] = {
octetStringIndexer, octetStringFilter,
NULL },
#ifdef LDAP_COMP_MATCH
{"( 1.2.36.79672281.1.13.2 NAME 'componentFilterMatch' "
"SYNTAX 1.2.36.79672281.1.5.2 )",
SLAP_MR_EQUALITY|SLAP_MR_EXT|SLAP_MR_COMPONENT, NULL,
NULL, NULL , componentFilterMatch,
octetStringIndexer, octetStringFilter,
NULL },
#endif
{"( 2.5.13.2 NAME 'caseIgnoreMatch' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
SLAP_MR_EQUALITY | SLAP_MR_EXT, directoryStringSyntaxes,
......
......@@ -56,6 +56,7 @@
#include "ldap_queue.h"
LDAP_BEGIN_DECL
/*
* SLAPD Memory allocation macros
*
......@@ -330,6 +331,11 @@ typedef int slap_syntax_transform_func LDAP_P((
struct berval * out,
void *memctx));
#ifdef LDAP_COMP_MATCH
typedef void* slap_component_transform_func LDAP_P((
struct berval * in ));
struct ComponentDesc;
#endif
typedef struct slap_syntax {
LDAPSyntax ssyn_syn;
#define ssyn_oid ssyn_syn.syn_oid
......@@ -366,6 +372,10 @@ typedef struct slap_syntax {
slap_syntax_transform_func *ssyn_ber2str;
slap_syntax_transform_func *ssyn_str2ber;
#endif
#ifdef LDAP_COMP_MATCH
slap_component_transform_func *ssyn_attr2comp;
struct ComponentDesc* comp_syntax;
#endif
LDAP_SLIST_ENTRY(slap_syntax) ssyn_next;
} Syntax;
......@@ -468,6 +478,9 @@ typedef struct slap_matching_rule {
#define SLAP_MR_ORDERING 0x0200U
#define SLAP_MR_SUBSTR 0x0400U
#define SLAP_MR_EXT 0x0800U /* implicitly extensible */
#ifdef LDAP_COMP_MATCH
#define SLAP_MR_COMPONENT 0x1000U
#endif
#define SLAP_MR_EQUALITY_APPROX ( SLAP_MR_EQUALITY | 0x0010U )
......@@ -886,12 +899,19 @@ typedef struct slap_ss_assertion {
struct berval sa_final;
} SubstringsAssertion;
#ifdef LDAP_COMP_MATCH
struct slap_component_filter;
#endif
typedef struct slap_mr_assertion {
MatchingRule *ma_rule; /* optional */
struct berval ma_rule_text; /* optional */
AttributeDescription *ma_desc; /* optional */
int ma_dnattrs; /* boolean */
struct berval ma_value; /* required */
#ifdef LDAP_COMP_MATCH
struct slap_component_filter* cf;
#endif
} MatchingRuleAssertion;
/*
......@@ -1016,6 +1036,9 @@ typedef struct slap_attr {
unsigned a_flags;
#define SLAP_ATTR_IXADD 0x1U
#define SLAP_ATTR_IXDEL 0x2U
#ifdef LDAP_COMP_MATCH
void* component_values;
#endif
} Attribute;
......@@ -2436,6 +2459,156 @@ typedef int (SLAP_CTRL_PARSE_FN) LDAP_P((
#define SLAP_AUTH_REWRITE 1
#endif /* LDAP_DEVEL && ENABLE_REWRITE */
#ifdef LDAP_COMP_MATCH
/*
* Extensible Filter Definition
*
* MatchingRuleAssertion := SEQUENCE {
* matchingRule [1] MatchingRuleId OPTIONAL,
* type [2] AttributeDescription OPTIONAL,
* matchValue [3] AssertionValue,
* dnAttributes [4] BOOLEAN DEFAULT FALSE }
*
* Following ComponentFilter is contained in matchValue
*
* ComponentAssertion ::= SEQUENCE {
* component ComponentReference (SIZE(1..MAX)) OPTIONAL
* useDefaultValues BOOLEAN DEFAULT TRUE,
* rule MATCHING-RULE.&id,
* value MATCHING-RULE.&AssertionType }
*
* ComponentFilter ::= CHOICE {
* item [0] ComponentAssertion,
* and [1] SEQUENCE OF ComponentFilter,
* or [2] SEQUENCE OF ComponentFilter,
* not [3] ComponentFilter }
*/
#define LDAP_COMPREF_IDENTIFIER ((ber_tag_t) 0x80U)
#define LDAP_COMPREF_FROM_BEGINNING ((ber_tag_t) 0x81U)
#define LDAP_COMPREF_COUNT ((ber_tag_t) 0x82U)
#define LDAP_COMPREF_FROM_END ((ber_tag_t) 0x83U)
#define LDAP_COMPREF_CONTENT ((ber_tag_t) 0x84U)
#define LDAP_COMPREF_SELECT ((ber_tag_t) 0x85U)
#define LDAP_COMPREF_ALL ((ber_tag_t) 0x86U)
#define LDAP_COMPREF_DEFINED ((ber_tag_t) 0x87U)
#define LDAP_COMPREF_UNDEFINED ((ber_tag_t) 0x88U)
#define LDAP_COMP_FILTER_AND ((ber_tag_t) 0xa0U)
#define LDAP_COMP_FILTER_OR ((ber_tag_t) 0xa1U)
#define LDAP_COMP_FILTER_NOT ((ber_tag_t) 0xa2U)
#define LDAP_COMP_FILTER_ITEM ((ber_tag_t) 0xa3U)
#define LDAP_COMP_FILTER_UNDEFINED ((ber_tag_t) 0xa4U)
typedef struct slap_component_id{
int ci_type;
struct slap_component_id *ci_next;
union comp_id_value{
BerValue ci_identifier;
ber_int_t ci_from_beginning;
ber_int_t ci_count;
ber_int_t ci_from_end;
BerValue ci_select_value;
char ci_all;
} ci_val;
} ComponentId;
typedef struct slap_component_reference {
ComponentId *cr_list;
ComponentId *cr_curr;
struct berval cr_string;
int cr_len;
} ComponentReference;
typedef struct slap_component_assertion {
ComponentReference *ca_comp_ref;
ber_int_t ca_use_def;
MatchingRule *ca_ma_rule;
struct berval ca_ma_value;
struct slap_component_filter *ca_cf;
MatchingRuleAssertion *ca_mra;
} ComponentAssertion;
typedef struct slap_component_filter {
ber_tag_t cf_choice;
union cf_un_u {
ber_int_t cf_un_result;
ComponentAssertion *cf_un_ca;
struct slap_component_filter *cf_un_complex;
} cf_un;
#define cf_ca cf_un.cf_un_ca
#define cf_result cf_un.cf_un_result
#define cf_and cf_un.cf_un_complex
#define cf_or cf_un.cf_un_complex
#define cf_not cf_un.cf_un_complex
struct slap_component_filter *cf_next;
} ComponentFilter;
typedef struct slap_component_assertion_value {
char* cav_buf;
char* cav_ptr;
char* cav_end;
} ComponentAssertionValue;
#include "asn.h"
typedef int encoder_func LDAP_P((
GenBuf* b,
void* comp));
struct slap_component_syntax_info;
typedef int decoder_func LDAP_P((
GenBuf* b,
struct slap_component_syntax_info** comp_syn_info,
unsigned int* len,
int mode));
typedef void* extract_component_from_tag_func LDAP_P((
int *tag));
typedef void* extract_component_from_id_func LDAP_P((
ComponentReference* cr,
void* comp ));
typedef int allcomponent_matching_func LDAP_P((
char* oid,
void* component1,
void* component2 ));
typedef struct slap_component_desc{
int cd_tag;
ComponentId* cd_identifier;
encoder_func *cd_encoder;
decoder_func *cd_decoder;
extract_component_from_tag_func* cd_extract_t;
extract_component_from_id_func* cd_extract_i;
AsnType cd_type;
AsnTypeId cd_type_id;
allcomponent_matching_func* cd_all_match;
} ComponentDesc;
typedef struct slap_component_syntax_info {
Syntax* csi_syntax;
ComponentDesc* csi_comp_desc;
} ComponentSyntaxInfo;
typedef struct asntype_to_matchingrule {
AsnTypeId atmr_typeId;
char* atmr_mr_name;
MatchingRule *atmr_mr;
} AsnTypetoMatchingRule;
typedef struct asntype_to_matchingrule_table {
char* atmr_oid;
struct asntype_to_matchingrule atmr_table[ASNTYPE_END];
struct asntype_to_matchingrule_table* atmr_table_next;
} AsnTypetoMatchingRuleTable;
#endif
LDAP_END_DECL
#include "proto-slap.h"
......
dn: cn=sangseoklim,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: sangseoklim
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component1
dn: cn=seotaejee,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: seotaejee
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component2
dn: cn=sangseoklim,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: sangseoklim
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component1
dn: cn=seotaejee,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: seotaejee
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component2
dn: cn=sangseoklim,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: sangseoklim
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component1
dn: cn=seotaejee,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: seotaejee
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component2
dn: cn=sangseoklim,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: sangseoklim
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component1
dn: cn=seotaejee,ou=Alumni Association,ou=People,dc=example,dc=com
objectClass: OpenLDAPperson
cn: seotaejee
sn: Hampster
uid: uham
title: Secretary, UM Alumni Association
postalAddress: Alumni Association $ 111 Maple St $ Anytown, MI 48109
seeAlso: cn=All Staff,ou=Groups,dc=example,dc=com
homePostalAddress: 123 Anystreet $ Anytown, MI 48104
mail: uham@mail.alumni.example.com
homePhone: +1 313 555 8421
pager: +1 313 555 2844
facsimileTelephoneNumber: +1 313 555 9700
telephoneNumber: +1 313 555 5331
componentTest: component2
This diff is collapsed.
......@@ -41,10 +41,11 @@ AC_rwm=rwm@BUILD_RWM@
# misc
AC_WITH_SASL=@WITH_SASL@
AC_WITH_TLS=@WITH_TLS@
AC_WITH_COMP_MATCH=yes
export AC_bdb AC_hdb AC_ldap AC_ldbm AC_monitor AC_relay AC_sql
export AC_pcache AC_ppolicy AC_refint AC_unique AC_rwm
export AC_WITH_SASL AC_WITH_TLS
export AC_WITH_SASL AC_WITH_TLS AC_WITH_COMP_MATCH
if test ! -x ../servers/slapd/slapd ; then
echo "Could not locate slapd(8)"
......
......@@ -154,6 +154,7 @@ LDIFIDASSERT2=$DATADIR/test-idassert2.ldif
LDIFLDAPGLUE1=$DATADIR/test-ldapglue.ldif
LDIFLDAPGLUE2=$DATADIR/test-ldapgluepeople.ldif
LDIFLDAPGLUE3=$DATADIR/test-ldapgluegroups.ldif
LDIFCOMPMATCH=$DATADIR/test-compmatch.ldif
MONITOR=""
REFDN="c=US"
BASEDN="dc=example,dc=com"
......@@ -204,6 +205,7 @@ PROXYCACHEOUT=$DATADIR/proxycache.out
REFERRALOUT=$DATADIR/referrals.out
SEARCHOUTMASTER=$DATADIR/search.out.master
SEARCHOUTX=$DATADIR/search.out.xsearch
COMPSEARCHOUT=$DATADIR/compsearch.out
MODIFYOUTMASTER=$DATADIR/modify.out.master
ADDDELOUTMASTER=$DATADIR/adddel.out.master
MODRDNOUTMASTER0=$DATADIR/modrdn.out.master.0
......
#! /bin/sh
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2004 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without