X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslap.h;h=f46d69e69d70492635a2e00d01b57ba2bf9a17a5;hb=fa1f4d3c38b332fc5faf6d84911df2618ce9af09;hp=10749c3c956a405cd651b9dd5e30bfd5b64e64a4;hpb=9bc19c523240b1a7c44cf8362fb28368bf17f672;p=openldap diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index 10749c3c95..f46d69e69d 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2005 The OpenLDAP Foundation. + * Copyright 1998-2006 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -58,22 +58,21 @@ LDAP_BEGIN_DECL - #ifdef LDAP_DEVEL #define SLAP_LIGHTWEIGHT_DISPATCHER /* experimental slapd architecture */ -#define SLAP_SEM_LOAD_CONTROL /* must also be defined in libldap_r/tpool.c */ #define SLAP_MULTI_CONN_ARRAY +#ifdef LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL +#define SLAP_SEM_LOAD_CONTROL +#endif /* LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL */ #define SLAP_ACL_HONOR_DISCLOSE /* partially implemented */ #define SLAP_ACL_HONOR_MANAGE /* not yet implemented */ -#define SLAP_DYNACL #define SLAP_OVERLAY_ACCESS #define LDAP_COMP_MATCH #define LDAP_DYNAMIC_OBJECTS #define LDAP_SYNC_TIMESTAMP #define LDAP_COLLECTIVE_ATTRIBUTES #define SLAP_CONTROL_X_TREE_DELETE LDAP_CONTROL_X_TREE_DELETE -#define SLAPD_CONF_UNKNOWN_BAILOUT #define SLAP_ORDERED_PRETTYNORM #define SLAP_AUTHZ_SYNTAX @@ -87,17 +86,6 @@ LDAP_BEGIN_DECL #define SLAP_OVERLAY_ACCESS #endif -/* - * ITS#3705: bail out if unknown config directives appear in slapd.conf - */ -#ifdef SLAPD_CONF_UNKNOWN_BAILOUT -#define SLAPD_CONF_UNKNOWN_IGNORED "" -#define SLAPD_DEBUG_CONFIG_ERROR LDAP_DEBUG_ANY -#else /* ! SLAPD_CONF_UNKNOWN_BAILOUT */ -#define SLAPD_CONF_UNKNOWN_IGNORED " (ignored)" -#define SLAPD_DEBUG_CONFIG_ERROR LDAP_DEBUG_CONFIG -#endif /* ! SLAPD_CONF_UNKNOWN_BAILOUT */ - /* * SLAPD Memory allocation macros * @@ -210,13 +198,6 @@ LDAP_BEGIN_DECL #define SLAPD_ROLE_ATTR "roleOccupant" #define SLAPD_ROLE_CLASS "organizationalRole" -#ifdef SLAPD_ACI_ENABLED -#define SLAPD_ACI_SYNTAX "1.3.6.1.4.1.4203.666.2.1" -#endif /* SLAPD_ACI_ENABLED */ - -/* change this to "OpenLDAPset" */ -#define SLAPD_ACI_SET_ATTR "template" - #define SLAPD_TOP_OID "2.5.6.0" LDAP_SLAPD_V (int) slap_debug; @@ -509,6 +490,8 @@ typedef struct slap_matching_rule { #define SLAP_MR_HIDE 0x8000U #endif +#define SLAP_MR_MUTATION_NORMALIZER 0x4000U + #define SLAP_MR_TYPE_MASK 0x0F00U #define SLAP_MR_SUBTYPE_MASK 0x00F0U #define SLAP_MR_USAGE 0x000FU @@ -1003,9 +986,7 @@ typedef struct slap_filter { #define SLAPD_FILTER_COMPUTED ((ber_tag_t) -1) #define SLAPD_FILTER_DN_ONE ((ber_tag_t) -2) #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 { /* precomputed result */ @@ -1213,7 +1194,7 @@ typedef enum slap_access_e { ACL_COMPARE, ACL_SEARCH, ACL_READ, - ACL_WRITE, + ACL_WRITE_, ACL_MANAGE, /* always leave at end of levels but not greater than ACL_LEVEL_MASK */ @@ -1228,8 +1209,10 @@ typedef enum slap_access_e { ACL_QUALIFIER_MASK = 0x0f00, /* write granularity */ - ACL_WADD = ACL_WRITE|ACL_QUALIFIER1, - ACL_WDEL = ACL_WRITE|ACL_QUALIFIER2 + ACL_WADD = ACL_WRITE_|ACL_QUALIFIER1, + ACL_WDEL = ACL_WRITE_|ACL_QUALIFIER2, + + ACL_WRITE = ACL_WADD|ACL_WDEL } slap_access_t; typedef enum slap_control_e { @@ -1437,16 +1420,6 @@ typedef struct slap_access { #ifdef SLAP_DYNACL slap_dynacl_t *a_dynacl; -#else /* ! SLAP_DYNACL */ -#ifdef SLAPD_ACI_ENABLED - /* NOTE: ACIs have been moved under the "dynacl" interface, - * which is currently built only when LDAP_DEVEL is defined. - * - * In any case, SLAPD_ACI_ENABLED, set by --enable-aci, - * is required to enable ACI support. - */ - AttributeDescription *a_aci_at; -#endif /* SLAPD_ACI_ENABLED */ #endif /* SLAP_DYNACL */ /* ACL Groups */ @@ -1477,12 +1450,15 @@ typedef struct slap_acl { struct slap_acl *acl_next; } AccessControl; +typedef enum { + ACL_STATE_NOT_RECORDED = 0x0, + ACL_STATE_RECORDED_VD = 0x1, + ACL_STATE_RECORDED_NV = 0x2, + ACL_STATE_RECORDED = ( ACL_STATE_RECORDED_VD | ACL_STATE_RECORDED_NV ) +} slap_acl_state_t; + typedef struct slap_acl_state { - unsigned as_recorded; -#define ACL_STATE_NOT_RECORDED 0x0 -#define ACL_STATE_RECORDED_VD 0x1 -#define ACL_STATE_RECORDED_NV 0x2 -#define ACL_STATE_RECORDED 0x3 + slap_acl_state_t as_recorded; /* Access state */ AccessControl *as_vd_acl; @@ -1500,53 +1476,6 @@ typedef struct slap_acl_state { #define ACL_STATE_INIT { ACL_STATE_NOT_RECORDED, NULL, NULL, 0UL, \ { { 0, 0 } }, 0, NULL, 0, 0, NULL } -#ifdef SLAPD_ACI_ENABLED -typedef enum slap_aci_scope_t { - SLAP_ACI_SCOPE_ENTRY = 0x1, - SLAP_ACI_SCOPE_CHILDREN = 0x2, - SLAP_ACI_SCOPE_SUBTREE = ( SLAP_ACI_SCOPE_ENTRY | SLAP_ACI_SCOPE_CHILDREN ) -} slap_aci_scope_t; -#endif /* SLAPD_ACI_ENABLED */ - -enum { - ACI_BV_ENTRY, - ACI_BV_CHILDREN, - ACI_BV_ONELEVEL, - ACI_BV_SUBTREE, - ACI_BV_BR_ENTRY, - ACI_BV_BR_ALL, - ACI_BV_ACCESS_ID, -#if 0 - ACI_BV_ANONYMOUS = BER_BVC("anonymous"), -#endif - ACI_BV_PUBLIC, - ACI_BV_USERS, - ACI_BV_SELF, - ACI_BV_DNATTR, - ACI_BV_GROUP, - ACI_BV_ROLE, - ACI_BV_SET, - ACI_BV_SET_REF, - ACI_BV_GRANT, - ACI_BV_DENY, - - ACI_BV_IP_EQ, -#ifdef LDAP_PF_LOCAL - ACI_BV_PATH_EQ, -#if 0 - ACI_BV_DIRSEP, -#endif -#endif /* LDAP_PF_LOCAL */ - - ACI_BV_GROUP_CLASS, - ACI_BV_GROUP_ATTR, - ACI_BV_ROLE_CLASS, - ACI_BV_ROLE_ATTR, - ACI_BV_SET_ATTR, - - ACI_BV_LAST -}; - /* * Backend-info * represents a backend @@ -1573,6 +1502,7 @@ LDAP_SLAPD_V (int) slapMode; #define SLAP_TOOL_READMAIN 0x0200 #define SLAP_TOOL_READONLY 0x0400 #define SLAP_TOOL_QUICK 0x0800 +#define SLAP_TOOL_NO_SCHEMA_CHECK 0x1000 #define SB_TLS_DEFAULT (-1) #define SB_TLS_OFF 0 @@ -1580,6 +1510,7 @@ LDAP_SLAPD_V (int) slapMode; #define SB_TLS_CRITICAL 2 typedef struct slap_bindconf { + struct berval sb_uri; int sb_tls; int sb_method; struct berval sb_binddn; @@ -1592,7 +1523,6 @@ typedef struct slap_bindconf { } slap_bindconf; struct slap_replica_info { - const char *ri_uri; /* supersedes be_replica */ const char *ri_host; /* points to host part of uri */ BerVarray ri_nsuffix; /* array of suffixes this replica accepts */ AttributeName *ri_attrs; /* attrs to replicate, NULL=all */ @@ -1605,6 +1535,14 @@ typedef struct slap_verbmasks { const slap_mask_t mask; } slap_verbmasks; +typedef struct slap_cf_aux_table { + struct berval key; + int off; + char type; + char quote; + slap_verbmasks *aux; +} slap_cf_aux_table; + #define SLAP_LIMIT_TIME 1 #define SLAP_LIMIT_SIZE 2 @@ -1676,7 +1614,7 @@ struct syncinfo_s; #define SLAP_SYNC_RID_SIZE 3 #define SLAP_SYNCUUID_SET_SIZE 256 -#define SLAP_SYNC_UPDATE_MSGID 2 +#define SLAP_SYNC_UPDATE_MSGID 1 struct sync_cookie { struct berval ctxcsn; @@ -1764,7 +1702,9 @@ struct slap_backend_db { #define SLAP_DBFLAG_GLUE_ADVERTISE 0x0080U /* advertise in rootDSE */ #define SLAP_DBFLAG_OVERLAY 0x0100U /* this db struct is an overlay */ #define SLAP_DBFLAG_GLOBAL_OVERLAY 0x0200U /* this db struct is a global overlay */ +#define SLAP_DBFLAG_DYNAMIC 0x0400U /* this db allows dynamicObjects */ #define SLAP_DBFLAG_SHADOW 0x8000U /* a shadow */ +#define SLAP_DBFLAG_SINGLE_SHADOW 0x4000U /* a single-master shadow */ #define SLAP_DBFLAG_SYNC_SHADOW 0x1000U /* a sync shadow */ #define SLAP_DBFLAG_SLURP_SHADOW 0x2000U /* a slurp shadow */ slap_mask_t be_flags; @@ -1772,6 +1712,7 @@ struct slap_backend_db { #define SLAP_NOLASTMOD(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NOLASTMOD) #define SLAP_LASTMOD(be) (!SLAP_NOLASTMOD(be)) #define SLAP_ISOVERLAY(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_OVERLAY) +#define SLAP_ISGLOBALOVERLAY(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLOBAL_OVERLAY) #define SLAP_NO_SCHEMA_CHECK(be) \ (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NO_SCHEMA_CHECK) #define SLAP_GLUE_INSTANCE(be) \ @@ -1785,6 +1726,8 @@ struct slap_backend_db { #define SLAP_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SHADOW) #define SLAP_SYNC_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SHADOW) #define SLAP_SLURP_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW) +#define SLAP_SINGLE_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SINGLE_SHADOW) +#define SLAP_MULTIMASTER(be) (!SLAP_SINGLE_SHADOW(be)) slap_mask_t be_restrictops; /* restriction operations */ #define SLAP_RESTRICT_OP_ADD 0x0001U @@ -1813,12 +1756,18 @@ struct slap_backend_db { | SLAP_RESTRICT_OP_DELETE \ | SLAP_RESTRICT_OP_MODIFY \ | SLAP_RESTRICT_OP_RENAME ) +#define SLAP_RESTRICT_OP_ALL \ + ( SLAP_RESTRICT_OP_READS \ + | SLAP_RESTRICT_OP_WRITES \ + | SLAP_RESTRICT_OP_BIND \ + | SLAP_RESTRICT_OP_EXTENDED ) -#define SLAP_ALLOW_BIND_V2 0x0001U /* LDAPv2 bind */ +#define SLAP_ALLOW_BIND_V2 0x0001U /* LDAPv2 bind */ #define SLAP_ALLOW_BIND_ANON_CRED 0x0002U /* cred should be empty */ #define SLAP_ALLOW_BIND_ANON_DN 0x0004U /* dn should be empty */ #define SLAP_ALLOW_UPDATE_ANON 0x0008U /* allow anonymous updates */ +#define SLAP_ALLOW_PROXY_AUTHZ_ANON 0x0010U /* allow anonymous proxyAuthz */ #define SLAP_DISALLOW_BIND_ANON 0x0001U /* no anonymous */ #define SLAP_DISALLOW_BIND_SIMPLE 0x0002U /* simple authentication */ @@ -1857,6 +1806,9 @@ struct slap_backend_db { /* Replica Information */ struct slap_replica_info **be_replica; /* replicas of this backend (in master) */ char *be_replogfile; /* replication log file (in master) */ + char *be_replica_argsfile; /* per-replog replica args file */ + char *be_replica_pidfile; /* per-replog replica pid file */ + int be_replicationinterval; /* per-replog replicationinterval */ struct berval be_update_ndn; /* allowed to make changes (in replicas) */ BerVarray be_update_refs; /* where to refer modifying clients to */ struct be_pcl *be_pending_csn_list; @@ -1875,21 +1827,23 @@ struct slap_conn; struct slap_op; /* Backend function typedefs */ -typedef int (BI_init) LDAP_P((BackendInfo *bi)); +typedef int (BI_bi_func) LDAP_P((BackendInfo *bi)); +typedef BI_bi_func BI_init; +typedef BI_bi_func BI_open; +typedef BI_bi_func BI_close; +typedef BI_bi_func BI_destroy; typedef int (BI_config) LDAP_P((BackendInfo *bi, const char *fname, int lineno, int argc, char **argv)); -typedef int (BI_open) LDAP_P((BackendInfo *bi)); -typedef int (BI_close) LDAP_P((BackendInfo *bi)); -typedef int (BI_destroy) LDAP_P((BackendInfo *bi)); -typedef int (BI_db_init) LDAP_P((Backend *bd)); +typedef int (BI_db_func) LDAP_P((Backend *bd)); +typedef BI_db_func BI_db_init; +typedef BI_db_func BI_db_open; +typedef BI_db_func BI_db_close; +typedef BI_db_func BI_db_destroy; typedef int (BI_db_config) LDAP_P((Backend *bd, const char *fname, int lineno, int argc, char **argv)); -typedef int (BI_db_open) LDAP_P((Backend *bd)); -typedef int (BI_db_close) LDAP_P((Backend *bd)); -typedef int (BI_db_destroy) LDAP_P((Backend *bd)); typedef struct req_bind_s { int rb_method; @@ -1927,6 +1881,7 @@ typedef struct req_modrdn_s { struct berval *rs_newSup; struct berval *rs_nnewSup; int rs_deleteoldrdn; + Modifications *rs_modlist; } req_modrdn_s; typedef struct req_add_s { @@ -2030,22 +1985,20 @@ typedef struct slap_rep { #define sr_rspdata sr_un.sru_extended.r_rspdata #define sr_sasldata sr_un.sru_sasl.r_sasldata -typedef int (BI_op_bind) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_unbind) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_search) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_compare) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_modify) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_modrdn) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_op_add) 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_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_chk_referrals) LDAP_P(( - struct slap_op *op, struct slap_rep *rs )); -typedef int (BI_chk_controls) LDAP_P(( - struct slap_op *op, struct slap_rep *rs )); +typedef int (BI_op_func) LDAP_P(( struct slap_op *op, struct slap_rep *rs )); +typedef BI_op_func BI_op_bind; +typedef BI_op_func BI_op_unbind; +typedef BI_op_func BI_op_search; +typedef BI_op_func BI_op_compare; +typedef BI_op_func BI_op_modify; +typedef BI_op_func BI_op_modrdn; +typedef BI_op_func BI_op_add; +typedef BI_op_func BI_op_delete; +typedef BI_op_func BI_op_abandon; +typedef BI_op_func BI_op_cancel; +typedef BI_op_func BI_op_extended; +typedef BI_op_func BI_chk_referrals; +typedef BI_op_func BI_chk_controls; 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, @@ -2065,10 +2018,9 @@ typedef int (BI_acl_attribute) LDAP_P(( struct slap_op *op, Entry *target, BerVarray *vals, slap_access_t access )); #endif /* SLAP_OVERLAY_ACCESS */ -typedef int (BI_connection_init) LDAP_P(( BackendDB *bd, - struct slap_conn *c )); -typedef int (BI_connection_destroy) LDAP_P(( BackendDB *bd, - struct slap_conn *c )); +typedef int (BI_conn_func) LDAP_P(( BackendDB *bd, struct slap_conn *c )); +typedef BI_conn_func BI_connection_init; +typedef BI_conn_func BI_connection_destroy; typedef int (BI_tool_entry_open) LDAP_P(( BackendDB *be, int mode )); typedef int (BI_tool_entry_close) LDAP_P(( BackendDB *be )); @@ -2199,6 +2151,12 @@ struct slap_backend_info { #define SLAP_BFLAG_SUBENTRIES 0x4000U #define SLAP_BFLAG_DYNAMIC 0x8000U +/* overlay specific */ +#define SLAPO_BFLAG_SINGLE 0x01000000U +#define SLAPO_BFLAG_DBONLY 0x02000000U +#define SLAPO_BFLAG_GLOBONLY 0x04000000U +#define SLAPO_BFLAG_MASK 0xFF000000U + #define SLAP_BFLAGS(be) ((be)->bd_info->bi_flags) #define SLAP_MONITOR(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_MONITOR) #define SLAP_CONFIG(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_CONFIG) @@ -2207,15 +2165,21 @@ struct slap_backend_info { #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_DYNAMIC(be) ((SLAP_BFLAGS(be) & SLAP_BFLAG_DYNAMIC) || (SLAP_DBFLAGS(be) & SLAP_DBFLAG_DYNAMIC)) #define SLAP_NOLASTMODCMD(be) (SLAP_BFLAGS(be) & SLAP_BFLAG_NOLASTMODCMD) #define SLAP_LASTMODCMD(be) (!SLAP_NOLASTMODCMD(be)) +/* overlay specific */ +#define SLAPO_SINGLE(be) (SLAP_BFLAGS(be) & SLAPO_BFLAG_SINGLE) +#define SLAPO_DBONLY(be) (SLAP_BFLAGS(be) & SLAPO_BFLAG_DBONLY) +#define SLAPO_GLOBONLY(be) (SLAP_BFLAGS(be) & SLAPO_BFLAG_GLOBONLY) + char **bi_controls; /* supported controls */ char bi_ctrls[SLAP_MAX_CIDS + 1]; unsigned int bi_nDB; /* number of databases of this type */ struct ConfigOCs *bi_cf_ocs; + char **bi_obsolete_names; void *bi_private; /* anything the backend type needs */ LDAP_STAILQ_ENTRY(slap_backend_info) bi_next ; }; @@ -2282,8 +2246,8 @@ typedef struct slap_overinfo { } slap_overinfo; /* Should successive callbacks in a chain be processed? */ -#define SLAP_CB_FREEME 0x4000 -#define SLAP_CB_CONTINUE 0x8000 +#define SLAP_CB_FREEME 0x04000 +#define SLAP_CB_CONTINUE 0x08000 /* * Paged Results state @@ -2320,25 +2284,26 @@ typedef struct slap_gacl { } GroupAssertion; struct slap_control_ids { + int sc_LDAPsync; int sc_assert; - int sc_preRead; - int sc_postRead; - int sc_proxyAuthz; + int sc_domainScope; + int sc_dontUseCopy; int sc_manageDIT; int sc_manageDSAit; int sc_modifyIncrement; int sc_noOp; int sc_pagedResults; + int sc_permissiveModify; + int sc_postRead; + int sc_preRead; + int sc_proxyAuthz; + int sc_searchOptions; #ifdef LDAP_DEVEL int sc_sortedResults; #endif - int sc_valuesReturnFilter; - int sc_permissiveModify; - int sc_domainScope; - int sc_treeDelete; - int sc_searchOptions; int sc_subentries; - int sc_LDAPsync; + int sc_treeDelete; + int sc_valuesReturnFilter; }; /* @@ -2440,6 +2405,7 @@ typedef struct slap_op { #define orr_newSup oq_modrdn.rs_newSup #define orr_nnewSup oq_modrdn.rs_nnewSup #define orr_deleteoldrdn oq_modrdn.rs_deleteoldrdn +#define orr_modlist oq_modrdn.rs_modlist #define orc_ava oq_compare.rs_ava #define ora_e oq_add.rs_e @@ -2486,6 +2452,9 @@ typedef struct slap_op { char o_ctrlflag[SLAP_MAX_CIDS]; /* per-control flags */ void **o_controls; /* per-control state */ +#define o_dontUseCopy o_ctrlflag[slap_cids.sc_dontUseCopy] +#define get_dontUseCopy(op) _SCM((op)->o_dontUseCopy) + #define o_managedit o_ctrlflag[slap_cids.sc_manageDIT] #define get_manageDIT(op) _SCM((op)->o_managedit) @@ -2510,26 +2479,14 @@ typedef struct slap_op { #define o_valuesreturnfilter o_ctrlflag[slap_cids.sc_valuesReturnFilter] #define o_vrFilter o_controls[slap_cids.sc_valuesReturnFilter] -#ifdef LDAP_CONTROL_X_PERMISSIVE_MODIFY #define o_permissive_modify o_ctrlflag[slap_cids.sc_permissiveModify] #define get_permissiveModify(op) ((int)(op)->o_permissive_modify) -#else -#define get_permissiveModify(op) (0) -#endif -#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE #define o_domain_scope o_ctrlflag[slap_cids.sc_domainScope] #define get_domainScope(op) ((int)(op)->o_domain_scope) -#else -#define get_domainScope(op) (0) -#endif -#ifdef SLAP_CONTROL_X_TREE_DELETE #define o_tree_delete o_ctrlflag[slap_cids.sc_treeDelete] #define get_treeDelete(op) ((int)(op)->o_tree_delete) -#else -#define get_treeDelete(op) (0) -#endif #define o_preread o_ctrlflag[slap_cids.sc_preRead] #define o_postread o_ctrlflag[slap_cids.sc_postRead] @@ -2681,7 +2638,6 @@ typedef struct slap_conn { long c_n_read; /* num of read calls */ long c_n_write; /* num of write calls */ - void *c_pb; /* Netscape plugin */ void *c_extensions; /* Netscape plugin */ /* @@ -2699,21 +2655,12 @@ typedef struct slap_conn { SEND_SEARCH_ENTRY *c_send_search_entry; SEND_SEARCH_REFERENCE *c_send_search_reference; SEND_LDAP_EXTENDED *c_send_ldap_extended; -#ifdef LDAP_RES_INTERMEDIATE SEND_LDAP_INTERMEDIATE *c_send_ldap_intermediate; -#endif - } Connection; #if defined(LDAP_SYSLOG) && defined(LDAP_DEBUG) #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) \ - do { \ - if ( ldap_debug & (level) ) \ - fprintf( stderr, (fmt), (connid), (opid), (arg1), (arg2), (arg3) );\ - if ( ldap_syslog & (level) ) \ - syslog( ldap_syslog_level, (fmt), (connid), (opid), (arg1), \ - (arg2), (arg3) ); \ - } while (0) + Log5( (level), ldap_syslog_level, (fmt), (connid), (opid), (arg1), (arg2), (arg3) ) #define StatslogTest( level ) ((ldap_debug | ldap_syslog) & (level)) #elif defined(LDAP_DEBUG) #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) \ @@ -2723,7 +2670,6 @@ typedef struct slap_conn { } while (0) #define StatslogTest( level ) (ldap_debug & (level)) #else -#define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) #define StatslogTest( level ) (0) #endif @@ -2742,7 +2688,7 @@ struct slap_listener { #endif int sl_mute; /* Listener is temporarily disabled due to emfile */ #ifdef SLAP_LIGHTWEIGHT_DISPATCHER - int sl_busy; /* Listener is busy (accept thread activated */ + int sl_busy; /* Listener is busy (accept thread activated) */ #endif ber_socket_t sl_sd; Sockaddr sl_sa; @@ -2823,6 +2769,8 @@ typedef int (SLAP_CTRL_PARSE_FN) LDAP_P(( SlapReply *rs, LDAPControl *ctrl )); +typedef int (*SLAP_ENTRY_INFO_FN) LDAP_P(( void *arg, Entry *e )); + #define SLAP_SLAB_SIZE (1024*1024) #define SLAP_SLAB_STACK 1 #define SLAP_SLAB_SOBLOCK 64 @@ -3125,6 +3073,12 @@ struct zone_heap { return 0; \ } +typedef int (OV_init)(void); +typedef struct slap_oinit_t { + const char *ov_type; + OV_init *ov_init; +} OverlayInit; + LDAP_END_DECL #include "proto-slap.h"