From 7a7f482623084556f36f531b740fabed28260f06 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Thu, 27 Feb 2003 06:51:53 +0000 Subject: [PATCH] SLAP_NVALUES: prepare for new schema routines (hopefully I didn't break -USLAP_NVALUES) --- servers/slapd/schema_init.c | 324 +++++++++++++++++++----------------- 1 file changed, 174 insertions(+), 150 deletions(-) diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index 37d291ba88..1b1ed2204b 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -32,24 +32,30 @@ #define SLAP_MR_DN_FOLD (0) /* TO BE DELETED */ #endif -/* recycled validatation routines */ +/* validatation routines */ #define berValidate blobValidate -/* unimplemented pretters */ -#define integerPretty NULL - -/* recycled matching routines */ -#define bitStringMatch octetStringMatch -#define numericStringMatch caseIgnoreIA5Match -#define objectIdentifierMatch octetStringMatch -#define telephoneNumberMatch caseIgnoreIA5Match -#define telephoneNumberSubstringsMatch caseIgnoreIA5SubstringsMatch -#define generalizedTimeMatch caseIgnoreIA5Match -#define generalizedTimeOrderingMatch caseIgnoreIA5Match -#define uniqueMemberMatch dnMatch -#define integerFirstComponentMatch integerMatch +/* (new) normalization routines */ +#define caseExactNormalize NULL +#define caseExactIA5Normalize NULL +#define caseIgnoreNormalize NULL +#define caseIgnoreIA5Normalize NULL +#define distinguishedNameNormalize NULL +#define integerNormalize NULL +#define integerFirstComponentNormalize NULL +#define numericStringNormalize NULL +#define objectIdentifierNormalize NULL +#define objectIdentifierFirstComponentNormalize NULL +#define generalizedTimeNormalize NULL +#define uniqueMemberNormalize NULL +#define bitStringNormalize NULL +#define telephoneNumberNormalize NULL /* approx matching rules */ +#ifdef SLAP_NVALUES +#define directoryStringApproxMatchOID NULL +#define IA5StringApproxMatchOID NULL +#else #define directoryStringApproxMatchOID "1.3.6.1.4.1.4203.666.4.4" #define directoryStringApproxMatch approxMatch #define directoryStringApproxIndexer approxIndexer @@ -58,35 +64,57 @@ #define IA5StringApproxMatch approxMatch #define IA5StringApproxIndexer approxIndexer #define IA5StringApproxFilter approxFilter +#endif -/* ordering matching rules */ -#define caseIgnoreOrderingMatch caseIgnoreMatch -#define caseExactOrderingMatch caseExactMatch -#define integerOrderingMatch integerMatch +/* matching routines */ +#define bitStringMatch octetStringMatch +#define bitStringIndexer octetStringIndexer +#define bitStringFilter octetStringFilter -/* unimplemented matching routines */ -#define caseIgnoreListMatch NULL -#define caseIgnoreListSubstringsMatch NULL -#define protocolInformationMatch NULL +#define numericStringMatch caseIgnoreIA5Match +#define numericStringIndexer NULL +#define numericStringFilter NULL +#define numericStringSubstringsIndexer NULL +#define numericStringSubstringsFilter NULL -#ifdef SLAPD_ACI_ENABLED -#define OpenLDAPaciMatch NULL -#endif -#ifdef SLAPD_AUTHPASSWD -#define authPasswordMatch NULL -#endif +#define objectIdentifierMatch octetStringMatch +#define objectIdentifierIndexer caseIgnoreIA5Indexer +#define objectIdentifierFilter caseIgnoreIA5Filter + +#define generalizedTimeMatch caseIgnoreIA5Match +#define generalizedTimeOrderingMatch caseIgnoreIA5Match + +#define uniqueMemberMatch dnMatch +#define numericStringSubstringsMatch NULL -/* recycled indexing/filtering routines */ -#define dnIndexer caseExactIgnoreIndexer -#define dnFilter caseExactIgnoreFilter -#define bitStringFilter octetStringFilter -#define bitStringIndexer octetStringIndexer +#define caseExactIndexer caseExactIgnoreIndexer +#define caseExactFilter caseExactIgnoreFilter +#define caseExactOrderingMatch caseExactMatch +#define caseExactSubstringsMatch caseExactIgnoreSubstringsMatch +#define caseExactSubstringsIndexer caseExactIgnoreSubstringsIndexer +#define caseExactSubstringsFilter caseExactIgnoreSubstringsFilter +#define caseIgnoreIndexer caseExactIgnoreIndexer +#define caseIgnoreFilter caseExactIgnoreFilter +#define caseIgnoreOrderingMatch caseIgnoreMatch +#define caseIgnoreSubstringsMatch caseExactIgnoreSubstringsMatch +#define caseIgnoreSubstringsIndexer caseExactIgnoreSubstringsIndexer +#define caseIgnoreSubstringsFilter caseExactIgnoreSubstringsFilter -#define telephoneNumberIndexer caseIgnoreIA5Indexer -#define telephoneNumberFilter caseIgnoreIA5Filter +#define integerOrderingMatch integerMatch +#define integerFirstComponentMatch integerMatch + +#define distinguishedNameMatch dnMatch +#define distinguishedNameIndexer caseExactIgnoreIndexer +#define distinguishedNameFilter caseExactIgnoreFilter + +#define telephoneNumberMatch caseIgnoreIA5Match +#define telephoneNumberSubstringsMatch caseIgnoreIA5SubstringsMatch +#define telephoneNumberIndexer caseIgnoreIA5Indexer +#define telephoneNumberFilter caseIgnoreIA5Filter #define telephoneNumberSubstringsIndexer caseIgnoreIA5SubstringsIndexer #define telephoneNumberSubstringsFilter caseIgnoreIA5SubstringsFilter + static char *bvcasechr( struct berval *bv, unsigned char c, ber_len_t *len ) { ber_len_t i; @@ -137,11 +165,13 @@ octetStringOrderingMatch( { ber_len_t v_len = value->bv_len; ber_len_t av_len = ((struct berval *) assertedValue)->bv_len; + int match = memcmp( value->bv_val, ((struct berval *) assertedValue)->bv_val, (v_len < av_len ? v_len : av_len) ); - if( match == 0 ) - match = v_len - av_len; + + if( match == 0 ) match = v_len - av_len; + *matchp = match; return LDAP_SUCCESS; } @@ -344,7 +374,7 @@ nameUIDValidate( } static int -nameUIDNormalize( +xnameUIDNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -571,7 +601,7 @@ UTF8StringValidate( } static int -UTF8StringNormalize( +xUTF8StringNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -654,7 +684,7 @@ UTF8StringNormalize( /* Returns Unicode canonically normalized copy of a substring assertion * Skipping attribute description */ static SubstringsAssertion * -UTF8SubstringsassertionNormalize( +UTF8SubstringsAssertionNormalize( SubstringsAssertion *sa, unsigned casefold ) { @@ -1096,7 +1126,7 @@ caseExactIgnoreSubstringsMatch( } nav = left.bv_val; - sub = UTF8SubstringsassertionNormalize( assertedValue, casefold ); + sub = UTF8SubstringsAssertionNormalize( assertedValue, casefold ); if( sub == NULL ) { match = -1; goto done; @@ -1604,7 +1634,7 @@ static int caseExactIgnoreSubstringsFilter( casefold = ( mr != slap_schema.si_mr_caseExactSubstringsMatch ) ? LDAP_UTF8_CASEFOLD : LDAP_UTF8_NOCASEFOLD; - sa = UTF8SubstringsassertionNormalize( assertedValue, casefold ); + sa = UTF8SubstringsAssertionNormalize( assertedValue, casefold ); if( sa == NULL ) { *keysp = NULL; return LDAP_SUCCESS; @@ -1774,7 +1804,7 @@ caseIgnoreMatch( /* Remove all spaces and '-' characters */ static int -telephoneNumberNormalize( +xtelephoneNumberNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -1919,7 +1949,7 @@ integerValidate( } static int -integerNormalize( +xintegerNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -2005,7 +2035,7 @@ static int integerIndexer( for( i=0; values[i].bv_val != NULL; i++ ) { struct berval norm; - integerNormalize( syntax, &values[i], &norm ); + xintegerNormalize( syntax, &values[i], &norm ); HASH_Init( &HASHcontext ); if( prefix != NULL && prefix->bv_len > 0 ) { @@ -2051,7 +2081,7 @@ static int integerFilter( slen = syntax->ssyn_oidlen; mlen = mr->smr_oidlen; - integerNormalize( syntax, assertedValue, &norm ); + xintegerNormalize( syntax, assertedValue, &norm ); keys = ch_malloc( sizeof( struct berval ) * 2 ); @@ -2163,7 +2193,7 @@ IA5StringValidate( } static int -IA5StringNormalize( +xIA5StringNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -3410,7 +3440,7 @@ numericStringValidate( } static int -numericStringNormalize( +xnumericStringNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -3913,7 +3943,7 @@ static int certificateExactIndexer( asn1_integer2str(xcert->cert_info->serialNumber, &serial); X509_free(xcert); - integerNormalize( slap_schema.si_syn_integer, + xintegerNormalize( slap_schema.si_syn_integer, &serial, &keys[i] ); ber_memfree(serial.bv_val); #ifdef NEW_LOGGING @@ -3951,7 +3981,7 @@ static int certificateExactFilter( if( ret != LDAP_SUCCESS ) return ret; keys = ch_malloc( sizeof( struct berval ) * 2 ); - integerNormalize( syntax, &asserted_serial, &keys[0] ); + xintegerNormalize( syntax, &asserted_serial, &keys[0] ); keys[1].bv_val = NULL; *keysp = keys; @@ -4127,7 +4157,7 @@ check_time_syntax (struct berval *val, #ifdef SUPPORT_OBSOLETE_UTC_SYNTAX static int -utcTimeNormalize( +xutcTimeNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -4176,7 +4206,7 @@ generalizedTimeValidate( } static int -generalizedTimeNormalize( +xgeneralizedTimeNormalize( Syntax *syntax, struct berval *val, struct berval *normalized ) @@ -4322,7 +4352,7 @@ static slap_syntax_defs_rec syntax_defs[] = { X_BINARY X_NOT_H_R ")", SLAP_SYNTAX_BINARY|SLAP_SYNTAX_BER, berValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.11 DESC 'Country String' )", - 0, countryStringValidate, IA5StringNormalize, NULL}, + 0, countryStringValidate, xIA5StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.12 DESC 'Distinguished Name' )", 0, dnValidate, dnNormalize2, dnPretty2}, {"( 1.3.6.1.4.1.1466.115.121.1.13 DESC 'Data Quality' )", @@ -4330,7 +4360,7 @@ static slap_syntax_defs_rec syntax_defs[] = { {"( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.15 DESC 'Directory String' )", - 0, UTF8StringValidate, UTF8StringNormalize, NULL}, + 0, UTF8StringValidate, xUTF8StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.16 DESC 'DIT Content Rule Description' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.17 DESC 'DIT Structure Rule Description' )", @@ -4342,17 +4372,17 @@ static slap_syntax_defs_rec syntax_defs[] = { {"( 1.3.6.1.4.1.1466.115.121.1.21 DESC 'Enhanced Guide' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.22 DESC 'Facsimile Telephone Number' )", - 0, printablesStringValidate, telephoneNumberNormalize, NULL}, + 0, printablesStringValidate, xtelephoneNumberNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.23 DESC 'Fax' " X_NOT_H_R ")", SLAP_SYNTAX_BLOB, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )", - 0, generalizedTimeValidate, generalizedTimeNormalize, NULL}, + 0, generalizedTimeValidate, xgeneralizedTimeNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.25 DESC 'Guide' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'IA5 String' )", - 0, IA5StringValidate, IA5StringNormalize, NULL}, + 0, IA5StringValidate, xIA5StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'Integer' )", - 0, integerValidate, integerNormalize, NULL}, + 0, integerValidate, xintegerNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.28 DESC 'JPEG' " X_NOT_H_R ")", SLAP_SYNTAX_BLOB, blobValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.29 DESC 'Master And Shadow Access Points' )", @@ -4366,27 +4396,27 @@ static slap_syntax_defs_rec syntax_defs[] = { {"( 1.3.6.1.4.1.1466.115.121.1.33 DESC 'MHS OR Address' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.34 DESC 'Name And Optional UID' )", - 0, nameUIDValidate, nameUIDNormalize, NULL}, + 0, nameUIDValidate, xnameUIDNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.35 DESC 'Name Form Description' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.36 DESC 'Numeric String' )", - 0, numericStringValidate, numericStringNormalize, NULL}, + 0, numericStringValidate, xnumericStringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.37 DESC 'Object Class Description' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.38 DESC 'OID' )", 0, oidValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.39 DESC 'Other Mailbox' )", - 0, IA5StringValidate, IA5StringNormalize, NULL}, + 0, IA5StringValidate, xIA5StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.40 DESC 'Octet String' )", 0, blobValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.41 DESC 'Postal Address' )", - 0, UTF8StringValidate, UTF8StringNormalize, NULL}, + 0, UTF8StringValidate, xUTF8StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.42 DESC 'Protocol Information' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.43 DESC 'Presentation Address' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.44 DESC 'Printable String' )", - 0, printableStringValidate, IA5StringNormalize, NULL}, + 0, printableStringValidate, xIA5StringNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.45 DESC 'SubtreeSpecification' " X_BINARY X_NOT_H_R ")", SLAP_SYNTAX_BINARY|SLAP_SYNTAX_BER, NULL, NULL, NULL}, @@ -4394,14 +4424,14 @@ static slap_syntax_defs_rec syntax_defs[] = { X_BINARY X_NOT_H_R ")", SLAP_SYNTAX_BINARY|SLAP_SYNTAX_BER, berValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )", - 0, printableStringValidate, telephoneNumberNormalize, NULL}, + 0, printableStringValidate, xtelephoneNumberNormalize, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.51 DESC 'Teletex Terminal Identifier' )", 0, NULL, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )", - 0, printablesStringValidate, IA5StringNormalize, NULL}, + 0, printablesStringValidate, xIA5StringNormalize, NULL}, #ifdef SUPPORT_OBSOLETE_UTC_SYNTAX {"( 1.3.6.1.4.1.1466.115.121.1.53 DESC 'UTC Time' )", - 0, utcTimeValidate, utcTimeNormalize, NULL}, + 0, utcTimeValidate, xutcTimeNormalize, NULL}, #endif {"( 1.3.6.1.4.1.1466.115.121.1.54 DESC 'LDAP Syntax Description' )", 0, NULL, NULL, NULL}, @@ -4503,23 +4533,21 @@ static slap_mrule_defs_rec mrule_defs[] = { * EQUALITY matching rules must be listed after associated APPROX * matching rules. So, we list all APPROX matching rules first. */ +#ifndef SLAP_NVALUES {"( " directoryStringApproxMatchOID " NAME 'directoryStringApproxMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", SLAP_MR_HIDE | SLAP_MR_EQUALITY_APPROX | SLAP_MR_EXT, NULL, - NULL, NULL, - directoryStringApproxMatch, - directoryStringApproxIndexer, - directoryStringApproxFilter, + NULL, NULL, directoryStringApproxMatch, + directoryStringApproxIndexer, directoryStringApproxFilter, NULL}, {"( " IA5StringApproxMatchOID " NAME 'IA5StringApproxMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", SLAP_MR_HIDE | SLAP_MR_EQUALITY_APPROX | SLAP_MR_EXT, NULL, - NULL, NULL, - IA5StringApproxMatch, - IA5StringApproxIndexer, - IA5StringApproxFilter, + NULL, NULL, IA5StringApproxMatch, + IA5StringApproxIndexer, IA5StringApproxFilter, NULL}, +#endif /* * Other matching rules @@ -4528,122 +4556,116 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.0 NAME 'objectIdentifierMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - objectIdentifierMatch, caseIgnoreIA5Indexer, caseIgnoreIA5Filter, + NULL, + objectIdentifierNormalize, objectIdentifierMatch, + objectIdentifierIndexer, objectIdentifierFilter, NULL}, {"( 2.5.13.1 NAME 'distinguishedNameMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - dnMatch, dnIndexer, dnFilter, + NULL, + distinguishedNameNormalize, distinguishedNameMatch, + distinguishedNameIndexer, distinguishedNameFilter, NULL}, {"( 2.5.13.2 NAME 'caseIgnoreMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", SLAP_MR_EQUALITY | SLAP_MR_EXT | SLAP_MR_DN_FOLD, directoryStringSyntaxes, - NULL, NULL, - caseIgnoreMatch, caseExactIgnoreIndexer, caseExactIgnoreFilter, + NULL, + caseIgnoreNormalize, caseIgnoreMatch, + caseIgnoreIndexer, caseIgnoreFilter, directoryStringApproxMatchOID }, {"( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", SLAP_MR_ORDERING, directoryStringSyntaxes, - NULL, NULL, - caseIgnoreOrderingMatch, NULL, NULL, - NULL}, + NULL, caseIgnoreNormalize, caseIgnoreOrderingMatch, + NULL, NULL, NULL}, {"( 2.5.13.4 NAME 'caseIgnoreSubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", SLAP_MR_SUBSTR, NULL, NULL, NULL, caseExactIgnoreSubstringsMatch, - caseExactIgnoreSubstringsIndexer, - caseExactIgnoreSubstringsFilter, + caseExactIgnoreSubstringsIndexer, caseExactIgnoreSubstringsFilter, NULL}, {"( 2.5.13.5 NAME 'caseExactMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, directoryStringSyntaxes, - NULL, NULL, - caseExactMatch, caseExactIgnoreIndexer, caseExactIgnoreFilter, + NULL, + caseExactNormalize, caseExactMatch, + caseExactIndexer, caseExactFilter, directoryStringApproxMatchOID }, {"( 2.5.13.6 NAME 'caseExactOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", SLAP_MR_ORDERING, directoryStringSyntaxes, - NULL, NULL, - caseExactOrderingMatch, NULL, NULL, - NULL}, + NULL, caseExactNormalize, caseExactOrderingMatch, + NULL, NULL, NULL}, {"( 2.5.13.7 NAME 'caseExactSubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", SLAP_MR_SUBSTR, directoryStringSyntaxes, - NULL, NULL, - caseExactIgnoreSubstringsMatch, - caseExactIgnoreSubstringsIndexer, - caseExactIgnoreSubstringsFilter, + NULL, + NULL, caseExactSubstringsMatch, + caseExactSubstringsIndexer, caseExactSubstringsFilter, NULL}, {"( 2.5.13.8 NAME 'numericStringMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )", SLAP_MR_EQUALITY | SLAP_MR_EXT | SLAP_MR_DN_FOLD, NULL, - NULL, NULL, - caseIgnoreIA5Match, - caseIgnoreIA5Indexer, - caseIgnoreIA5Filter, + NULL, + numericStringNormalize, numericStringMatch, + numericStringIndexer, numericStringFilter, NULL}, {"( 2.5.13.10 NAME 'numericStringSubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", SLAP_MR_SUBSTR, NULL, - NULL, NULL, - caseIgnoreIA5SubstringsMatch, - caseIgnoreIA5SubstringsIndexer, - caseIgnoreIA5SubstringsFilter, + NULL, + NULL, numericStringSubstringsMatch, + numericStringSubstringsIndexer, numericStringSubstringsFilter, NULL}, {"( 2.5.13.11 NAME 'caseIgnoreListMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )", SLAP_MR_EQUALITY | SLAP_MR_EXT | SLAP_MR_DN_FOLD, NULL, - NULL, NULL, - caseIgnoreListMatch, NULL, NULL, - NULL}, + NULL, NULL, NULL, NULL, NULL, NULL}, {"( 2.5.13.12 NAME 'caseIgnoreListSubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", SLAP_MR_SUBSTR, NULL, - NULL, NULL, - caseIgnoreListSubstringsMatch, NULL, NULL, - NULL}, + NULL, NULL, NULL, NULL, NULL, NULL}, {"( 2.5.13.13 NAME 'booleanMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - booleanMatch, NULL, NULL, - NULL}, + NULL, NULL, booleanMatch, NULL, NULL, NULL}, {"( 2.5.13.14 NAME 'integerMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - integerMatch, integerIndexer, integerFilter, + NULL, + integerNormalize, integerMatch, + integerIndexer, integerFilter, NULL}, {"( 2.5.13.15 NAME 'integerOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", - SLAP_MR_ORDERING, NULL, - NULL, NULL, - integerOrderingMatch, NULL, NULL, + SLAP_MR_ORDERING, NULL, NULL, + integerNormalize, integerOrderingMatch, + integerIndexer, integerFilter, NULL}, {"( 2.5.13.16 NAME 'bitStringMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - bitStringMatch, bitStringIndexer, bitStringFilter, + NULL, + bitStringNormalize, bitStringMatch, + bitStringIndexer, bitStringFilter, NULL}, {"( 2.5.13.17 NAME 'octetStringMatch' " @@ -4663,19 +4685,16 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.20 NAME 'telephoneNumberMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )", SLAP_MR_EQUALITY | SLAP_MR_EXT | SLAP_MR_DN_FOLD, NULL, - NULL, NULL, - telephoneNumberMatch, - telephoneNumberIndexer, - telephoneNumberFilter, + NULL, + telephoneNumberNormalize, telephoneNumberMatch, + telephoneNumberIndexer, telephoneNumberFilter, NULL}, {"( 2.5.13.21 NAME 'telephoneNumberSubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", SLAP_MR_SUBSTR, NULL, - NULL, NULL, - telephoneNumberSubstringsMatch, - telephoneNumberSubstringsIndexer, - telephoneNumberSubstringsFilter, + NULL, NULL, telephoneNumberSubstringsMatch, + telephoneNumberSubstringsIndexer, telephoneNumberSubstringsFilter, NULL}, {"( 2.5.13.22 NAME 'presentationAddressMatch' " @@ -4688,46 +4707,50 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.23 NAME 'uniqueMemberMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, + NULL, + uniqueMemberNormalize, uniqueMemberMatch, NULL, NULL, - uniqueMemberMatch, NULL, NULL, NULL}, {"( 2.5.13.24 NAME 'protocolInformationMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - protocolInformationMatch, NULL, NULL, - NULL}, + NULL, NULL, NULL, NULL, NULL, NULL}, {"( 2.5.13.27 NAME 'generalizedTimeMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, + NULL, + generalizedTimeNormalize, generalizedTimeMatch, NULL, NULL, - generalizedTimeMatch, NULL, NULL, NULL}, {"( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", SLAP_MR_ORDERING, NULL, + NULL, + generalizedTimeOrderingMatch, generalizedTimeOrderingMatch, NULL, NULL, - generalizedTimeOrderingMatch, NULL, NULL, NULL}, {"( 2.5.13.29 NAME 'integerFirstComponentMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, integerFirstComponentMatchSyntaxes, + NULL, + integerFirstComponentNormalize, integerMatch, NULL, NULL, - integerFirstComponentMatch, NULL, NULL, NULL}, {"( 2.5.13.30 NAME 'objectIdentifierFirstComponentMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, objectIdentifierFirstComponentMatchSyntaxes, + NULL, + objectIdentifierFirstComponentNormalize, objectIdentifierMatch, NULL, NULL, - objectIdentifierFirstComponentMatch, NULL, NULL, NULL}, +#ifdef SLAP_NVALUES #ifdef HAVE_TLS {"( 2.5.13.34 NAME 'certificateExactMatch' " "SYNTAX 1.2.826.0.1.3344810.7.1 )", @@ -4736,38 +4759,39 @@ static slap_mrule_defs_rec mrule_defs[] = { certificateExactMatch, certificateExactIndexer, certificateExactFilter, NULL}, +#endif #endif {"( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", SLAP_MR_EQUALITY | SLAP_MR_EXT, NULL, - NULL, NULL, - caseExactIA5Match, caseExactIA5Indexer, caseExactIA5Filter, + NULL, + caseExactIA5Normalize, caseExactIA5Match, + caseExactIA5Indexer, caseExactIA5Filter, IA5StringApproxMatchOID }, {"( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", SLAP_MR_EQUALITY | SLAP_MR_EXT | SLAP_MR_DN_FOLD, NULL, - NULL, NULL, - caseIgnoreIA5Match, caseIgnoreIA5Indexer, caseIgnoreIA5Filter, + NULL, + NULL, caseIgnoreIA5Match, + caseIgnoreIA5Indexer, caseIgnoreIA5Filter, IA5StringApproxMatchOID }, {"( 1.3.6.1.4.1.1466.109.114.3 NAME 'caseIgnoreIA5SubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", SLAP_MR_SUBSTR, NULL, - NULL, NULL, - caseIgnoreIA5SubstringsMatch, - caseIgnoreIA5SubstringsIndexer, - caseIgnoreIA5SubstringsFilter, + NULL, + NULL, caseIgnoreIA5SubstringsMatch, + caseIgnoreIA5SubstringsIndexer, caseIgnoreIA5SubstringsFilter, NULL}, {"( 1.3.6.1.4.1.4203.1.2.1 NAME 'caseExactIA5SubstringsMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", SLAP_MR_SUBSTR, NULL, - NULL, NULL, - caseExactIA5SubstringsMatch, - caseExactIA5SubstringsIndexer, - caseExactIA5SubstringsFilter, + NULL, + NULL, caseExactIA5SubstringsMatch, + caseExactIA5SubstringsIndexer, caseExactIA5SubstringsFilter, NULL}, #ifdef SLAPD_AUTHPASSWD @@ -4792,15 +4816,15 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 1.2.840.113556.1.4.803 NAME 'integerBitAndMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", SLAP_MR_EXT, NULL, - NULL, NULL, - integerBitAndMatch, NULL, NULL, + NULL, + NULL, integerBitAndMatch, NULL, NULL, NULL}, {"( 1.2.840.113556.1.4.804 NAME 'integerBitOrMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", SLAP_MR_EXT, NULL, - NULL, NULL, - integerBitOrMatch, NULL, NULL, + NULL, + NULL, integerBitOrMatch, NULL, NULL, NULL}, {NULL, SLAP_MR_NONE, NULL, -- 2.39.5