]> git.sur5r.net Git - openldap/commitdiff
add referral check to functions elaborated by overlays
authorPierangelo Masarati <ando@openldap.org>
Mon, 5 Apr 2004 17:28:13 +0000 (17:28 +0000)
committerPierangelo Masarati <ando@openldap.org>
Mon, 5 Apr 2004 17:28:13 +0000 (17:28 +0000)
servers/slapd/backover.c
servers/slapd/slap.h

index 060d7b0245177e1f9301b242819dd1df3217d924..fabc7ae42fa72c547555f79294cb374a876928eb 100644 (file)
@@ -146,9 +146,21 @@ over_back_response ( Operation *op, SlapReply *rs )
        return rc;
 }
 
-enum op_which { op_bind = 0, op_unbind, op_search, op_compare,
-       op_modify, op_modrdn, op_add, op_delete, op_abandon,
-       op_cancel, op_extended };
+enum op_which {
+       op_bind = 0,
+       op_unbind,
+       op_search,
+       op_compare,
+       op_modify,
+       op_modrdn,
+       op_add,
+       op_delete,
+       op_abandon,
+       op_cancel,
+       op_extended,
+       op_aux_chk_referrals,
+       op_last
+};
 
 static int
 over_op_func(
@@ -257,6 +269,12 @@ over_op_extended( Operation *op, SlapReply *rs )
        return over_op_func( op, rs, op_extended );
 }
 
+static int
+over_chk_referrals( Operation *op, SlapReply *rs )
+{
+       return over_op_func( op, rs, op_aux_chk_referrals );
+}
+
 int
 overlay_register(
        slap_overinst *on
@@ -325,8 +343,17 @@ overlay_config( BackendDB *be, const char *ov )
                bi->bi_op_delete = over_op_delete;
                bi->bi_op_abandon = over_op_abandon;
                bi->bi_op_cancel = over_op_cancel;
+
                bi->bi_extended = over_op_extended;
 
+               /*
+                * this is fine because it has the same
+                * args of the operations; we need to rework
+                * all the hooks to share the same args
+                * of the operations...
+                */
+               bi->bi_chk_referrals = over_chk_referrals;
+
                be->bd_info = bi;
 
        } else {
index fe07730bee4128219398b468cc2216912ca5274f..b600750fe50431dd37f3f383ca234b8ca830aeae 100644 (file)
@@ -1412,9 +1412,9 @@ struct slap_backend_db {
 
 #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_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_attribute    bd_info->bi_acl_attribute
 #define                be_operational  bd_info->bi_operational
@@ -1689,10 +1689,10 @@ 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_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,
        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, int opattrs, Attribute **ap ));
 typedef int (BI_has_subordinates) LDAP_P(( struct slap_op *op, Entry *e, int *hasSubs ));
 
@@ -1787,9 +1787,9 @@ struct slap_backend_info {
        BI_op_extended  *bi_extended;
 
        /* Auxilary Functions */
+       BI_chk_referrals        *bi_chk_referrals;
        BI_entry_get_rw         *bi_entry_get_rw;
        BI_entry_release_rw     *bi_entry_release_rw;
-       BI_chk_referrals        *bi_chk_referrals;
 
        BI_operational  *bi_operational;
        BI_has_subordinates     *bi_has_subordinates;