]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
Added overlay objects
[openldap] / servers / slapd / slap.h
index 6198af9e6becb2193582804d47829c6e95b38e5b..58745a592e857d7dd25dad709840c64c6532972a 100644 (file)
@@ -109,8 +109,6 @@ LDAP_BEGIN_DECL
 
 #define SLAP_MAX_WORKER_THREADS                (16)
 
-#define SLAP_MAX_SYNCREPL_THREADS      (8)
-
 #define SLAP_SB_MAX_INCOMING_DEFAULT ((1<<18) - 1)
 #define SLAP_SB_MAX_INCOMING_AUTH ((1<<24) - 1)
 
@@ -905,6 +903,9 @@ struct slap_internal_schema {
 typedef struct slap_attr_assertion {
        AttributeDescription    *aa_desc;
        struct berval aa_value;
+#ifdef LDAP_COMP_MATCH
+       struct slap_component_filter *aa_cf;/* for attribute aliasing */
+#endif
 } AttributeAssertion;
 
 typedef struct slap_ss_assertion {
@@ -1523,6 +1524,7 @@ typedef struct syncinfo_s {
         Avlnode                                *si_presentlist;
                LDAP                            *si_ld;
                LDAP_LIST_HEAD(np, nonpresent_entry) si_nonpresentlist;
+               ldap_pvt_thread_mutex_t si_mutex;
 } syncinfo_t;
 
 LDAP_TAILQ_HEAD( be_pcl, slap_csn_entry );
@@ -1555,6 +1557,7 @@ struct slap_backend_db {
 #define                be_extended     bd_info->bi_extended
 
 #define                be_chk_referrals        bd_info->bi_chk_referrals
+#define                be_chk_controls         bd_info->bi_chk_controls
 #define                be_fetch        bd_info->bi_entry_get_rw
 #define                be_release      bd_info->bi_entry_release_rw
 #define                be_group        bd_info->bi_acl_group
@@ -1568,11 +1571,6 @@ struct slap_backend_db {
  */
 #define                be_has_subordinates bd_info->bi_has_subordinates
 
-       /* supported controls */
-       /* note: set to 0 if the database does not support the control;
-        * be_ctrls[SLAP_MAX_CIDS] is set to 1 if initialized */
-       char            be_ctrls[SLAP_MAX_CIDS + 1];
-
 #define                be_connection_init      bd_info->bi_connection_init
 #define                be_connection_destroy   bd_info->bi_connection_destroy
 
@@ -1590,14 +1588,20 @@ struct slap_backend_db {
 #define                be_entry_modify bd_info->bi_tool_entry_modify
 #endif
 
+       /* supported controls */
+       /* note: set to 0 if the database does not support the control;
+        * be_ctrls[SLAP_MAX_CIDS] is set to 1 if initialized */
+       char            be_ctrls[SLAP_MAX_CIDS + 1];
+
 /* Database flags */
 #define SLAP_DBFLAG_NOLASTMOD          0x0001U
 #define SLAP_DBFLAG_NO_SCHEMA_CHECK    0x0002U
 #define        SLAP_DBFLAG_GLUE_INSTANCE       0x0010U /* a glue backend */
 #define        SLAP_DBFLAG_GLUE_SUBORDINATE    0x0020U /* child of a glue hierarchy */
 #define        SLAP_DBFLAG_GLUE_LINKED         0x0040U /* child is connected to parent */
-#define SLAP_DBFLAG_OVERLAY            0x0080U /* this db struct is an overlay */
-#define        SLAP_DBFLAG_GLOBAL_OVERLAY      0x0100U /* this db struct is a global overlay */
+#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_SHADOW             0x8000U /* a shadow */
 #define SLAP_DBFLAG_SYNC_SHADOW                0x1000U /* a sync shadow */
 #define SLAP_DBFLAG_SLURP_SHADOW       0x2000U /* a slurp shadow */
@@ -1614,6 +1618,8 @@ struct slap_backend_db {
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_SUBORDINATE)
 #define        SLAP_GLUE_LINKED(be)            \
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_LINKED)
+#define        SLAP_GLUE_ADVERTISE(be) \
+       (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_ADVERTISE)
 #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)
@@ -1698,6 +1704,7 @@ struct slap_backend_db {
 
        char    *be_realm;
        void    *be_pb;         /* Netscape plugin */
+       struct ConfigTable *be_cf_table;
 
        void    *be_private;    /* anything the backend database needs     */
 };
@@ -1876,6 +1883,8 @@ 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_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,
@@ -1903,6 +1912,8 @@ 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, 
        struct berval *text ));
 
+struct ConfigTable;    /* config.h */
+
 struct slap_backend_info {
        char    *bi_type; /* type of backend */
 
@@ -1977,6 +1988,7 @@ struct slap_backend_info {
        /* Auxilary Functions */
        BI_operational          *bi_operational;
        BI_chk_referrals        *bi_chk_referrals;
+       BI_chk_controls         *bi_chk_controls;
        BI_entry_get_rw         *bi_entry_get_rw;
        BI_entry_release_rw     *bi_entry_release_rw;
 
@@ -2024,6 +2036,7 @@ struct slap_backend_info {
        char    bi_ctrls[SLAP_MAX_CIDS + 1];
 
        unsigned int bi_nDB;    /* number of databases of this type */
+       struct ConfigTable *bi_cf_table;
        void    *bi_private;    /* anything the backend type needs */
 };