2 Unix SMB/CIFS mplementation.
5 Copyright (C) Stefan Metzmacher <metze@samba.org> 2006
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef _DSDB_SCHEMA_H
23 #define _DSDB_SCHEMA_H
25 #include "prefixmap.h"
27 struct dsdb_attribute
;
35 struct ldb_val oMObjectClass
;
36 const char *attributeSyntax_oid
;
38 const char *substring
;
40 const char *ldb_syntax
;
42 WERROR (*drsuapi_to_ldb
)(struct ldb_context
*ldb
,
43 const struct dsdb_schema
*schema
,
44 const struct dsdb_attribute
*attr
,
45 const struct drsuapi_DsReplicaAttribute
*in
,
47 struct ldb_message_element
*out
);
48 WERROR (*ldb_to_drsuapi
)(struct ldb_context
*ldb
,
49 const struct dsdb_schema
*schema
,
50 const struct dsdb_attribute
*attr
,
51 const struct ldb_message_element
*in
,
53 struct drsuapi_DsReplicaAttribute
*out
);
56 struct dsdb_attribute
{
57 struct dsdb_attribute
*prev
, *next
;
60 const char *lDAPDisplayName
;
61 const char *attributeID_oid
;
62 uint32_t attributeID_id
;
63 struct GUID schemaIDGUID
;
66 struct GUID attributeSecurityGUID
;
67 struct GUID objectGUID
;
71 bool isMemberOfPartialAttributeSet
;
74 const char *attributeSyntax_oid
;
75 uint32_t attributeSyntax_id
;
77 struct ldb_val oMObjectClass
;
82 bool extendedCharsAllowed
;
84 uint32_t schemaFlagsEx
;
85 struct ldb_val msDs_Schema_Extensions
;
87 bool showInAdvancedViewOnly
;
88 const char *adminDisplayName
;
89 const char *adminDescription
;
90 const char *classDisplayName
;
96 const struct dsdb_syntax
*syntax
;
97 const struct ldb_schema_attribute
*ldb_schema_attribute
;
101 struct dsdb_class
*prev
, *next
;
104 const char *lDAPDisplayName
;
105 const char *governsID_oid
;
106 uint32_t governsID_id
;
107 struct GUID schemaIDGUID
;
108 struct GUID objectGUID
;
110 uint32_t objectClassCategory
;
111 const char *rDNAttID
;
112 const char *defaultObjectCategory
;
114 const char *subClassOf
;
116 const char **systemAuxiliaryClass
;
117 const char **systemPossSuperiors
;
118 const char **systemMustContain
;
119 const char **systemMayContain
;
121 const char **auxiliaryClass
;
122 const char **possSuperiors
;
123 const char **mustContain
;
124 const char **mayContain
;
125 const char **possibleInferiors
;
126 const char **systemPossibleInferiors
;
128 const char *defaultSecurityDescriptor
;
130 uint32_t schemaFlagsEx
;
131 struct ldb_val msDs_Schema_Extensions
;
133 bool showInAdvancedViewOnly
;
134 const char *adminDisplayName
;
135 const char *adminDescription
;
136 const char *classDisplayName
;
137 bool defaultHidingValue
;
141 const char **supclasses
;
142 const char **subclasses
;
143 const char **subclasses_direct
;
144 const char **posssuperiors
;
145 uint32_t subClassOf_id
;
146 uint32_t *systemAuxiliaryClass_ids
;
147 uint32_t *auxiliaryClass_ids
;
148 uint32_t *systemMayContain_ids
;
149 uint32_t *systemMustContain_ids
;
150 uint32_t *possSuperiors_ids
;
151 uint32_t *mustContain_ids
;
152 uint32_t *mayContain_ids
;
153 uint32_t *systemPossSuperiors_ids
;
155 /* An ordered index showing how this subClass fits into the
156 * subClass tree. that is, an objectclass that is not
157 * subClassOf anything is 0 (just in case), and top is 1, and
158 * subClasses of top are 2, subclasses of those classes are
160 uint32_t subClass_order
;
166 struct dsdb_schema_prefixmap
*prefixmap
;
169 * the last element of the prefix mapping table isn't a oid,
170 * it starts with 0xFF and has 21 bytes and is maybe a schema
173 * this is the content of the schemaInfo attribute of the
174 * Schema-Partition head object.
176 const char *schema_info
;
178 struct dsdb_attribute
*attributes
;
179 struct dsdb_class
*classes
;
181 /* lists of classes sorted by various attributes, for faster
183 uint32_t num_classes
;
184 struct dsdb_class
**classes_by_lDAPDisplayName
;
185 struct dsdb_class
**classes_by_governsID_id
;
186 struct dsdb_class
**classes_by_governsID_oid
;
187 struct dsdb_class
**classes_by_cn
;
189 /* lists of attributes sorted by various fields */
190 uint32_t num_attributes
;
191 struct dsdb_attribute
**attributes_by_lDAPDisplayName
;
192 struct dsdb_attribute
**attributes_by_attributeID_id
;
193 struct dsdb_attribute
**attributes_by_attributeID_oid
;
194 struct dsdb_attribute
**attributes_by_linkID
;
198 struct ldb_dn
*master_dn
;
201 struct smb_iconv_convenience
*iconv_convenience
;
204 enum dsdb_attr_list_query
{
206 DSDB_SCHEMA_ALL_MUST
,
208 DSDB_SCHEMA_SYS_MUST
,
214 enum dsdb_schema_convert_target
{
217 TARGET_AD_SCHEMA_SUBENTRY
220 #include "dsdb/schema/proto.h"
222 #endif /* _DSDB_SCHEMA_H */