]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
ITS#6577 real fix: keep dn2id cursor open until we re-acquire lock
[openldap] / servers / slapd / slap.h
index 567f35665447784b26cb92b9be109c0269f19b59..2e7d0b28e43594ec313a3605193c8a77a360301b 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2009 The OpenLDAP Foundation.
+ * Copyright 1998-2010 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -65,6 +65,10 @@ LDAP_BEGIN_DECL
 #define SLAP_CONTROL_X_SESSION_TRACKING
 #define SLAP_CONTROL_X_WHATFAILED
 #define SLAP_CONFIG_DELETE
+#define SLAP_AUXPROP_DONTUSECOPY
+#ifndef SLAP_SCHEMA_EXPOSE
+#define SLAP_SCHEMA_EXPOSE
+#endif
 #endif
 
 #define LDAP_DYNAMIC_OBJECTS
@@ -412,7 +416,7 @@ struct Syntax {
 #define SLAP_SYNTAX_BLOB       0x0001U /* syntax treated as blob (audio) */
 #define SLAP_SYNTAX_BINARY     0x0002U /* binary transfer required (certificate) */
 #define SLAP_SYNTAX_BER                0x0004U /* stored in BER encoding (certificate) */
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_SYNTAX_HIDE       0x0000U /* publish everything */
 #else
 #define SLAP_SYNTAX_HIDE       0x8000U /* hide (do not publish) */
@@ -519,7 +523,7 @@ struct MatchingRule {
 
        slap_mask_t                     smr_usage;
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_MR_HIDE                   0x0000U
 #else
 #define SLAP_MR_HIDE                   0x8000U
@@ -690,7 +694,7 @@ struct AttributeType {
 #define SLAP_AT_NONE                   0x0000U
 #define SLAP_AT_ABSTRACT               0x0100U /* cannot be instantiated */
 #define SLAP_AT_FINAL                  0x0200U /* cannot be subtyped */
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_AT_HIDE                   0x0000U /* publish everything */
 #else
 #define SLAP_AT_HIDE                   0x8000U /* hide attribute */
@@ -788,7 +792,7 @@ struct ObjectClass {
 #define        SLAP_OC__MASK           0x00FF
 #define        SLAP_OC__END            0x0100
 #define SLAP_OC_OPERATIONAL    0x4000
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_OC_HIDE           0x0000
 #else
 #define SLAP_OC_HIDE           0x8000
@@ -1282,7 +1286,9 @@ typedef enum slap_style_e {
        ACL_STYLE_SELF,
        ACL_STYLE_IP,
        ACL_STYLE_IPV6,
-       ACL_STYLE_PATH
+       ACL_STYLE_PATH,
+
+       ACL_STYLE_NONE
 } slap_style_t;
 
 typedef struct AuthorizationInformation {
@@ -1792,6 +1798,7 @@ struct BackendDB {
 #define                be_entry_open bd_info->bi_tool_entry_open
 #define                be_entry_close bd_info->bi_tool_entry_close
 #define                be_entry_first bd_info->bi_tool_entry_first
+#define                be_entry_first_x bd_info->bi_tool_entry_first_x
 #define                be_entry_next bd_info->bi_tool_entry_next
 #define                be_entry_reindex bd_info->bi_tool_entry_reindex
 #define                be_entry_get bd_info->bi_tool_entry_get
@@ -1930,6 +1937,7 @@ struct BackendDB {
        struct slap_limits **be_limits; /* regex-based size and time limits */
        AccessControl *be_acl;  /* access control list for this backend    */
        slap_access_t   be_dfltaccess;  /* access given if no acl matches          */
+       AttributeName   *be_extra_anlist;       /* attributes that need to be added to search requests (ITS#6513) */
 
        /* Replica Information */
        struct berval be_update_ndn;    /* allowed to make changes (in replicas) */
@@ -2018,7 +2026,7 @@ typedef struct req_abandon_s {
        ber_int_t rs_msgid;
 } req_abandon_s;
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_EXOP_HIDE 0x0000
 #else
 #define SLAP_EXOP_HIDE 0x8000
@@ -2162,6 +2170,7 @@ 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 ));
 typedef ID (BI_tool_entry_first) LDAP_P(( BackendDB *be ));
+typedef ID (BI_tool_entry_first_x) LDAP_P(( BackendDB *be, struct berval *base, int scope, Filter *f ));
 typedef ID (BI_tool_entry_next) LDAP_P(( BackendDB *be ));
 typedef Entry* (BI_tool_entry_get) LDAP_P(( BackendDB *be, ID id ));
 typedef ID (BI_tool_entry_put) LDAP_P(( BackendDB *be, Entry *e, 
@@ -2261,7 +2270,8 @@ struct BackendInfo {
        /* hooks for slap tools */
        BI_tool_entry_open      *bi_tool_entry_open;
        BI_tool_entry_close     *bi_tool_entry_close;
-       BI_tool_entry_first     *bi_tool_entry_first;
+       BI_tool_entry_first     *bi_tool_entry_first;   /* deprecated */
+       BI_tool_entry_first_x   *bi_tool_entry_first_x;
        BI_tool_entry_next      *bi_tool_entry_next;
        BI_tool_entry_get       *bi_tool_entry_get;
        BI_tool_entry_put       *bi_tool_entry_put;
@@ -2977,7 +2987,7 @@ struct Listener {
 /* number of response controls supported */
 #define SLAP_MAX_RESPONSE_CONTROLS   6
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_CTRL_HIDE                         0x00000000U
 #else
 #define SLAP_CTRL_HIDE                         0x80000000U
@@ -3013,7 +3023,6 @@ 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
 
 #define SLAP_ZONE_ALLOC 1
 #undef SLAP_ZONE_ALLOC
@@ -3243,25 +3252,6 @@ struct ComponentSyntaxInfo {
 
 #endif /* LDAP_COMP_MATCH */
 
-/* slab heap data structures */
-
-struct slab_object {
-    void *so_ptr;
-       int so_blockhead;
-    LDAP_LIST_ENTRY(slab_object) so_link;
-};
-
-struct slab_heap {
-    void *sh_base;
-    void *sh_last;
-    void *sh_end;
-       int sh_stack;
-       int sh_maxorder;
-    unsigned char **sh_map;
-    LDAP_LIST_HEAD( sh_freelist, slab_object ) *sh_free;
-       LDAP_LIST_HEAD( sh_so, slab_object ) sh_sopool;
-};
-
 #ifdef SLAP_ZONE_ALLOC
 #define SLAP_ZONE_SIZE 0x80000         /* 512KB */
 #define SLAP_ZONE_SHIFT 19