mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
ITS#6532 Support extensible match=...OrderingMatch
Handles: caseExactOrderingMatch, generalizedTimeOrderingMatch, caseIgnoreOrderingMatch, integerOrderingMatch, octetStringOrderingMatch, numericStringOrderingMatch. Based on patch from Daniel Pluta.
This commit is contained in:
parent
bc38ec228b
commit
5f2af361ba
@ -514,6 +514,9 @@ octetStringOrderingMatch(
|
||||
? (int) v_len - (int) av_len
|
||||
: v_len < av_len ? -1 : v_len > av_len;
|
||||
|
||||
if ( flags & SLAP_MR_EXT )
|
||||
match = (match >= 0);
|
||||
|
||||
*matchp = match;
|
||||
return LDAP_SUCCESS;
|
||||
}
|
||||
@ -2413,6 +2416,9 @@ integerMatch(
|
||||
if( vsign < 0 ) match = -match;
|
||||
}
|
||||
|
||||
if ( (flags & SLAP_MR_EXT) && (mr->smr_usage & SLAP_MR_ORDERING) )
|
||||
match = (match >= 0);
|
||||
|
||||
*matchp = match;
|
||||
return LDAP_SUCCESS;
|
||||
}
|
||||
@ -5617,6 +5623,9 @@ generalizedTimeOrderingMatch(
|
||||
(v_len < av_len ? v_len : av_len) - 1 );
|
||||
if ( match == 0 ) match = v_len - av_len;
|
||||
|
||||
if ( flags & SLAP_MR_EXT )
|
||||
match = (match >= 0);
|
||||
|
||||
*matchp = match;
|
||||
return LDAP_SUCCESS;
|
||||
}
|
||||
@ -6390,7 +6399,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
|
||||
SLAP_MR_ORDERING, directoryStringSyntaxes,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT, directoryStringSyntaxes,
|
||||
NULL, UTF8StringNormalize, octetStringOrderingMatch,
|
||||
NULL, NULL,
|
||||
"caseIgnoreMatch" },
|
||||
@ -6411,7 +6420,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.6 NAME 'caseExactOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
|
||||
SLAP_MR_ORDERING, directoryStringSyntaxes,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT, directoryStringSyntaxes,
|
||||
NULL, UTF8StringNormalize, octetStringOrderingMatch,
|
||||
NULL, NULL,
|
||||
"caseExactMatch" },
|
||||
@ -6432,7 +6441,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.9 NAME 'numericStringOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )",
|
||||
SLAP_MR_ORDERING, NULL,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT, NULL,
|
||||
NULL, numericStringNormalize, octetStringOrderingMatch,
|
||||
NULL, NULL,
|
||||
"numericStringMatch" },
|
||||
@ -6473,7 +6482,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.15 NAME 'integerOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )",
|
||||
SLAP_MR_ORDERING | SLAP_MR_ORDERED_INDEX, NULL,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT | SLAP_MR_ORDERED_INDEX, NULL,
|
||||
NULL, NULL, integerMatch,
|
||||
NULL, NULL,
|
||||
"integerMatch" },
|
||||
@ -6494,7 +6503,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.18 NAME 'octetStringOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )",
|
||||
SLAP_MR_ORDERING, NULL,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT, NULL,
|
||||
NULL, NULL, octetStringOrderingMatch,
|
||||
NULL, NULL,
|
||||
"octetStringMatch" },
|
||||
@ -6547,7 +6556,7 @@ static slap_mrule_defs_rec mrule_defs[] = {
|
||||
|
||||
{"( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' "
|
||||
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )",
|
||||
SLAP_MR_ORDERING | SLAP_MR_ORDERED_INDEX, NULL,
|
||||
SLAP_MR_ORDERING | SLAP_MR_EXT | SLAP_MR_ORDERED_INDEX, NULL,
|
||||
NULL, generalizedTimeNormalize, generalizedTimeOrderingMatch,
|
||||
NULL, NULL,
|
||||
"generalizedTimeMatch" },
|
||||
|
Loading…
Reference in New Issue
Block a user