(* $OpenLDAP: pkg/ldap/include/ldap_schema.h,v 1.32.2.3 2005/01/20 17:00:59 kurt Exp $ *) (* This work is part of OpenLDAP Software . * * Copyright 1998-2005 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . *) (* ldap-schema.h - Header for basic schema handling functions that can be * used by both clients and servers. * these routines should be renamed ldap_x_... *) (* Codes for parsing errors *) const LDAP_SCHERR_OUTOFMEM = 1; LDAP_SCHERR_UNEXPTOKEN = 2; LDAP_SCHERR_NOLEFTPAREN = 3; LDAP_SCHERR_NORIGHTPAREN = 4; LDAP_SCHERR_NODIGIT = 5; LDAP_SCHERR_BADNAME = 6; LDAP_SCHERR_BADDESC = 7; LDAP_SCHERR_BADSUP = 8; LDAP_SCHERR_DUPOPT = 9; LDAP_SCHERR_EMPTY = 10; LDAP_SCHERR_MISSING = 11; LDAP_SCHERR_OUT_OF_ORDER = 12; type pldap_schema_extension_item = ^ldap_schema_extension_item; ldap_schema_extension_item = record lsei_name : pcchar; lsei_values : ppcchar; end; PPLDAPSchemaExtensionItem = ^PLDAPSchemaExtensionItem; PLDAPSchemaExtensionItem = ^LDAPSchemaExtensionItem; LDAPSchemaExtensionItem = ldap_schema_extension_item; pldap_syntax = ^ldap_syntax; ldap_syntax = record syn_oid : pcchar; (* REQUIRED *) syn_names : ppcchar; (* OPTIONAL *) syn_desc : pcchar; (* OPTIONAL *) syn_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPSyntax = ^ldap_syntax; LDAPSyntax = ldap_syntax; pldap_matchingrule = ^ldap_matchingrule; ldap_matchingrule = record mr_oid : pcchar; (* REQUIRED *) mr_names : ppcchar; (* OPTIONAL *) mr_desc : pcchar; (* OPTIONAL *) mr_obsolete : cint; (* OPTIONAL *) mr_syntax_oid : pcchar; (* REQUIRED *) mr_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPMatchingRule = ^LDAPMatchingRule; LDAPMatchingRule = ldap_matchingrule; pldap_matchingruleuse = ^ldap_matchingruleuse; ldap_matchingruleuse = record mru_oid : pcchar; (* REQUIRED *) mru_names : ppcchar; (* OPTIONAL *) mru_desc : pcchar; (* OPTIONAL *) mru_obsolete : cint; (* OPTIONAL *) mru_applies_oids: ppcchar; (* REQUIRED *) mru_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPMatchingRuleUse = ^LDAPMatchingRuleUse; LDAPMatchingRuleUse = ldap_matchingruleuse; pldap_attributetype = ^ldap_attributetype; ldap_attributetype = record at_oid : pcchar; (* REQUIRED *) at_names : ppcchar; (* OPTIONAL *) at_desc : pcchar; (* OPTIONAL *) at_obsolete : cint; (* 0=no, 1=yes *) at_sup_oid : pcchar; (* OPTIONAL *) at_equality_oid : pcchar; (* OPTIONAL *) at_ordering_oid : pcchar; (* OPTIONAL *) at_substr_oid : pcchar; (* OPTIONAL *) at_syntax_oid : pcchar; (* OPTIONAL *) at_syntax_len : cint; (* OPTIONAL *) at_single_value : cint; (* 0=no, 1=yes *) at_collective : cint; (* 0=no, 1=yes *) at_no_user_mod : cint; (* 0=no, 1=yes *) at_usage : cint; (* 0=userApplications, 1=directoryOperation, 2=distributedOperation, 3=dSAOperation *) at_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPAttributeType = ^LDAPAttributeType; LDAPAttributeType = ldap_attributetype; pldap_objectclass = ^ldap_objectclass; ldap_objectclass = record oc_oid : pcchar; (* REQUIRED *) oc_names : ppcchar; (* OPTIONAL *) oc_desc : pcchar; (* OPTIONAL *) oc_obsolete : cint; (* 0=no, 1=yes *) oc_sup_oids : ppcchar; (* OPTIONAL *) oc_kind : cint; (* 0=ABSTRACT, 1=STRUCTURAL, 2=AUXILIARY *) oc_at_oids_must : ppcchar; (* OPTIONAL *) oc_at_oids_may : ppcchar; (* OPTIONAL *) oc_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPObjectClass = ^LDAPObjectClass; LDAPObjectClass = ldap_objectclass; pldap_contentrule = ^ldap_contentrule; ldap_contentrule = record cr_oid : pcchar; (* REQUIRED *) cr_names : ppcchar; (* OPTIONAL *) cr_desc : pcchar; (* OPTIONAL *) cr_sup_oids : ppcchar; (* OPTIONAL *) cr_obsolete : cint; (* 0=no, 1=yes *) cr_oc_oids_aux : ppcchar; (* OPTIONAL *) cr_at_oids_must : ppcchar; (* OPTIONAL *) cr_at_oids_may : ppcchar; (* OPTIONAL *) cr_at_oids_not : ppcchar; (* OPTIONAL *) cr_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPContentRule = ^LDAPContentRule; LDAPContentRule = ldap_contentrule; pldap_nameform = ^ldap_nameform; ldap_nameform = record nf_oid : pcchar; (* REQUIRED *) nf_names : ppcchar; (* OPTIONAL *) nf_desc : pcchar; (* OPTIONAL *) nf_obsolete : cint; (* 0=no, 1=yes *) nf_objectclass : pcchar; (* REQUIRED *) nf_at_oids_must : ppcchar; (* REQUIRED *) nf_at_oids_may : ppcchar; (* OPTIONAL *) nf_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPNameForm = ^LDAPNameForm; LDAPNameForm = ldap_nameform; pldap_structurerule = ^ldap_structurerule; ldap_structurerule = record sr_ruleid : cint; (* REQUIRED *) sr_names : ppcchar; (* OPTIONAL *) sr_desc : pcchar; (* OPTIONAL *) sr_obsolete : cint; (* 0=no, 1=yes *) sr_nameform : pcchar; (* REQUIRED *) sr_nsup_ruleids : cint; (* number of sr_sup_ruleids *) sr_sup_ruleids : pcint; (* OPTIONAL *) sr_extensions : PPLDAPSchemaExtensionItem; (* OPTIONAL *) end; PLDAPStructureRule = ^LDAPStructureRule; LDAPStructureRule = ldap_structurerule; (* * Misc macros *) const LDAP_SCHEMA_NO = 0; LDAP_SCHEMA_YES = 1; LDAP_SCHEMA_USER_APPLICATIONS = 0; LDAP_SCHEMA_DIRECTORY_OPERATION = 1; LDAP_SCHEMA_DISTRIBUTED_OPERATION = 2; LDAP_SCHEMA_DSA_OPERATION = 3; LDAP_SCHEMA_ABSTRACT = 0; LDAP_SCHEMA_STRUCTURAL = 1; LDAP_SCHEMA_AUXILIARY = 2; (* * Flags that control how liberal the parsing routines are. *) const LDAP_SCHEMA_ALLOW_NONE = $00; (* Strict parsing *) LDAP_SCHEMA_ALLOW_NO_OID = $01; (* Allow missing oid *) LDAP_SCHEMA_ALLOW_QUOTED = $02; (* Allow bogus extra quotes *) LDAP_SCHEMA_ALLOW_DESCR = $04; (* Allow descr instead of OID *) LDAP_SCHEMA_ALLOW_DESCR_PREFIX = $08; (* Allow descr as OID prefix *) LDAP_SCHEMA_ALLOW_OID_MACRO = $10; (* Allow OID macros in slapd *) LDAP_SCHEMA_ALLOW_OUT_OF_ORDER_FIELDS = $20; (* Allow fields in most any order *) LDAP_SCHEMA_ALLOW_ALL = $3f; (* Be very liberal in parsing *) LDAP_SCHEMA_SKIP = $80; (* Don't malloc any result *) function ldap_syntax2name(syn: PLDAPSyntax): pcchar; cdecl; external; function ldap_matchingrule2name(mr: PLDAPMatchingRule): pcchar; cdecl; external; function ldap_matchingruleuse2name(mru: PLDAPMatchingRuleUse): pcchar; cdecl; external; function ldap_attributetype2name(_at: PLDAPAttributeType): pcchar; cdecl; external; function ldap_objectclass2name(oc: PLDAPObjectClass): pcchar; cdecl; external; function ldap_contentrule2name(cr: PLDAPContentRule): pcchar; cdecl; external; function ldap_nameform2name(nf: PLDAPNameForm): pcchar; cdecl; external; function ldap_structurerule2name(sr: PLDAPStructureRule): pcchar; cdecl; external; procedure ldap_syntax_free(syn: PLDAPSyntax); cdecl; external; procedure ldap_matchingrule_free(mr: PLDAPMatchingRule); cdecl; external; procedure ldap_matchingruleuse_free(mru: PLDAPMatchingRuleUse); cdecl; external; procedure ldap_attributetype_free(_at: PLDAPAttributeType); cdecl; external; procedure ldap_objectclass_free(oc: PLDAPObjectClass); cdecl; external; procedure ldap_contentrule_free(cr: PLDAPContentRule); cdecl; external; procedure ldap_nameform_free(nf: PLDAPNameForm); cdecl; external; procedure ldap_structurerule_free(sr: PLDAPStructureRule); cdecl; external; function ldap_str2structurerule(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPStructureRule; cdecl; external; function ldap_str2nameform(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPNameForm; cdecl; external; function ldap_str2contentrule(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPContentRule; cdecl; external; function ldap_str2objectclass(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPObjectClass; cdecl; external; function ldap_str2attributetype(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPAttributeType; cdecl; external; function ldap_str2syntax(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPSyntax; cdecl; external; function ldap_str2matchingrule(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPMatchingRule; cdecl; external; function ldap_str2matchingruleuse(const s: pcchar; code: pcint; const errp: ppcchar; flags: cuint): PLDAPMatchingRuleUse; cdecl; external; function ldap_structurerule2str(sr: PLDAPStructureRule): pcchar; cdecl; external; function ldap_structurerule2bv(sr: PLDAPStructureRule; bv: PBerval): PBerval; cdecl; external; function ldap_nameform2str(nf: PLDAPNameForm): pcchar; cdecl; external; function ldap_nameform2bv(nf: PLDAPNameForm; bv: PBerval): PBerval; cdecl; external; function ldap_contentrule2str(cr: PLDAPContentRule): pcchar; cdecl; external; function ldap_contentrule2bv(cr: PLDAPContentRule; bv: PBerval): PBerval; cdecl; external; function ldap_objectclass2str(oc: PLDAPObjectClass): pcchar; cdecl; external; function ldap_objectclass2bv(oc: PLDAPObjectClass; bv: PBerval): PBerval; cdecl; external; function ldap_attributetype2str(_at: PLDAPAttributeType): pcchar; cdecl; external; function ldap_attributetype2bv(_at: PLDAPAttributeType; bv: PBerval): PBerval; cdecl; external; function ldap_syntax2str(syn: PLDAPSyntax): pcchar; cdecl; external; function ldap_syntax2bv(syn: PLDAPSyntax; bv: PBerval): PBerval; cdecl; external; function ldap_matchingrule2str(mr: PLDAPMatchingRule): pcchar; cdecl; external; function ldap_matchingrule2bv(mr: PLDAPMatchingRule; bv: PBerval): PBerval; cdecl; external; function ldap_matchingruleuse2str(mru: PLDAPMatchingRuleUse): pcchar; cdecl; external; function ldap_matchingruleuse2bv(mru: PLDAPMatchingRuleUse; bv: PBerval): PBerval; cdecl; external; function ldap_scherr2str(code: cint): pcchar; cdecl; external;