/* ldb database library Copyright (C) Simo Sorce 2004-2006 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Name: ldb * * Component: ldb schema module * * Description: add schema syntax functionality * * Author: Simo Sorce * * License: GNU GPL v2 or Later */ /* Syntax-Table see ldap_server/devdocs/AD-syntaxes.txt */ enum schema_internal_syntax { SCHEMA_AS_BOOLEAN = 1, SCHEMA_AS_INTEGER = 2, SCHEMA_AS_OCTET_STRING = 3, SCHEMA_AS_SID = 4, SCHEMA_AS_OID = 5, SCHEMA_AS_ENUMERATION = 6, SCHEMA_AS_NUMERIC_STRING = 7, SCHEMA_AS_PRINTABLE_STRING = 8, SCHEMA_AS_CASE_IGNORE_STRING = 9, SCHEMA_AS_IA5_STRING = 10, SCHEMA_AS_UTC_TIME = 11, SCHEMA_AS_GENERALIZED_TIME = 12, SCHEMA_AS_CASE_SENSITIVE_STRING = 13, SCHEMA_AS_DIRECTORY_STRING = 14, SCHEMA_AS_LARGE_INTEGER = 15, SCHEMA_AS_OBJECT_SECURITY_DESCRIPTOR = 16, SCHEMA_AS_DN = 17, SCHEMA_AS_DN_BINARY = 18, SCHEMA_AS_OR_NAME = 19, SCHEMA_AS_REPLICA_LINK = 20, SCHEMA_AS_PRESENTATION_ADDRESS = 21, SCHEMA_AS_ACCESS_POINT = 22, SCHEMA_AS_DN_STRING = 23 }; int map_schema_syntax(uint32_t om_syntax, const char *attr_syntax, const struct ldb_val *om_class, enum schema_internal_syntax *syntax); int schema_validate(struct ldb_context *ldb, struct ldb_message_element *el, enum schema_internal_syntax type, bool single, int min, int max);