Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
openldap
OpenLDAP
Commits
1086ffb4
Commit
1086ffb4
authored
Aug 29, 2002
by
Kurt Zeilenga
Browse files
Round one of subclass indexing for objectClass and structualObjectClasss.
add soc_cname to ObjectClass structure
parent
b9cd3616
Changes
5
Hide whitespace changes
Inline
Side-by-side
servers/slapd/oc.c
View file @
1086ffb4
...
@@ -434,6 +434,13 @@ oc_add(
...
@@ -434,6 +434,13 @@ oc_add(
soc
=
(
ObjectClass
*
)
ch_calloc
(
1
,
sizeof
(
ObjectClass
)
);
soc
=
(
ObjectClass
*
)
ch_calloc
(
1
,
sizeof
(
ObjectClass
)
);
AC_MEMCPY
(
&
soc
->
soc_oclass
,
oc
,
sizeof
(
LDAPObjectClass
)
);
AC_MEMCPY
(
&
soc
->
soc_oclass
,
oc
,
sizeof
(
LDAPObjectClass
)
);
if
(
oc
->
oc_names
!=
NULL
)
{
soc
->
soc_cname
.
bv_val
=
soc
->
soc_names
[
0
];
}
else
{
soc
->
soc_cname
.
bv_val
=
soc
->
soc_oid
;
}
soc
->
soc_cname
.
bv_len
=
strlen
(
soc
->
soc_cname
.
bv_val
);
if
(
soc
->
soc_sup_oids
==
NULL
&&
if
(
soc
->
soc_sup_oids
==
NULL
&&
soc
->
soc_kind
==
LDAP_SCHEMA_STRUCTURAL
)
soc
->
soc_kind
==
LDAP_SCHEMA_STRUCTURAL
)
{
{
...
...
servers/slapd/proto-slap.h
View file @
1086ffb4
...
@@ -893,6 +893,24 @@ LDAP_SLAPD_V( int ) schema_init_done;
...
@@ -893,6 +893,24 @@ LDAP_SLAPD_V( int ) schema_init_done;
LDAP_SLAPD_F
(
int
)
slap_schema_init
LDAP_P
((
void
));
LDAP_SLAPD_F
(
int
)
slap_schema_init
LDAP_P
((
void
));
LDAP_SLAPD_F
(
void
)
schema_destroy
LDAP_P
((
void
));
LDAP_SLAPD_F
(
void
)
schema_destroy
LDAP_P
((
void
));
LDAP_SLAPD_F
(
int
)
octetStringIndexer
(
slap_mask_t
use
,
slap_mask_t
flags
,
Syntax
*
syntax
,
MatchingRule
*
mr
,
struct
berval
*
prefix
,
BerVarray
values
,
BerVarray
*
keysp
);
LDAP_SLAPD_F
(
int
)
octetStringFilter
(
slap_mask_t
use
,
slap_mask_t
flags
,
Syntax
*
syntax
,
MatchingRule
*
mr
,
struct
berval
*
prefix
,
void
*
assertValue
,
BerVarray
*
keysp
);
/*
/*
* schema_prep.c
* schema_prep.c
*/
*/
...
...
servers/slapd/schema_init.c
View file @
1086ffb4
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
/* recycled matching routines */
/* recycled matching routines */
#define bitStringMatch octetStringMatch
#define bitStringMatch octetStringMatch
#define numericStringMatch caseIgnoreIA5Match
#define numericStringMatch caseIgnoreIA5Match
#define objectIdentifierMatch
caseIgnoreIA5
Match
#define objectIdentifierMatch
octetString
Match
#define telephoneNumberMatch caseIgnoreIA5Match
#define telephoneNumberMatch caseIgnoreIA5Match
#define telephoneNumberSubstringsMatch caseIgnoreIA5SubstringsMatch
#define telephoneNumberSubstringsMatch caseIgnoreIA5SubstringsMatch
#define generalizedTimeMatch caseIgnoreIA5Match
#define generalizedTimeMatch caseIgnoreIA5Match
...
@@ -138,7 +138,7 @@ octetStringMatch(
...
@@ -138,7 +138,7 @@ octetStringMatch(
}
}
/* Index generation function */
/* Index generation function */
static
int
octetStringIndexer
(
int
octetStringIndexer
(
slap_mask_t
use
,
slap_mask_t
use
,
slap_mask_t
flags
,
slap_mask_t
flags
,
Syntax
*
syntax
,
Syntax
*
syntax
,
...
@@ -186,6 +186,7 @@ static int octetStringIndexer(
...
@@ -186,6 +186,7 @@ static int octetStringIndexer(
}
}
keys
[
i
].
bv_val
=
NULL
;
keys
[
i
].
bv_val
=
NULL
;
keys
[
i
].
bv_len
=
0
;
*
keysp
=
keys
;
*
keysp
=
keys
;
...
@@ -193,7 +194,7 @@ static int octetStringIndexer(
...
@@ -193,7 +194,7 @@ static int octetStringIndexer(
}
}
/* Index generation function */
/* Index generation function */
static
int
octetStringFilter
(
int
octetStringFilter
(
slap_mask_t
use
,
slap_mask_t
use
,
slap_mask_t
flags
,
slap_mask_t
flags
,
Syntax
*
syntax
,
Syntax
*
syntax
,
...
@@ -231,6 +232,7 @@ static int octetStringFilter(
...
@@ -231,6 +232,7 @@ static int octetStringFilter(
ber_dupbv
(
keys
,
&
digest
);
ber_dupbv
(
keys
,
&
digest
);
keys
[
1
].
bv_val
=
NULL
;
keys
[
1
].
bv_val
=
NULL
;
keys
[
1
].
bv_len
=
0
;
*
keysp
=
keys
;
*
keysp
=
keys
;
...
...
servers/slapd/schema_prep.c
View file @
1086ffb4
...
@@ -21,8 +21,36 @@ int schema_init_done = 0;
...
@@ -21,8 +21,36 @@ int schema_init_done = 0;
struct
slap_internal_schema
slap_schema
;
struct
slap_internal_schema
slap_schema
;
static
int
objectClassNormalize
(
slap_mask_t
use
,
struct
slap_syntax
*
syntax
,
/* NULL if in is asserted value */
struct
slap_matching_rule
*
mr
,
struct
berval
*
in
,
struct
berval
*
out
)
{
ObjectClass
*
oc
=
oc_bvfind
(
in
);
if
(
oc
!=
NULL
)
{
ber_dupbv
(
out
,
&
oc
->
soc_cname
);
}
else
{
ber_dupbv
(
out
,
in
);
}
#if 0
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
"< objectClassNormalize(%s, %s)\n", in->bv_val, out->bv_val, 0 );
#else
Debug( LDAP_DEBUG_TRACE, "< objectClassNormalize(%s,%s)\n",
in->bv_val, out->bv_val, 0 );
#endif
#endif
return
LDAP_SUCCESS
;
}
static
int
static
int
objectClassMatch
(
object
Sub
ClassMatch
(
int
*
matchp
,
int
*
matchp
,
slap_mask_t
flags
,
slap_mask_t
flags
,
Syntax
*
syntax
,
Syntax
*
syntax
,
...
@@ -34,12 +62,12 @@ objectClassMatch(
...
@@ -34,12 +62,12 @@ objectClassMatch(
ObjectClass
*
oc
=
oc_bvfind
(
value
);
ObjectClass
*
oc
=
oc_bvfind
(
value
);
ObjectClass
*
asserted
=
oc_bvfind
(
a
);
ObjectClass
*
asserted
=
oc_bvfind
(
a
);
#if
1
#if
0
#ifdef NEW_LOGGING
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
LDAP_LOG( CONFIG, ENTRY,
"> objectClassMatch(%s, %s)
\n
"
,
value
->
bv_val
,
a
->
bv_val
,
0
);
"> object
Sub
ClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
#else
#else
Debug
(
LDAP_DEBUG_TRACE
,
"> objectClassMatch(%s,%s)
\n
"
,
Debug( LDAP_DEBUG_TRACE, "> object
Sub
ClassMatch(%s,%s)\n",
value->bv_val, a->bv_val, 0 );
value->bv_val, a->bv_val, 0 );
#endif
#endif
#endif
#endif
...
@@ -66,13 +94,13 @@ objectClassMatch(
...
@@ -66,13 +94,13 @@ objectClassMatch(
*
matchp
=
!
is_object_subclass
(
asserted
,
oc
);
*
matchp
=
!
is_object_subclass
(
asserted
,
oc
);
}
}
#if
1
#if
0
#ifdef NEW_LOGGING
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
LDAP_LOG( CONFIG, ENTRY,
"< objectClassMatch(%s, %s) = %d
\n
"
,
"< object
Sub
ClassMatch(%s, %s) = %d\n",
value->bv_val, a->bv_val, *matchp );
value->bv_val, a->bv_val, *matchp );
#else
#else
Debug
(
LDAP_DEBUG_TRACE
,
"< objectClassMatch(%s,%s) = %d
\n
"
,
Debug( LDAP_DEBUG_TRACE, "< object
Sub
ClassMatch(%s,%s) = %d\n",
value->bv_val, a->bv_val, *matchp );
value->bv_val, a->bv_val, *matchp );
#endif
#endif
#endif
#endif
...
@@ -80,64 +108,118 @@ objectClassMatch(
...
@@ -80,64 +108,118 @@ objectClassMatch(
return
LDAP_SUCCESS
;
return
LDAP_SUCCESS
;
}
}
#if 1
static
int
objectSubClassIndexer
(
#define structuralObjectClassMatch objectClassMatch
slap_mask_t
use
,
#else
slap_mask_t
mask
,
static
int
struct
slap_syntax
*
syntax
,
structuralObjectClassMatch
(
struct
slap_matching_rule
*
mr
,
int
*
matchp
,
struct
berval
*
prefix
,
slap_mask_t
flags
,
BerVarray
values
,
Syntax
*
syntax
,
BerVarray
*
keysp
)
MatchingRule
*
mr
,
struct
berval
*
value
,
void
*
assertedValue
)
{
{
struct
berval
*
a
=
(
struct
berval
*
)
assertedValue
;
int
rc
,
noc
,
i
;
ObjectClass
*
oc
=
oc_bvfind
(
value
);
BerVarray
ocvalues
;
ObjectClass
*
asserted
=
oc_bvfind
(
a
);
for
(
noc
=
0
;
values
[
noc
].
bv_val
!=
NULL
;
noc
++
)
{
#if 0
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
"> objectSubClassIndexer(%d, %s)\n",
noc, values[noc].bv_val, 0 );
#else
Debug( LDAP_DEBUG_TRACE,
"> objectSubClassIndexer(%d, %s)\n",
noc, values[noc].bv_val, 0 );
#endif
#endif
/* just count em */
;
}
/* over allocate */
ocvalues
=
ch_malloc
(
sizeof
(
struct
berval
)
*
(
noc
+
16
)
);
#if 1
/* copy listed values (and termination) */
AC_MEMCPY
(
ocvalues
,
values
,
sizeof
(
struct
berval
)
*
noc
+
1
);
/* expand values */
for
(
i
=
0
;
i
<
noc
;
i
++
)
{
int
j
;
ObjectClass
*
oc
=
oc_bvfind
(
&
values
[
i
]
);
if
(
oc
==
NULL
||
oc
->
soc_sups
==
NULL
)
continue
;
for
(
j
=
0
;
oc
->
soc_sups
[
j
]
!=
NULL
;
j
++
)
{
int
found
=
0
;
ObjectClass
*
sup
=
oc
->
soc_sups
[
j
];
int
k
;
for
(
k
=
0
;
k
<
noc
;
k
++
)
{
#if 0
#ifdef NEW_LOGGING
#ifdef NEW_LOGGING
LDAP_LOG
(
CONFIG
,
ENTRY
,
LDAP_LOG( CONFIG, ENTRY,
"> structuralObjectClassMatch(%s, %s)
\n
"
,
value
->
bv_val
,
a
->
bv_val
,
0
);
"= objectSubClassIndexer(%d, %s, %s)\n",
k, ocvalues[k].bv_val, sup->soc_cname.bv_val );
#else
#else
Debug
(
LDAP_DEBUG_TRACE
,
"> structuralObjectClassMatch(%s,%s)
\n
"
,
Debug( LDAP_DEBUG_TRACE,
value
->
bv_val
,
a
->
bv_val
,
0
);
"= objectSubClassIndexer(%d, %s, %s)\n",
k, ocvalues[k].bv_val, sup->soc_cname.bv_val );
#endif
#endif
#endif
#endif
if
(
ber_bvcmp
(
&
ocvalues
[
k
],
&
sup
->
soc_cname
)
==
0
)
{
found
++
;
break
;
}
}
if
(
asserted
==
NULL
)
{
if
(
!
found
)
{
if
(
OID_LEADCHAR
(
*
a
->
bv_val
)
)
{
ocvalues
=
ch_realloc
(
ocvalues
,
/* OID form, return FALSE */
sizeof
(
struct
berval
)
*
(
noc
+
2
)
);
*
matchp
=
1
;
return
LDAP_SUCCESS
;
}
/* desc form, return undefined */
assert
(
k
==
noc
);
return
SLAPD_COMPARE_UNDEFINED
;
}
if
(
oc
==
NULL
)
{
ocvalues
[
noc
]
=
sup
->
soc_cname
;
/* unrecognized stored value */
return
SLAPD_COMPARE_UNDEFINED
;
assert
(
ocvalues
[
noc
].
bv_val
)
;
}
assert
(
ocvalues
[
noc
].
bv_len
);
*
matchp
=
(
asserted
!=
oc
)
;
noc
++
;
#if 1
ocvalues
[
noc
].
bv_len
=
0
;
ocvalues
[
noc
].
bv_val
=
NULL
;
#if 0
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
"< objectSubClassIndexer(%d, %d, %s)\n",
i, k, sup->soc_cname.bv_val );
#else
Debug( LDAP_DEBUG_TRACE,
"< objectSubClassIndexer(%d, %d, %s)\n",
i, k, sup->soc_cname.bv_val );
#endif
#endif
}
}
}
#if 0
#ifdef NEW_LOGGING
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ENTRY,
LDAP_LOG( CONFIG, ENTRY,
"< structuralObjectClassMatch( %s, %s ) = %d
\n
"
,
"< objectSubClassIndexer(%d)\n", noc, 0, 0 );
value
->
bv_val
,
a
->
bv_val
,
*
matchp
);
#else
#else
Debug
(
LDAP_DEBUG_TRACE
,
"<
structuralO
bjectClass
Match(%s,%s) = %d
\n
"
,
Debug( LDAP_DEBUG_TRACE, "<
o
bject
Sub
Class
Indexer(%d)
\n",
value
->
bv_val
,
a
->
bv_val
,
*
matchp
);
noc, 0, 0
);
#endif
#endif
#endif
#endif
return
LDAP_SUCCESS
;
rc
=
octetStringIndexer
(
use
,
mask
,
syntax
,
mr
,
prefix
,
ocvalues
,
keysp
);
ch_free
(
ocvalues
);
return
rc
;
}
}
#endif
#define objectSubClassFilter octetStringFilter
static
ObjectClassSchemaCheckFN
rootDseObjectClass
;
static
ObjectClassSchemaCheckFN
rootDseObjectClass
;
static
ObjectClassSchemaCheckFN
aliasObjectClass
;
static
ObjectClassSchemaCheckFN
aliasObjectClass
;
...
@@ -225,6 +307,8 @@ static struct slap_schema_ad_map {
...
@@ -225,6 +307,8 @@ static struct slap_schema_ad_map {
char
*
ssam_defn
;
char
*
ssam_defn
;
AttributeTypeSchemaCheckFN
*
ssam_check
;
AttributeTypeSchemaCheckFN
*
ssam_check
;
slap_mask_t
ssam_flags
;
slap_mask_t
ssam_flags
;
slap_mr_convert_func
*
ssam_convert
;
slap_mr_normalize_func
*
ssam_normalize
;
slap_mr_match_func
*
ssam_match
;
slap_mr_match_func
*
ssam_match
;
slap_mr_indexer_func
*
ssam_indexer
;
slap_mr_indexer_func
*
ssam_indexer
;
slap_mr_filter_func
*
ssam_filter
;
slap_mr_filter_func
*
ssam_filter
;
...
@@ -234,7 +318,9 @@ static struct slap_schema_ad_map {
...
@@ -234,7 +318,9 @@ static struct slap_schema_ad_map {
"DESC 'RFC2256: object classes of the entity' "
"DESC 'RFC2256: object classes of the entity' "
"EQUALITY objectIdentifierMatch "
"EQUALITY objectIdentifierMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )"
,
NULL
,
SLAP_AT_FINAL
,
objectClassMatch
,
NULL
,
NULL
,
NULL
,
SLAP_AT_FINAL
,
NULL
,
objectClassNormalize
,
objectSubClassMatch
,
objectSubClassIndexer
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_objectClass
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_objectClass
)
},
/* user entry operational attributes */
/* user entry operational attributes */
...
@@ -243,7 +329,9 @@ static struct slap_schema_ad_map {
...
@@ -243,7 +329,9 @@ static struct slap_schema_ad_map {
"EQUALITY objectIdentifierMatch "
"EQUALITY objectIdentifierMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
structuralObjectClassMatch
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
objectClassNormalize
,
objectSubClassMatch
,
objectSubClassIndexer
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_structuralObjectClass
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_structuralObjectClass
)
},
{
"createTimestamp"
,
"( 2.5.18.1 NAME 'createTimestamp' "
{
"createTimestamp"
,
"( 2.5.18.1 NAME 'createTimestamp' "
"DESC 'RFC2252: time which object was created' "
"DESC 'RFC2252: time which object was created' "
...
@@ -251,7 +339,8 @@ static struct slap_schema_ad_map {
...
@@ -251,7 +339,8 @@ static struct slap_schema_ad_map {
"ORDERING generalizedTimeOrderingMatch "
"ORDERING generalizedTimeOrderingMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_createTimestamp
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_createTimestamp
)
},
{
"modifyTimestamp"
,
"( 2.5.18.2 NAME 'modifyTimestamp' "
{
"modifyTimestamp"
,
"( 2.5.18.2 NAME 'modifyTimestamp' "
"DESC 'RFC2252: time which object was last modified' "
"DESC 'RFC2252: time which object was last modified' "
...
@@ -259,48 +348,55 @@ static struct slap_schema_ad_map {
...
@@ -259,48 +348,55 @@ static struct slap_schema_ad_map {
"ORDERING generalizedTimeOrderingMatch "
"ORDERING generalizedTimeOrderingMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_modifyTimestamp
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_modifyTimestamp
)
},
{
"creatorsName"
,
"( 2.5.18.3 NAME 'creatorsName' "
{
"creatorsName"
,
"( 2.5.18.3 NAME 'creatorsName' "
"DESC 'RFC2252: name of creator' "
"DESC 'RFC2252: name of creator' "
"EQUALITY distinguishedNameMatch "
"EQUALITY distinguishedNameMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_creatorsName
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_creatorsName
)
},
{
"modifiersName"
,
"( 2.5.18.4 NAME 'modifiersName' "
{
"modifiersName"
,
"( 2.5.18.4 NAME 'modifiersName' "
"DESC 'RFC2252: name of last modifier' "
"DESC 'RFC2252: name of last modifier' "
"EQUALITY distinguishedNameMatch "
"EQUALITY distinguishedNameMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_modifiersName
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_modifiersName
)
},
{
"hasSubordinates"
,
"( 2.5.18.9 NAME 'hasSubordinates' "
{
"hasSubordinates"
,
"( 2.5.18.9 NAME 'hasSubordinates' "
"DESC 'X.501: entry has children' "
"DESC 'X.501: entry has children' "
"EQUALITY booleanMatch "
"EQUALITY booleanMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_hasSubordinates
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_hasSubordinates
)
},
{
"subschemaSubentry"
,
"( 2.5.18.10 NAME 'subschemaSubentry' "
{
"subschemaSubentry"
,
"( 2.5.18.10 NAME 'subschemaSubentry' "
"DESC 'RFC2252: name of controlling subschema entry' "
"DESC 'RFC2252: name of controlling subschema entry' "
"EQUALITY distinguishedNameMatch "
"EQUALITY distinguishedNameMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE "
"NO-USER-MODIFICATION USAGE directoryOperation )"
,
"NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_subschemaSubentry
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_subschemaSubentry
)
},
{
"collectiveAttributeSubentries"
,
"( 2.5.18.12 "
{
"collectiveAttributeSubentries"
,
"( 2.5.18.12 "
"NAME 'collectiveAttributeSubentries' "
"NAME 'collectiveAttributeSubentries' "
"EQUALITY distinguishedNameMatch "
"EQUALITY distinguishedNameMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
"NO-USER-MODIFICATION USAGE directoryOperation )"
,
"NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_collectiveSubentries
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_collectiveSubentries
)
},
{
"collectiveExclusions"
,
"( 2.5.18.7 NAME 'collectiveExclusions' "
{
"collectiveExclusions"
,
"( 2.5.18.7 NAME 'collectiveExclusions' "
"EQUALITY objectIdentifierMatch "
"EQUALITY objectIdentifierMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
"USAGE directoryOperation )"
,
"USAGE directoryOperation )"
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_collectiveExclusions
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_collectiveExclusions
)
},
{
"entryUUID"
,
"( 1.3.6.1.4.1.4203.666.1.6 NAME 'entryUUID' "
{
"entryUUID"
,
"( 1.3.6.1.4.1.4203.666.1.6 NAME 'entryUUID' "
...
@@ -308,51 +404,59 @@ static struct slap_schema_ad_map {
...
@@ -308,51 +404,59 @@ static struct slap_schema_ad_map {
"EQUALITY octetStringMatch "
"EQUALITY octetStringMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_entryUUID
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_entryUUID
)
},
{
"entryCSN"
,
"( 1.3.6.1.4.1.4203.666.1.7 NAME 'entryCSN' "
{
"entryCSN"
,
"( 1.3.6.1.4.1.4203.666.1.7 NAME 'entryCSN' "
"DESC 'LCUP/LDUP: change sequence number' "
"DESC 'LCUP/LDUP: change sequence number' "
"EQUALITY octetStringMatch "
"EQUALITY octetStringMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
SLAP_AT_HIDE
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_entryCSN
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_entryCSN
)
},
/* root DSE attributes */
/* root DSE attributes */
{
"altServer"
,
"( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer' "
{
"altServer"
,
"( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer' "
"DESC 'RFC2252: alternative servers' "
"DESC 'RFC2252: alternative servers' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_altServer
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_altServer
)
},
{
"namingContexts"
,
"( 1.3.6.1.4.1.1466.101.120.5 "
{
"namingContexts"
,
"( 1.3.6.1.4.1.1466.101.120.5 "
"NAME 'namingContexts' "
"NAME 'namingContexts' "
"DESC 'RFC2252: naming contexts' "
"DESC 'RFC2252: naming contexts' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_namingContexts
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_namingContexts
)
},
{
"supportedControl"
,
"( 1.3.6.1.4.1.1466.101.120.13 "
{
"supportedControl"
,
"( 1.3.6.1.4.1.1466.101.120.13 "
"NAME 'supportedControl' "
"NAME 'supportedControl' "
"DESC 'RFC2252: supported controls' "
"DESC 'RFC2252: supported controls' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedControl
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedControl
)
},
{
"supportedExtension"
,
"( 1.3.6.1.4.1.1466.101.120.7 "
{
"supportedExtension"
,
"( 1.3.6.1.4.1.1466.101.120.7 "
"NAME 'supportedExtension' "
"NAME 'supportedExtension' "
"DESC 'RFC2252: supported extended operations' "
"DESC 'RFC2252: supported extended operations' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedExtension
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedExtension
)
},
{
"supportedLDAPVersion"
,
"( 1.3.6.1.4.1.1466.101.120.15 "
{
"supportedLDAPVersion"
,
"( 1.3.6.1.4.1.1466.101.120.15 "
"NAME 'supportedLDAPVersion' "
"NAME 'supportedLDAPVersion' "
"DESC 'RFC2252: supported LDAP versions' "
"DESC 'RFC2252: supported LDAP versions' "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedLDAPVersion
)
},
offsetof
(
struct
slap_internal_schema
,
si_ad_supportedLDAPVersion
)
},
{
"supportedSASLMechanisms"
,
"( 1.3.6.1.4.1.1466.101.120.14 "
{
"supportedSASLMechanisms"
,
"( 1.3.6.1.4.1.1466.101.120.14 "
"NAME 'supportedSASLMechanisms' "
"NAME 'supportedSASLMechanisms' "
"DESC 'RFC2252: supported SASL mechanisms'"
"DESC 'RFC2252: supported SASL mechanisms'"
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE dSAOperation )"
,
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE dSAOperation )"
,
rootDseAttribute
,
0
,
NULL
,
NULL
,
NULL
,
rootDseAttribute
,
0
,