mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
Note the ldb syntax for attribute syntaxes in the table.
This includes additional Samba-specific syntaxes made available from the ldif_handlers code. This commit also changes some table to use #defines, to ensure consistancy in other parts of the code. Andrew Bartlett
This commit is contained in:
parent
0aebae91be
commit
e26a5efd9a
2
.gitignore
vendored
2
.gitignore
vendored
@ -55,7 +55,7 @@ source/ldap_server/proto.h
|
||||
source/lib/db_wrap_proto.h
|
||||
source/lib/charset/charset_proto.h
|
||||
source/lib/cmdline/credentials.h
|
||||
source/lib/ldb/samba/ldif_handlers.h
|
||||
source/lib/ldb/samba/ldif_handlers_proto.h
|
||||
source/lib/registry/regf.h
|
||||
source/lib/registry/tdr_regf.c
|
||||
source/lib/registry/tdr_regf.h
|
||||
|
@ -31,6 +31,7 @@ struct event_context;
|
||||
|
||||
#include "librpc/gen_ndr/security.h"
|
||||
#include "lib/ldb/include/ldb.h"
|
||||
#include "lib/ldb-samba/ldif_handlers.h"
|
||||
#include "librpc/gen_ndr/samr.h"
|
||||
#include "librpc/gen_ndr/drsuapi.h"
|
||||
#include "librpc/gen_ndr/drsblobs.h"
|
||||
|
@ -35,6 +35,7 @@ struct dsdb_syntax {
|
||||
const char *equality;
|
||||
const char *substring;
|
||||
const char *comment;
|
||||
const char *ldb_syntax;
|
||||
|
||||
WERROR (*drsuapi_to_ldb)(const struct dsdb_schema *schema,
|
||||
const struct dsdb_attribute *attr,
|
||||
|
@ -1111,7 +1111,6 @@ static WERROR dsdb_syntax_PRESENTATION_ADDRESS_ldb_to_drsuapi(const struct dsdb_
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
|
||||
#define OMOBJECTCLASS(val) { .length = sizeof(val) - 1, .data = discard_const_p(uint8_t, val) }
|
||||
|
||||
static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
@ -1126,31 +1125,32 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.comment = "Boolean"
|
||||
},{
|
||||
.name = "Integer",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.27",
|
||||
.ldap_oid = LDB_SYNTAX_INTEGER,
|
||||
.oMSyntax = 2,
|
||||
.attributeSyntax_oid = "2.5.5.9",
|
||||
.drsuapi_to_ldb = dsdb_syntax_INT32_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_INT32_ldb_to_drsuapi,
|
||||
.equality = "integerMatch",
|
||||
.comment = "Integer"
|
||||
.comment = "Integer",
|
||||
},{
|
||||
.name = "String(Octet)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.40",
|
||||
.ldap_oid = LDB_SYNTAX_OCTET_STRING,
|
||||
.oMSyntax = 4,
|
||||
.attributeSyntax_oid = "2.5.5.10",
|
||||
.drsuapi_to_ldb = dsdb_syntax_DATA_BLOB_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_DATA_BLOB_ldb_to_drsuapi,
|
||||
.equality = "octetStringMatch",
|
||||
.comment = "Octet String"
|
||||
.comment = "Octet String",
|
||||
},{
|
||||
.name = "String(Sid)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.40",
|
||||
.ldap_oid = LDB_SYNTAX_OCTET_STRING,
|
||||
.oMSyntax = 4,
|
||||
.attributeSyntax_oid = "2.5.5.17",
|
||||
.drsuapi_to_ldb = dsdb_syntax_DATA_BLOB_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_DATA_BLOB_ldb_to_drsuapi,
|
||||
.equality = "octetStringMatch",
|
||||
.comment = "Octet String - Security Identifier (SID)"
|
||||
.comment = "Octet String - Security Identifier (SID)",
|
||||
.ldb_syntax = LDB_SYNTAX_SAMBA_SID
|
||||
},{
|
||||
.name = "String(Object-Identifier)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.38",
|
||||
@ -1159,10 +1159,11 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_OID_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_OID_ldb_to_drsuapi,
|
||||
.equality = "caseIgnoreMatch", /* Would use "objectIdentifierMatch" but most are ldap attribute/class names */
|
||||
.comment = "OID String"
|
||||
.comment = "OID String",
|
||||
.ldb_syntax = LDB_SYNTAX_DIRECTORY_STRING
|
||||
},{
|
||||
.name = "Enumeration",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.27",
|
||||
.ldap_oid = LDB_SYNTAX_INTEGER,
|
||||
.oMSyntax = 10,
|
||||
.attributeSyntax_oid = "2.5.5.9",
|
||||
.drsuapi_to_ldb = dsdb_syntax_INT32_drsuapi_to_ldb,
|
||||
@ -1194,7 +1195,8 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.ldb_to_drsuapi = dsdb_syntax_DATA_BLOB_ldb_to_drsuapi,
|
||||
.equality = "caseIgnoreMatch",
|
||||
.substring = "caseIgnoreSubstringsMatch",
|
||||
.comment = "Case Insensitive String"
|
||||
.comment = "Case Insensitive String",
|
||||
.ldb_syntax = LDB_SYNTAX_DIRECTORY_STRING,
|
||||
},{
|
||||
.name = "String(IA5)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.26",
|
||||
@ -1212,7 +1214,7 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_NTTIME_UTC_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_NTTIME_UTC_ldb_to_drsuapi,
|
||||
.equality = "generalizedTimeMatch",
|
||||
.comment = "UTC Time"
|
||||
.comment = "UTC Time",
|
||||
},{
|
||||
.name = "String(Generalized-Time)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.24",
|
||||
@ -1221,7 +1223,8 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_NTTIME_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_NTTIME_ldb_to_drsuapi,
|
||||
.equality = "generalizedTimeMatch",
|
||||
.comment = "Generalized Time"
|
||||
.comment = "Generalized Time",
|
||||
.ldb_syntax = LDB_SYNTAX_UTC_TIME,
|
||||
},{
|
||||
/* not used in w2k3 schema */
|
||||
.name = "String(Case Sensitive)",
|
||||
@ -1232,14 +1235,14 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.ldb_to_drsuapi = dsdb_syntax_FOOBAR_ldb_to_drsuapi,
|
||||
},{
|
||||
.name = "String(Unicode)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.15",
|
||||
.ldap_oid = LDB_SYNTAX_DIRECTORY_STRING,
|
||||
.oMSyntax = 64,
|
||||
.attributeSyntax_oid = "2.5.5.12",
|
||||
.drsuapi_to_ldb = dsdb_syntax_UNICODE_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_UNICODE_ldb_to_drsuapi,
|
||||
.equality = "caseIgnoreMatch",
|
||||
.substring = "caseIgnoreSubstringsMatch",
|
||||
.comment = "Directory String"
|
||||
.comment = "Directory String",
|
||||
},{
|
||||
.name = "Interval/LargeInteger",
|
||||
.ldap_oid = "1.2.840.113556.1.4.906",
|
||||
@ -1248,24 +1251,25 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_INT64_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_INT64_ldb_to_drsuapi,
|
||||
.equality = "integerMatch",
|
||||
.comment = "Large Integer"
|
||||
.comment = "Large Integer",
|
||||
.ldb_syntax = LDB_SYNTAX_INTEGER,
|
||||
},{
|
||||
.name = "String(NT-Sec-Desc)",
|
||||
.ldap_oid = "1.2.840.113556.1.4.907",
|
||||
.ldap_oid = LDB_SYNTAX_SAMBA_SECURITY_DESCRIPTOR,
|
||||
.oMSyntax = 66,
|
||||
.attributeSyntax_oid = "2.5.5.15",
|
||||
.drsuapi_to_ldb = dsdb_syntax_DATA_BLOB_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_DATA_BLOB_ldb_to_drsuapi,
|
||||
},{
|
||||
.name = "Object(DS-DN)",
|
||||
.ldap_oid = "1.3.6.1.4.1.1466.115.121.1.12",
|
||||
.ldap_oid = LDB_SYNTAX_DN,
|
||||
.oMSyntax = 127,
|
||||
.oMObjectClass = OMOBJECTCLASS("\x2b\x0c\x02\x87\x73\x1c\x00\x85\x4a"),
|
||||
.attributeSyntax_oid = "2.5.5.1",
|
||||
.drsuapi_to_ldb = dsdb_syntax_DN_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_DN_ldb_to_drsuapi,
|
||||
.equality = "distinguishedNameMatch",
|
||||
.comment = "Object(DS-DN) == a DN"
|
||||
.comment = "Object(DS-DN) == a DN",
|
||||
},{
|
||||
.name = "Object(DN-Binary)",
|
||||
.ldap_oid = "1.2.840.113556.1.4.903",
|
||||
@ -1275,7 +1279,8 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_DN_BINARY_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_DN_BINARY_ldb_to_drsuapi,
|
||||
.equality = "distinguishedNameMatch",
|
||||
.comment = "OctetString: Binary+DN"
|
||||
.comment = "OctetString: Binary+DN",
|
||||
.ldb_syntax = LDB_SYNTAX_DN,
|
||||
},{
|
||||
/* not used in w2k3 schema */
|
||||
.name = "Object(OR-Name)",
|
||||
@ -1318,7 +1323,8 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.drsuapi_to_ldb = dsdb_syntax_FOOBAR_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_FOOBAR_ldb_to_drsuapi,
|
||||
.equality = "distinguishedNameMatch",
|
||||
.comment = "OctetString: String+DN"
|
||||
.comment = "OctetString: String+DN",
|
||||
.ldb_syntax = LDB_SYNTAX_DN,
|
||||
},{
|
||||
/* not used in w2k3 schema */
|
||||
.name = "Object(DN-String)",
|
||||
@ -1328,6 +1334,7 @@ static const struct dsdb_syntax dsdb_syntaxes[] = {
|
||||
.attributeSyntax_oid = "2.5.5.14",
|
||||
.drsuapi_to_ldb = dsdb_syntax_FOOBAR_drsuapi_to_ldb,
|
||||
.ldb_to_drsuapi = dsdb_syntax_FOOBAR_ldb_to_drsuapi,
|
||||
.ldb_syntax = LDB_SYNTAX_DN,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -7,5 +7,5 @@ PRIVATE_DEPENDENCIES = LIBSECURITY SAMDB_SCHEMA LIBNDR NDR_MISC NDR_DRSBLOBS
|
||||
################################################
|
||||
|
||||
LDBSAMBA_OBJ_FILES = $(ldb_sambasrcdir)/ldif_handlers.o
|
||||
$(eval $(call proto_header_template,$(ldb_sambasrcdir)/ldif_handlers.h,$(LDBSAMBA_OBJ_FILES:.o=.c)))
|
||||
$(eval $(call proto_header_template,$(ldb_sambasrcdir)/ldif_handlers_proto.h,$(LDBSAMBA_OBJ_FILES:.o=.c)))
|
||||
|
||||
|
@ -561,8 +561,6 @@ static int ldif_comparison_prefixMap(struct ldb_context *ldb, void *mem_ctx,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define LDB_SYNTAX_SAMBA_SID "LDB_SYNTAX_SAMBA_SID"
|
||||
#define LDB_SYNTAX_SAMBA_SECURITY_DESCRIPTOR "LDB_SYNTAX_SAMBA_SECURITY_DESCRIPTOR"
|
||||
#define LDB_SYNTAX_SAMBA_GUID "LDB_SYNTAX_SAMBA_GUID"
|
||||
#define LDB_SYNTAX_SAMBA_OBJECT_CATEGORY "LDB_SYNTAX_SAMBA_OBJECT_CATEGORY"
|
||||
#define LDB_SYNTAX_SAMBA_PREFIX_MAP "LDB_SYNTAX_SAMBA_PREFIX_MAP"
|
||||
@ -635,6 +633,21 @@ static const struct {
|
||||
{ "prefixMap", LDB_SYNTAX_SAMBA_PREFIX_MAP }
|
||||
};
|
||||
|
||||
const struct ldb_schema_syntax *ldb_samba_syntax_by_name(struct ldb_context *ldb, const char *name)
|
||||
{
|
||||
uint32_t j;
|
||||
const struct ldb_schema_syntax *s = NULL;
|
||||
|
||||
for (j=0; j < ARRAY_SIZE(samba_syntaxes); j++) {
|
||||
if (strcmp(name, samba_syntaxes[j].name) == 0) {
|
||||
s = &samba_syntaxes[j];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
register the samba ldif handlers
|
||||
*/
|
||||
@ -644,15 +657,9 @@ int ldb_register_samba_handlers(struct ldb_context *ldb)
|
||||
|
||||
for (i=0; i < ARRAY_SIZE(samba_attributes); i++) {
|
||||
int ret;
|
||||
uint32_t j;
|
||||
const struct ldb_schema_syntax *s = NULL;
|
||||
|
||||
for (j=0; j < ARRAY_SIZE(samba_syntaxes); j++) {
|
||||
if (strcmp(samba_attributes[i].syntax, samba_syntaxes[j].name) == 0) {
|
||||
s = &samba_syntaxes[j];
|
||||
break;
|
||||
}
|
||||
}
|
||||
s = ldb_samba_syntax_by_name(ldb, samba_attributes[i].syntax);
|
||||
|
||||
if (!s) {
|
||||
s = ldb_standard_syntax_by_name(ldb, samba_attributes[i].syntax);
|
||||
|
13
source/lib/ldb-samba/ldif_handlers.h
Normal file
13
source/lib/ldb-samba/ldif_handlers.h
Normal file
@ -0,0 +1,13 @@
|
||||
#ifndef __LIB_LDB_SAMBA_LDIF_HANDLERS_H__
|
||||
#define __LIB_LDB_SAMBA_LDIF_HANDLERS_H__
|
||||
|
||||
#define LDB_SYNTAX_SAMBA_SID "LDB_SYNTAX_SAMBA_SID"
|
||||
#define LDB_SYNTAX_SAMBA_SECURITY_DESCRIPTOR "1.2.840.113556.1.4.907"
|
||||
|
||||
#include "lib/ldb-samba/ldif_handlers_proto.h"
|
||||
|
||||
#undef _PRINTF_ATTRIBUTE
|
||||
#define _PRINTF_ATTRIBUTE(a1, a2)
|
||||
|
||||
#endif /* __LIB_LDB_SAMBA_LDIF_HANDLERS_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user