#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;
} 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
goto done;
}
+ op->ore_flags = ext->flags;
+
Debug( LDAP_DEBUG_ARGS, "do_extended: oid=%s\n",
op->ore_reqoid.bv_val, 0 ,0 );
*/
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;
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;
#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 */