]> git.sur5r.net Git - openldap/commitdiff
Add SLAP_EXOP_WRITES flag, expose flags in Operation,
authorHoward Chu <hyc@openldap.org>
Fri, 19 Nov 2004 22:19:13 +0000 (22:19 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 19 Nov 2004 22:19:13 +0000 (22:19 +0000)
add exop_is_write() macro for detecting exops that modify a target entry

servers/slapd/extended.c
servers/slapd/proto-slap.h
servers/slapd/slap.h

index 072b9f02058a8be1fffa4caae1f52aca78d8e068..8a62bf8f71db4958f0bb8b9ad976eca964f483b1 100644 (file)
 
 #define UNSUPPORTED_EXOP "unsupported extended operation"
 
-#ifdef LDAP_DEVEL
-#define SLAP_EXOP_HIDE 0x0000
-#else
-#define SLAP_EXOP_HIDE 0x8000
-#endif
 
 static struct extop_list {
        struct extop_list *next;
@@ -77,7 +72,7 @@ static struct {
 } builtin_extops[] = {
        { &slap_EXOP_CANCEL, SLAP_EXOP_HIDE, cancel_extop },
        { &slap_EXOP_WHOAMI, 0, whoami_extop },
-       { &slap_EXOP_MODIFY_PASSWD, 0, passwd_extop },
+       { &slap_EXOP_MODIFY_PASSWD, SLAP_EXOP_WRITES, passwd_extop },
 #ifdef HAVE_TLS
        { &slap_EXOP_START_TLS, 0, starttls_extop },
 #endif
@@ -225,6 +220,8 @@ fe_extended( Operation *op, SlapReply *rs )
                goto done;
        }
 
+       op->ore_flags = ext->flags;
+
        Debug( LDAP_DEBUG_ARGS, "do_extended: oid=%s\n",
                op->ore_reqoid.bv_val, 0 ,0 );
 
index 8487be92e06ca0789192f02809de2b0db7f4127e..b0cc47863080ddbc868a33df0ddbce01995c408b 100644 (file)
@@ -616,6 +616,8 @@ LDAP_SLAPD_F (Entry *) entry_dup LDAP_P(( Entry *e ));
  */
 LDAP_SLAPD_F (int) exop_root_dse_info LDAP_P ((Entry *e));
 
+#define exop_is_write( op )    ((op->ore_flags & SLAP_EXOP_WRITES) != 0)
+
 LDAP_SLAPD_V( const struct berval ) slap_EXOP_CANCEL;
 LDAP_SLAPD_V( const struct berval ) slap_EXOP_WHOAMI;
 LDAP_SLAPD_V( const struct berval ) slap_EXOP_MODIFY_PASSWD;
index 2ec8b7ec7a2235689ae21b91ffe291f72f1b78c3..26eee2c8d89551d93af6a0afe9c42b0d84382348 100644 (file)
@@ -1696,13 +1696,22 @@ typedef struct req_abandon_s {
        ber_int_t rs_msgid;
 } req_abandon_s;
 
+#ifdef LDAP_DEVEL
+#define SLAP_EXOP_HIDE 0x0000
+#else
+#define SLAP_EXOP_HIDE 0x8000
+#endif
+#define SLAP_EXOP_WRITES 0x0001                /* Exop does writes */
+
 typedef struct req_extended_s {
        struct berval rs_reqoid;
+       int rs_flags;
        struct berval *rs_reqdata;
 } req_extended_s;
 
 typedef struct req_pwdexop_s {
        struct berval rs_reqoid;
+       int rs_flags;
        struct berval rs_old;
        struct berval rs_new;
        Modifications *rs_mods;
@@ -2134,6 +2143,7 @@ typedef struct slap_op {
 #define orm_increment oq_modify.rs_increment
 
 #define ore_reqoid oq_extended.rs_reqoid
+#define ore_flags oq_extended.rs_flags
 #define ore_reqdata oq_extended.rs_reqdata
 
        ldap_pvt_thread_t       o_tid;  /* thread handling this op */