version 1.452.2.9, 2003/12/29 18:41:56
|
version 1.452.2.33, 2005/02/17 15:24:56
|
Line 1
|
Line 1
|
/* slap.h - stand alone ldap server include file */ |
/* slap.h - stand alone ldap server include file */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/slap.h,v 1.514 2003/12/25 13:57:27 hyc Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/slap.h,v 1.452.2.32 2005/01/20 17:01:10 kurt Exp $ */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
* Copyright 1998-2003 The OpenLDAP Foundation. |
* Copyright 1998-2005 The OpenLDAP Foundation. |
* All rights reserved. |
* All rights reserved. |
* |
* |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
Line 133 LDAP_BEGIN_DECL
|
Line 133 LDAP_BEGIN_DECL
|
|| (c) == '(' || (c) == ')' || !ASCII_PRINTABLE(c) ) |
|| (c) == '(' || (c) == ')' || !ASCII_PRINTABLE(c) ) |
|
|
#define DN_ESCAPE(c) ((c) == SLAP_ESCAPE_CHAR) |
#define DN_ESCAPE(c) ((c) == SLAP_ESCAPE_CHAR) |
#define DN_SEPARATOR(c) ((c) == ',' || (c) == ';') |
/* NOTE: for consistency, this macro must only operate |
|
* on normalized/pretty DN, such that ';' is never used |
|
* as RDN separator, and all occurrences of ';' must be escaped */ |
|
#define DN_SEPARATOR(c) ((c) == ',') |
#define RDN_ATTRTYPEANDVALUE_SEPARATOR(c) ((c) == '+') /* RFC 2253 */ |
#define RDN_ATTRTYPEANDVALUE_SEPARATOR(c) ((c) == '+') /* RFC 2253 */ |
#define RDN_SEPARATOR(c) (DN_SEPARATOR(c) || RDN_ATTRTYPEANDVALUE_SEPARATOR(c)) |
#define RDN_SEPARATOR(c) (DN_SEPARATOR(c) || RDN_ATTRTYPEANDVALUE_SEPARATOR(c)) |
#define RDN_NEEDSESCAPE(c) ((c) == '\\' || (c) == '"') |
#define RDN_NEEDSESCAPE(c) ((c) == '\\' || (c) == '"') |
Line 145 LDAP_BEGIN_DECL
|
Line 148 LDAP_BEGIN_DECL
|
#define OID_CHAR(c) ( OID_LEADCHAR(c) || OID_SEPARATOR(c) ) |
#define OID_CHAR(c) ( OID_LEADCHAR(c) || OID_SEPARATOR(c) ) |
|
|
#define ATTR_LEADCHAR(c) ( DESC_LEADCHAR(c) || OID_LEADCHAR(c) ) |
#define ATTR_LEADCHAR(c) ( DESC_LEADCHAR(c) || OID_LEADCHAR(c) ) |
#define ATTR_CHAR(c) ( DESC_CHAR((c)) || (c) == '.' ) |
#define ATTR_CHAR(c) ( DESC_CHAR((c)) || OID_SEPARATOR(c) ) |
|
|
#define AD_LEADCHAR(c) ( ATTR_CHAR(c) ) |
#define AD_LEADCHAR(c) ( ATTR_LEADCHAR(c) ) |
#define AD_CHAR(c) ( ATTR_CHAR(c) || (c) == ';' ) |
#define AD_CHAR(c) ( ATTR_CHAR(c) || (c) == ';' ) |
|
|
#define SLAP_NUMERIC(c) ( ASCII_DIGIT(c) || ASCII_SPACE(c) ) |
#define SLAP_NUMERIC(c) ( ASCII_DIGIT(c) || ASCII_SPACE(c) ) |
Line 530 typedef struct slap_matching_rule {
|
Line 533 typedef struct slap_matching_rule {
|
*/ |
*/ |
struct slap_matching_rule *smr_associated; |
struct slap_matching_rule *smr_associated; |
|
|
#define SLAP_MR_ASSOCIATED(mr,amr) (((mr) == (amr)) || \ |
#define SLAP_MR_ASSOCIATED(mr,amr) \ |
((mr)->smr_associated == (amr))) |
(((mr) == (amr)) || ((mr)->smr_associated == (amr))) |
|
|
LDAP_SLIST_ENTRY(slap_matching_rule)smr_next; |
LDAP_SLIST_ENTRY(slap_matching_rule)smr_next; |
|
|
Line 607 typedef struct slap_attribute_type {
|
Line 610 typedef struct slap_attribute_type {
|
#else |
#else |
#define SLAP_AT_HIDE 0x8000U /* hide attribute */ |
#define SLAP_AT_HIDE 0x8000U /* hide attribute */ |
#endif |
#endif |
|
#define SLAP_AT_DYNAMIC 0x0400U /* dynamically generated */ |
|
|
slap_mask_t sat_flags; |
slap_mask_t sat_flags; |
|
|
LDAP_SLIST_ENTRY(slap_attribute_type) sat_next; |
LDAP_SLIST_ENTRY(slap_attribute_type) sat_next; |
Line 769 struct slap_internal_schema {
|
Line 774 struct slap_internal_schema {
|
|
|
AttributeDescription *si_ad_dseType; |
AttributeDescription *si_ad_dseType; |
AttributeDescription *si_ad_syncreplCookie; |
AttributeDescription *si_ad_syncreplCookie; |
|
AttributeDescription *si_ad_syncTimestamp; |
AttributeDescription *si_ad_contextCSN; |
AttributeDescription *si_ad_contextCSN; |
|
|
/* root DSE attribute descriptions */ |
/* root DSE attribute descriptions */ |
Line 788 struct slap_internal_schema {
|
Line 794 struct slap_internal_schema {
|
AttributeDescription *si_ad_subtreeSpecification; |
AttributeDescription *si_ad_subtreeSpecification; |
|
|
/* subschema subentry attribute descriptions */ |
/* subschema subentry attribute descriptions */ |
AttributeDescription *si_ad_ditStructureRules; |
|
AttributeDescription *si_ad_ditContentRules; |
|
AttributeDescription *si_ad_nameForms; |
|
AttributeDescription *si_ad_objectClasses; |
|
AttributeDescription *si_ad_attributeTypes; |
AttributeDescription *si_ad_attributeTypes; |
|
AttributeDescription *si_ad_ditContentRules; |
|
AttributeDescription *si_ad_ditStructureRules; |
AttributeDescription *si_ad_ldapSyntaxes; |
AttributeDescription *si_ad_ldapSyntaxes; |
AttributeDescription *si_ad_matchingRules; |
AttributeDescription *si_ad_matchingRules; |
AttributeDescription *si_ad_matchingRuleUse; |
AttributeDescription *si_ad_matchingRuleUse; |
|
AttributeDescription *si_ad_nameForms; |
|
AttributeDescription *si_ad_objectClasses; |
|
|
/* Aliases & Referrals */ |
/* Aliases & Referrals */ |
AttributeDescription *si_ad_aliasedObjectName; |
AttributeDescription *si_ad_aliasedObjectName; |
Line 844 struct slap_internal_schema {
|
Line 850 struct slap_internal_schema {
|
Syntax *si_syn_distinguishedName; |
Syntax *si_syn_distinguishedName; |
Syntax *si_syn_integer; |
Syntax *si_syn_integer; |
Syntax *si_syn_octetString; |
Syntax *si_syn_octetString; |
|
|
|
/* Schema Syntaxes */ |
|
Syntax *si_syn_attributeTypeDesc; |
|
Syntax *si_syn_ditContentRuleDesc; |
|
Syntax *si_syn_ditStructureRuleDesc; |
|
Syntax *si_syn_ldapSyntaxDesc; |
|
Syntax *si_syn_matchingRuleDesc; |
|
Syntax *si_syn_matchingRuleUseDesc; |
|
Syntax *si_syn_nameFormDesc; |
|
Syntax *si_syn_objectClassDesc; |
}; |
}; |
|
|
typedef struct slap_attr_assertion { |
typedef struct slap_attr_assertion { |
Line 874 typedef struct slap_filter {
|
Line 890 typedef struct slap_filter {
|
#define SLAPD_FILTER_COMPUTED ((ber_tag_t) -1) |
#define SLAPD_FILTER_COMPUTED ((ber_tag_t) -1) |
#define SLAPD_FILTER_DN_ONE ((ber_tag_t) -2) |
#define SLAPD_FILTER_DN_ONE ((ber_tag_t) -2) |
#define SLAPD_FILTER_DN_SUBTREE ((ber_tag_t) -3) |
#define SLAPD_FILTER_DN_SUBTREE ((ber_tag_t) -3) |
|
#ifdef LDAP_SCOPE_SUBORDINATE |
|
#define SLAPD_FILTER_DN_CHILDREN ((ber_tag_t) -4) |
|
#endif |
|
|
union f_un_u { |
union f_un_u { |
/* precomputed result */ |
/* precomputed result */ |
Line 1030 typedef struct slap_mod {
|
Line 1049 typedef struct slap_mod {
|
AttributeDescription *sm_desc; |
AttributeDescription *sm_desc; |
struct berval sm_type; |
struct berval sm_type; |
BerVarray sm_values; |
BerVarray sm_values; |
#define sm_bvalues sm_values |
|
BerVarray sm_nvalues; |
BerVarray sm_nvalues; |
} Modification; |
} Modification; |
|
|
Line 1039 typedef struct slap_mod_list {
|
Line 1057 typedef struct slap_mod_list {
|
#define sml_op sml_mod.sm_op |
#define sml_op sml_mod.sm_op |
#define sml_desc sml_mod.sm_desc |
#define sml_desc sml_mod.sm_desc |
#define sml_type sml_mod.sm_type |
#define sml_type sml_mod.sm_type |
#define sml_bvalues sml_mod.sm_values |
|
#define sml_values sml_mod.sm_values |
#define sml_values sml_mod.sm_values |
#define sml_nvalues sml_mod.sm_nvalues |
#define sml_nvalues sml_mod.sm_nvalues |
struct slap_mod_list *sml_next; |
struct slap_mod_list *sml_next; |
Line 1051 typedef struct slap_ldap_modlist {
|
Line 1068 typedef struct slap_ldap_modlist {
|
#define ml_op ml_mod.mod_op |
#define ml_op ml_mod.mod_op |
#define ml_type ml_mod.mod_type |
#define ml_type ml_mod.mod_type |
#define ml_values ml_mod.mod_values |
#define ml_values ml_mod.mod_values |
#define ml_bvalues ml_mod.mod_values |
|
} LDAPModList; |
} LDAPModList; |
|
|
/* |
/* |
Line 1076 typedef enum slap_control_e {
|
Line 1092 typedef enum slap_control_e {
|
|
|
typedef enum slap_style_e { |
typedef enum slap_style_e { |
ACL_STYLE_REGEX = 0, |
ACL_STYLE_REGEX = 0, |
|
ACL_STYLE_EXPAND, |
ACL_STYLE_BASE, |
ACL_STYLE_BASE, |
ACL_STYLE_ONE, |
ACL_STYLE_ONE, |
ACL_STYLE_SUBTREE, |
ACL_STYLE_SUBTREE, |
ACL_STYLE_CHILDREN, |
ACL_STYLE_CHILDREN, |
ACL_STYLE_ATTROF |
ACL_STYLE_ATTROF, |
|
ACL_STYLE_IP, |
|
ACL_STYLE_PATH |
} slap_style_t; |
} slap_style_t; |
|
|
typedef struct slap_authz_info { |
typedef struct slap_authz_info { |
Line 1169 typedef struct slap_access {
|
Line 1188 typedef struct slap_access {
|
|
|
slap_style_t a_peername_style; |
slap_style_t a_peername_style; |
struct berval a_peername_pat; |
struct berval a_peername_pat; |
|
unsigned long a_peername_addr, |
|
a_peername_mask; |
|
int a_peername_port; |
|
|
slap_style_t a_sockname_style; |
slap_style_t a_sockname_style; |
struct berval a_sockname_pat; |
struct berval a_sockname_pat; |
|
|
Line 1276 struct slap_limits_set {
|
Line 1299 struct slap_limits_set {
|
int lms_s_unchecked; |
int lms_s_unchecked; |
int lms_s_pr; |
int lms_s_pr; |
int lms_s_pr_hide; |
int lms_s_pr_hide; |
|
int lms_s_pr_total; |
}; |
}; |
|
|
|
/* Note: this is different from LDAP_NO_LIMIT (0); slapd internal use only */ |
|
#define SLAP_NO_LIMIT -1 |
|
#define SLAP_MAX_LIMIT 2147483647 |
|
|
struct slap_limits { |
struct slap_limits { |
int lm_type; /* type of pattern */ |
unsigned lm_flags; /* type of pattern */ |
#define SLAP_LIMITS_UNDEFINED 0x0000 |
#define SLAP_LIMITS_UNDEFINED 0x0000U |
#define SLAP_LIMITS_EXACT 0x0001 |
#define SLAP_LIMITS_EXACT 0x0001U |
#define SLAP_LIMITS_BASE SLAP_LIMITS_EXACT |
#define SLAP_LIMITS_BASE SLAP_LIMITS_EXACT |
#define SLAP_LIMITS_ONE 0x0002 |
#define SLAP_LIMITS_ONE 0x0002U |
#define SLAP_LIMITS_SUBTREE 0x0003 |
#define SLAP_LIMITS_SUBTREE 0x0003U |
#define SLAP_LIMITS_CHILDREN 0x0004 |
#define SLAP_LIMITS_CHILDREN 0x0004U |
#define SLAP_LIMITS_REGEX 0x0005 |
#define SLAP_LIMITS_REGEX 0x0005U |
#define SLAP_LIMITS_ANONYMOUS 0x0006 |
#define SLAP_LIMITS_ANONYMOUS 0x0006U |
#define SLAP_LIMITS_USERS 0x0007 |
#define SLAP_LIMITS_USERS 0x0007U |
#define SLAP_LIMITS_ANY 0x0008 |
#define SLAP_LIMITS_ANY 0x0008U |
regex_t lm_dn_regex; /* regex data for REGEX */ |
#define SLAP_LIMITS_MASK 0x000FU |
|
|
|
#define SLAP_LIMITS_TYPE_DN 0x0000U |
|
#define SLAP_LIMITS_TYPE_GROUP 0x0010U |
|
#define SLAP_LIMITS_TYPE_MASK 0x00F0U |
|
|
|
regex_t lm_regex; /* regex data for REGEX */ |
|
|
/* |
/* |
* normalized DN for EXACT, BASE, ONE, SUBTREE, CHILDREN; |
* normalized DN for EXACT, BASE, ONE, SUBTREE, CHILDREN; |
* pattern for REGEX; NULL for ANONYMOUS, USERS |
* pattern for REGEX; NULL for ANONYMOUS, USERS |
*/ |
*/ |
struct berval lm_dn_pat; |
struct berval lm_pat; |
|
|
|
/* if lm_flags & SLAP_LIMITS_TYPE_MASK == SLAP_LIMITS_GROUP, |
|
* lm_group_oc is objectClass and lm_group_at is attributeType |
|
* of member in oc for match; then lm_flags & SLAP_LIMITS_MASK |
|
* can only be SLAP_LIMITS_EXACT */ |
|
ObjectClass *lm_group_oc; |
|
AttributeDescription *lm_group_ad; |
|
|
struct slap_limits_set lm_limits; |
struct slap_limits_set lm_limits; |
}; |
}; |
Line 1349 typedef struct syncinfo_s {
|
Line 1390 typedef struct syncinfo_s {
|
char *si_authcId; |
char *si_authcId; |
char *si_authzId; |
char *si_authzId; |
int si_schemachecking; |
int si_schemachecking; |
Filter *si_filter; |
|
struct berval si_filterstr; |
struct berval si_filterstr; |
struct berval si_base; |
struct berval si_base; |
int si_scope; |
int si_scope; |
int si_attrsonly; |
int si_attrsonly; |
char **si_attrs; |
char **si_attrs; |
|
char **si_exattrs; |
int si_type; |
int si_type; |
time_t si_interval; |
time_t si_interval; |
|
time_t *si_retryinterval; |
|
int *si_retrynum_init; |
|
int *si_retrynum; |
struct sync_cookie si_syncCookie; |
struct sync_cookie si_syncCookie; |
int si_manageDSAit; |
int si_manageDSAit; |
int si_slimit; |
int si_slimit; |
int si_tlimit; |
int si_tlimit; |
struct berval si_syncUUID_ndn; |
int si_refreshDelete; |
|
int si_refreshPresent; |
Avlnode *si_presentlist; |
Avlnode *si_presentlist; |
LDAP *si_ld; |
LDAP *si_ld; |
LDAP_LIST_HEAD(np, nonpresent_entry) si_nonpresentlist; |
LDAP_LIST_HEAD(np, nonpresent_entry) si_nonpresentlist; |
LDAP_STAILQ_ENTRY( syncinfo_s ) si_next; |
LDAP_STAILQ_ENTRY( syncinfo_s ) si_next; |
|
ldap_pvt_thread_mutex_t si_mutex; |
} syncinfo_t; |
} syncinfo_t; |
|
|
|
LDAP_TAILQ_HEAD( be_pcl, slap_csn_entry ); |
|
|
struct slap_backend_db { |
struct slap_backend_db { |
BackendInfo *bd_info; /* pointer to shared backend info */ |
BackendInfo *bd_info; /* pointer to shared backend info */ |
|
|
|
/* fields in this structure (and routines acting on this structure) |
|
should be renamed from be_ to bd_ */ |
|
|
/* BackendInfo accessors */ |
/* BackendInfo accessors */ |
#define be_config bd_info->bi_db_config |
#define be_config bd_info->bi_db_config |
#define be_type bd_info->bi_type |
#define be_type bd_info->bi_type |
Line 1388 struct slap_backend_db {
|
Line 1439 struct slap_backend_db {
|
|
|
#define be_extended bd_info->bi_extended |
#define be_extended bd_info->bi_extended |
|
|
|
#define be_chk_referrals bd_info->bi_chk_referrals |
#define be_fetch bd_info->bi_entry_get_rw |
#define be_fetch bd_info->bi_entry_get_rw |
#define be_release bd_info->bi_entry_release_rw |
#define be_release bd_info->bi_entry_release_rw |
#define be_chk_referrals bd_info->bi_chk_referrals |
|
#define be_group bd_info->bi_acl_group |
#define be_group bd_info->bi_acl_group |
#define be_attribute bd_info->bi_acl_attribute |
#define be_attribute bd_info->bi_acl_attribute |
#define be_operational bd_info->bi_operational |
#define be_operational bd_info->bi_operational |
Line 1421 struct slap_backend_db {
|
Line 1472 struct slap_backend_db {
|
#define be_entry_modify bd_info->bi_tool_entry_modify |
#define be_entry_modify bd_info->bi_tool_entry_modify |
#endif |
#endif |
|
|
#define SLAP_BFLAG_NOLASTMOD 0x0001U |
/* Database flags */ |
#define SLAP_BFLAG_NO_SCHEMA_CHECK 0x0002U |
#define SLAP_DBFLAG_NOLASTMOD 0x0001U |
#define SLAP_BFLAG_GLUE_INSTANCE 0x0010U /* a glue backend */ |
#define SLAP_DBFLAG_NO_SCHEMA_CHECK 0x0002U |
#define SLAP_BFLAG_GLUE_SUBORDINATE 0x0020U /* child of a glue hierarchy */ |
#define SLAP_DBFLAG_GLUE_INSTANCE 0x0010U /* a glue backend */ |
#define SLAP_BFLAG_GLUE_LINKED 0x0040U /* child is connected to parent */ |
#define SLAP_DBFLAG_GLUE_SUBORDINATE 0x0020U /* child of a glue hierarchy */ |
#define SLAP_BFLAG_MONITOR 0x0080U /* a monitor backend */ |
#define SLAP_DBFLAG_GLUE_LINKED 0x0040U /* child is connected to parent */ |
#define SLAP_BFLAG_INCREMENT 0x0100U |
#define SLAP_DBFLAG_SHADOW 0x8000U /* a shadow */ |
#define SLAP_BFLAG_ALIASES 0x1000U |
#define SLAP_DBFLAG_SYNC_SHADOW 0x1000U /* a sync shadow */ |
#define SLAP_BFLAG_REFERRALS 0x2000U |
#define SLAP_DBFLAG_SLURP_SHADOW 0x2000U /* a slurp shadow */ |
#define SLAP_BFLAG_SUBENTRIES 0x4000U |
|
#define SLAP_BFLAG_DYNAMIC 0x8000U |
|
slap_mask_t be_flags; |
slap_mask_t be_flags; |
#define SLAP_LASTMOD(be) (!((be)->be_flags & SLAP_BFLAG_NOLASTMOD)) |
#define SLAP_DBFLAGS(be) ((be)->be_flags) |
#define SLAP_NO_SCHEMA_CHECK(be) (((be)->be_flags & SLAP_BFLAG_NO_SCHEMA_CHECK)) |
#define SLAP_NOLASTMOD(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NOLASTMOD) |
#define SLAP_GLUE_INSTANCE(be) ((be)->be_flags & SLAP_BFLAG_GLUE_INSTANCE) |
#define SLAP_LASTMOD(be) (!SLAP_NOLASTMOD(be)) |
#define SLAP_GLUE_SUBORDINATE(be) \ |
#define SLAP_NO_SCHEMA_CHECK(be) \ |
((be)->be_flags & SLAP_BFLAG_GLUE_SUBORDINATE) |
(SLAP_DBFLAGS(be) & SLAP_DBFLAG_NO_SCHEMA_CHECK) |
#define SLAP_GLUE_LINKED(be) ((be)->be_flags & SLAP_BFLAG_GLUE_LINKED) |
#define SLAP_GLUE_INSTANCE(be) \ |
|
(SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_INSTANCE) |
#define SLAP_MONITOR(be) ((be)->be_flags & SLAP_BFLAG_MONITOR) |
#define SLAP_GLUE_SUBORDINATE(be) \ |
#define SLAP_INCREMENT(be) ((be)->be_flags & SLAP_BFLAG_INCREMENT) |
(SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_SUBORDINATE) |
|
#define SLAP_GLUE_LINKED(be) \ |
#define SLAP_ALIASES(be) ((be)->be_flags & SLAP_BFLAG_ALIASES) |
(SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_LINKED) |
#define SLAP_REFERRALS(be) ((be)->be_flags & SLAP_BFLAG_REFERRALS) |
#define SLAP_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SHADOW) |
#define SLAP_SUBENTRIES(be) ((be)->be_flags & SLAP_BFLAG_SUBENTRIES) |
#define SLAP_SYNC_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SHADOW) |
#define SLAP_DYNAMIC(be) ((be)->be_flags & SLAP_BFLAG_DYNAMIC) |
#define SLAP_SLURP_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW) |
|
|
|
|
slap_mask_t be_restrictops; /* restriction operations */ |
slap_mask_t be_restrictops; /* restriction operations */ |
#define SLAP_RESTRICT_OP_ADD 0x0001U |
#define SLAP_RESTRICT_OP_ADD 0x0001U |
Line 1493 struct slap_backend_db {
|
Line 1541 struct slap_backend_db {
|
/* Required Security Strength Factor */ |
/* Required Security Strength Factor */ |
slap_ssf_set_t be_ssf_set; |
slap_ssf_set_t be_ssf_set; |
|
|
/* these should be renamed from be_ to bd_ */ |
|
BerVarray be_suffix; /* the DN suffixes of data in this backend */ |
BerVarray be_suffix; /* the DN suffixes of data in this backend */ |
BerVarray be_nsuffix; /* the normalized DN suffixes in this backend */ |
BerVarray be_nsuffix; /* the normalized DN suffixes in this backend */ |
struct berval be_schemadn; /* per-backend subschema subentry DN */ |
struct berval be_schemadn; /* per-backend subschema subentry DN */ |
Line 1508 struct slap_backend_db {
|
Line 1555 struct slap_backend_db {
|
struct slap_limits **be_limits; /* regex-based size and time limits */ |
struct slap_limits **be_limits; /* regex-based size and time limits */ |
AccessControl *be_acl; /* access control list for this backend */ |
AccessControl *be_acl; /* access control list for this backend */ |
slap_access_t be_dfltaccess; /* access given if no acl matches */ |
slap_access_t be_dfltaccess; /* access given if no acl matches */ |
|
|
|
/* Replica Information */ |
struct slap_replica_info **be_replica; /* replicas of this backend (in master) */ |
struct slap_replica_info **be_replica; /* replicas of this backend (in master) */ |
char *be_replogfile; /* replication log file (in master) */ |
char *be_replogfile; /* replication log file (in master) */ |
struct berval be_update_ndn; /* allowed to make changes (in replicas) */ |
struct berval be_update_ndn; /* allowed to make changes (in replicas) */ |
BerVarray be_update_refs; /* where to refer modifying clients to */ |
BerVarray be_update_refs; /* where to refer modifying clients to */ |
char *be_realm; |
struct be_pcl *be_pending_csn_list; |
void *be_private; /* anything the backend database needs */ |
|
|
|
void *be_pb; /* Netscape plugin */ |
|
LDAP_TAILQ_HEAD( pcl, slap_csn_entry ) be_pending_csn_list; |
|
ldap_pvt_thread_mutex_t be_pcl_mutex; |
ldap_pvt_thread_mutex_t be_pcl_mutex; |
|
ldap_pvt_thread_mutex_t *be_pcl_mutexp; |
struct berval be_context_csn; |
struct berval be_context_csn; |
ldap_pvt_thread_mutex_t be_context_csn_mutex; |
ldap_pvt_thread_mutex_t be_context_csn_mutex; |
LDAP_STAILQ_HEAD( be_si, syncinfo_s ) be_syncinfo; /* For syncrepl */ |
LDAP_STAILQ_HEAD( be_si, syncinfo_s ) be_syncinfo; /* For syncrepl */ |
|
|
|
char *be_realm; |
|
void *be_pb; /* Netscape plugin */ |
|
|
|
void *be_private; /* anything the backend database needs */ |
}; |
}; |
|
|
struct slap_conn; |
struct slap_conn; |
Line 1555 typedef struct req_search_s {
|
Line 1606 typedef struct req_search_s {
|
int rs_deref; |
int rs_deref; |
int rs_slimit; |
int rs_slimit; |
int rs_tlimit; |
int rs_tlimit; |
|
/* NULL means be_isroot evaluated to TRUE */ |
|
struct slap_limits_set *rs_limit; |
int rs_attrsonly; |
int rs_attrsonly; |
AttributeName *rs_attrs; |
AttributeName *rs_attrs; |
Filter *rs_filter; |
Filter *rs_filter; |
Line 1590 typedef struct req_extended_s {
|
Line 1643 typedef struct req_extended_s {
|
struct berval *rs_reqdata; |
struct berval *rs_reqdata; |
} req_extended_s; |
} req_extended_s; |
|
|
|
typedef struct req_pwdexop_s { |
|
struct berval rs_reqoid; |
|
struct berval rs_old; |
|
struct berval rs_new; |
|
Modifications *rs_mods; |
|
Modifications **rs_modtail; |
|
} req_pwdexop_s; |
|
|
typedef enum slap_reply_e { |
typedef enum slap_reply_e { |
REP_RESULT, |
REP_RESULT, |
REP_SASL, |
REP_SASL, |
Line 1630 typedef struct slap_rep {
|
Line 1691 typedef struct slap_rep {
|
rep_search_s sru_search; |
rep_search_s sru_search; |
} sr_un; |
} sr_un; |
slap_mask_t sr_flags; |
slap_mask_t sr_flags; |
#define REP_ENTRY_MODIFIABLE 0x00000001 |
#define REP_ENTRY_MODIFIABLE 0x0001U |
#define REP_ENTRY_MUSTBEFREED 0x00000002 |
#define REP_ENTRY_MUSTBEFREED 0x0002U |
#define REP_MATCHED_MUSTBEFREED 0x00000010 |
#define REP_MATCHED_MUSTBEFREED 0x0010U |
|
#define REP_REF_MUSTBEFREED 0x0020U |
} SlapReply; |
} SlapReply; |
|
|
/* short hands for response members */ |
/* short hands for response members */ |
Line 1654 typedef int (BI_op_add) LDAP_P(( struct
|
Line 1716 typedef int (BI_op_add) LDAP_P(( struct
|
typedef int (BI_op_delete) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_delete) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_abandon) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_abandon) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_cancel) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_cancel) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_extended) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_op_extended) LDAP_P(( |
typedef int (BI_entry_release_rw) LDAP_P(( struct slap_op *op, Entry *e, int rw )); |
struct slap_op *op, struct slap_rep *rs )); |
|
typedef int (BI_chk_referrals) LDAP_P(( |
|
struct slap_op *op, struct slap_rep *rs )); |
|
typedef int (BI_entry_release_rw) |
|
LDAP_P(( struct slap_op *op, Entry *e, int rw )); |
typedef int (BI_entry_get_rw) LDAP_P(( struct slap_op *op, struct berval *ndn, |
typedef int (BI_entry_get_rw) LDAP_P(( struct slap_op *op, struct berval *ndn, |
ObjectClass *oc, AttributeDescription *at, int rw, Entry **e )); |
ObjectClass *oc, AttributeDescription *at, int rw, Entry **e )); |
typedef int (BI_chk_referrals) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); |
typedef int (BI_operational) LDAP_P(( struct slap_op *op, struct slap_rep *rs, |
typedef int (BI_operational) LDAP_P(( struct slap_op *op, struct slap_rep *rs, int opattrs, Attribute **ap )); |
int opattrs, Attribute **ap )); |
typedef int (BI_has_subordinates) LDAP_P(( struct slap_op *op, Entry *e, int *hasSubs )); |
typedef int (BI_has_subordinates) LDAP_P(( struct slap_op *op, |
|
Entry *e, int *hasSubs )); |
typedef int (BI_connection_init) LDAP_P((BackendDB *bd, |
|
struct slap_conn *c)); |
typedef int (BI_connection_init) LDAP_P(( BackendDB *bd, |
typedef int (BI_connection_destroy) LDAP_P((BackendDB *bd, |
struct slap_conn *c )); |
struct slap_conn *c)); |
typedef int (BI_connection_destroy) LDAP_P(( BackendDB *bd, |
|
struct slap_conn *c )); |
|
|
typedef int (BI_tool_entry_open) LDAP_P(( BackendDB *be, int mode )); |
typedef int (BI_tool_entry_open) LDAP_P(( BackendDB *be, int mode )); |
typedef int (BI_tool_entry_close) LDAP_P(( BackendDB *be )); |
typedef int (BI_tool_entry_close) LDAP_P(( BackendDB *be )); |
Line 1673 typedef ID (BI_tool_entry_first) LDAP_P(
|
Line 1740 typedef ID (BI_tool_entry_first) LDAP_P(
|
typedef ID (BI_tool_entry_next) LDAP_P(( BackendDB *be )); |
typedef ID (BI_tool_entry_next) LDAP_P(( BackendDB *be )); |
typedef Entry* (BI_tool_entry_get) LDAP_P(( BackendDB *be, ID id )); |
typedef Entry* (BI_tool_entry_get) LDAP_P(( BackendDB *be, ID id )); |
typedef ID (BI_tool_entry_put) LDAP_P(( BackendDB *be, Entry *e, |
typedef ID (BI_tool_entry_put) LDAP_P(( BackendDB *be, Entry *e, |
struct berval *text )); |
struct berval *text )); |
typedef int (BI_tool_entry_reindex) LDAP_P(( BackendDB *be, ID id )); |
typedef int (BI_tool_entry_reindex) LDAP_P(( BackendDB *be, ID id )); |
typedef int (BI_tool_sync) LDAP_P(( BackendDB *be )); |
typedef int (BI_tool_sync) LDAP_P(( BackendDB *be )); |
typedef ID (BI_tool_dn2id_get) LDAP_P(( BackendDB *be, struct berval *dn )); |
typedef ID (BI_tool_dn2id_get) LDAP_P(( BackendDB *be, struct berval *dn )); |
typedef int (BI_tool_id2entry_get) LDAP_P(( BackendDB *be, ID id, Entry **e )); |
typedef int (BI_tool_id2entry_get) LDAP_P(( BackendDB *be, ID id, Entry **e )); |
typedef ID (BI_tool_entry_modify) LDAP_P(( BackendDB *be, Entry *e, |
typedef ID (BI_tool_entry_modify) LDAP_P(( BackendDB *be, Entry *e, |
struct berval *text )); |
struct berval *text )); |
|
|
struct slap_backend_info { |
struct slap_backend_info { |
char *bi_type; /* type of backend */ |
char *bi_type; /* type of backend */ |
Line 1753 struct slap_backend_info {
|
Line 1820 struct slap_backend_info {
|
BI_op_extended *bi_extended; |
BI_op_extended *bi_extended; |
|
|
/* Auxilary Functions */ |
/* Auxilary Functions */ |
|
BI_chk_referrals *bi_chk_referrals; |
BI_entry_get_rw *bi_entry_get_rw; |
BI_entry_get_rw *bi_entry_get_rw; |
BI_entry_release_rw *bi_entry_release_rw; |
BI_entry_release_rw *bi_entry_release_rw; |
BI_chk_referrals *bi_chk_referrals; |
|
|
|
BI_operational *bi_operational; |
BI_operational *bi_operational; |
BI_has_subordinates *bi_has_subordinates; |
BI_has_subordinates *bi_has_subordinates; |
Line 1779 struct slap_backend_info {
|
Line 1846 struct slap_backend_info {
|
#define SLAP_INDEX_ADD_OP 0x0001 |
#define SLAP_INDEX_ADD_OP 0x0001 |
#define SLAP_INDEX_DELETE_OP 0x0002 |
#define SLAP_INDEX_DELETE_OP 0x0002 |
|
|
|
slap_mask_t bi_flags; /* backend flags */ |
|
#define SLAP_BFLAG_MONITOR 0x0001U /* a monitor backend */ |
|
#define SLAP_BFLAG_NOLASTMODCMD 0x0010U |
|
#define SLAP_BFLAG_INCREMENT 0x0100U |
|
#define SLAP_BFLAG_ALIASES 0x1000U |
|
#define SLAP_BFLAG_REFERRALS 0x2000U |
|
#define SLAP_BFLAG_SUBENTRIES 0x4000U |
|
#define SLAP_BFLAG_DYNAMIC 0x8000U |
|
|
|
#define SLAP_BFLAGS(be) ((be)->bd_info->bi_flags) |
|
#define SLAP_MONITOR(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_MONITOR) |
|
#define SLAP_INCREMENT(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_INCREMENT) |
|
#define SLAP_ALIASES(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_ALIASES) |
|
#define SLAP_REFERRALS(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_REFERRALS) |
|
#define SLAP_SUBENTRIES(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_SUBENTRIES) |
|
#define SLAP_DYNAMIC(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_DYNAMIC) |
|
#define SLAP_NOLASTMODCMD(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_NOLASTMODCMD) |
|
#define SLAP_LASTMODCMD(be) (!SLAP_NOLASTMODCMD(be)) |
|
|
char **bi_controls; /* supported controls */ |
char **bi_controls; /* supported controls */ |
|
|
unsigned int bi_nDB; /* number of databases of this type */ |
unsigned int bi_nDB; /* number of databases of this type */ |
Line 1823 typedef struct slap_overinst {
|
Line 1909 typedef struct slap_overinst {
|
|
|
typedef struct slap_overinfo { |
typedef struct slap_overinfo { |
BackendInfo oi_bi; |
BackendInfo oi_bi; |
BackendDB oi_bd; |
BackendInfo *oi_orig; |
slap_overinst *oi_list; |
struct slap_overinst *oi_list; |
} slap_overinfo; |
} slap_overinfo; |
|
|
/* Should successive callbacks in a chain be processed? */ |
/* Should successive callbacks in a chain be processed? */ |
Line 1837 typedef unsigned long PagedResultsCookie
|
Line 1923 typedef unsigned long PagedResultsCookie
|
typedef struct slap_paged_state { |
typedef struct slap_paged_state { |
Backend *ps_be; |
Backend *ps_be; |
PagedResultsCookie ps_cookie; |
PagedResultsCookie ps_cookie; |
ID ps_id; |
int ps_count; |
} PagedResultsState; |
} PagedResultsState; |
|
|
|
|
#define LDAP_PSEARCH_BY_ADD 0x01 |
#define LDAP_PSEARCH_BY_ADD 0x01 |
#define LDAP_PSEARCH_BY_DELETE 0x02 |
#define LDAP_PSEARCH_BY_DELETE 0x02 |
#define LDAP_PSEARCH_BY_PREMODIFY 0x03 |
#define LDAP_PSEARCH_BY_PREMODIFY 0x03 |
Line 1868 struct slap_session_entry {
|
Line 1953 struct slap_session_entry {
|
}; |
}; |
|
|
struct slap_csn_entry { |
struct slap_csn_entry { |
struct berval *csn; |
struct berval *ce_csn; |
unsigned long opid; |
unsigned long ce_opid; |
unsigned long connid; |
unsigned long ce_connid; |
#define SLAP_CSN_PENDING 1 |
#define SLAP_CSN_PENDING 1 |
#define SLAP_CSN_COMMIT 2 |
#define SLAP_CSN_COMMIT 2 |
long state; |
long ce_state; |
LDAP_TAILQ_ENTRY (slap_csn_entry) csn_link; |
LDAP_TAILQ_ENTRY (slap_csn_entry) ce_csn_link; |
}; |
}; |
|
|
/* |
/* |
Line 1917 typedef struct slap_op {
|
Line 2002 typedef struct slap_op {
|
req_abandon_s oq_abandon; |
req_abandon_s oq_abandon; |
req_abandon_s oq_cancel; |
req_abandon_s oq_cancel; |
req_extended_s oq_extended; |
req_extended_s oq_extended; |
|
req_pwdexop_s oq_pwdexop; |
} o_request; |
} o_request; |
|
|
/* short hands for union members */ |
/* short hands for union members */ |
Line 1929 typedef struct slap_op {
|
Line 2015 typedef struct slap_op {
|
#define oq_abandon o_request.oq_abandon |
#define oq_abandon o_request.oq_abandon |
#define oq_cancel o_request.oq_cancel |
#define oq_cancel o_request.oq_cancel |
#define oq_extended o_request.oq_extended |
#define oq_extended o_request.oq_extended |
|
#define oq_pwdexop o_request.oq_pwdexop |
|
|
/* short hands for inner request members */ |
/* short hands for inner request members */ |
#define orb_method oq_bind.rb_method |
#define orb_method oq_bind.rb_method |
Line 1940 typedef struct slap_op {
|
Line 2027 typedef struct slap_op {
|
#define ors_deref oq_search.rs_deref |
#define ors_deref oq_search.rs_deref |
#define ors_slimit oq_search.rs_slimit |
#define ors_slimit oq_search.rs_slimit |
#define ors_tlimit oq_search.rs_tlimit |
#define ors_tlimit oq_search.rs_tlimit |
|
#define ors_limit oq_search.rs_limit |
#define ors_attrsonly oq_search.rs_attrsonly |
#define ors_attrsonly oq_search.rs_attrsonly |
#define ors_attrs oq_search.rs_attrs |
#define ors_attrs oq_search.rs_attrs |
#define ors_filter oq_search.rs_filter |
#define ors_filter oq_search.rs_filter |
Line 1972 typedef struct slap_op {
|
Line 2060 typedef struct slap_op {
|
char o_do_not_cache; /* don't cache groups from this op */ |
char o_do_not_cache; /* don't cache groups from this op */ |
char o_is_auth_check; /* authorization in progress */ |
char o_is_auth_check; /* authorization in progress */ |
|
|
|
#define SLAP_IGNORED_CONTROL -1 |
#define SLAP_NO_CONTROL 0 |
#define SLAP_NO_CONTROL 0 |
#define SLAP_NONCRITICAL_CONTROL 1 |
#define SLAP_NONCRITICAL_CONTROL 1 |
#define SLAP_CRITICAL_CONTROL 2 |
#define SLAP_CRITICAL_CONTROL 2 |
Line 2005 typedef struct slap_op {
|
Line 2094 typedef struct slap_op {
|
#define get_domainScope(op) (0) |
#define get_domainScope(op) (0) |
#endif |
#endif |
|
|
|
#ifdef LDAP_CONTROL_X_TREE_DELETE |
|
char o_tree_delete; |
|
#define get_treeDelete(op) ((int)(op)->o_tree_delete) |
|
#else |
|
#define get_treeDelete(op) (0) |
|
#endif |
|
|
char o_preread; |
char o_preread; |
char o_postread; |
char o_postread; |
AttributeName *o_preread_attrs; |
AttributeName *o_preread_attrs; |
Line 2044 typedef struct slap_op {
|
Line 2140 typedef struct slap_op {
|
|
|
void *o_threadctx; /* thread pool thread context */ |
void *o_threadctx; /* thread pool thread context */ |
void *o_tmpmemctx; /* slab malloc context */ |
void *o_tmpmemctx; /* slab malloc context */ |
|
void *o_savmemctx; |
BerMemoryFunctions *o_tmpmfuncs; |
BerMemoryFunctions *o_tmpmfuncs; |
#define o_tmpalloc o_tmpmfuncs->bmf_malloc |
#define o_tmpalloc o_tmpmfuncs->bmf_malloc |
#define o_tmpcalloc o_tmpmfuncs->bmf_calloc |
#define o_tmpcalloc o_tmpmfuncs->bmf_calloc |
Line 2059 typedef struct slap_op {
|
Line 2156 typedef struct slap_op {
|
ValuesReturnFilter *o_vrFilter; /* ValuesReturnFilter */ |
ValuesReturnFilter *o_vrFilter; /* ValuesReturnFilter */ |
|
|
int o_nocaching; |
int o_nocaching; |
|
int o_delete_glue_parent; |
|
|
#ifdef LDAP_SLAPI |
#ifdef LDAP_SLAPI |
void *o_pb; /* NS-SLAPI plugin */ |
void *o_pb; /* NS-SLAPI plugin */ |
Line 2105 typedef struct slap_listener Listener;
|
Line 2203 typedef struct slap_listener Listener;
|
typedef struct slap_conn { |
typedef struct slap_conn { |
int c_struct_state; /* structure management state */ |
int c_struct_state; /* structure management state */ |
int c_conn_state; /* connection state */ |
int c_conn_state; /* connection state */ |
|
int c_conn_idx; /* slot in connections array */ |
|
|
ldap_pvt_thread_mutex_t c_mutex; /* protect the connection */ |
ldap_pvt_thread_mutex_t c_mutex; /* protect the connection */ |
Sockbuf *c_sb; /* ber connection stuff */ |
Sockbuf *c_sb; /* ber connection stuff */ |