/* extended.c - ldbm backend extended routines */
/* $OpenLDAP$ */
/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
#include "slap.h"
#include "back-ldbm.h"
#include "proto-back-ldbm.h"
+#include "lber_pvt.h"
struct exop {
- char *oid;
+ struct berval *oid;
BI_op_extended *extended;
} exop_table[] = {
- { LDAP_EXOP_X_MODIFY_PASSWD, ldbm_back_exop_passwd },
+ { (struct berval *)&slap_EXOP_MODIFY_PASSWD, ldbm_back_exop_passwd },
{ NULL, NULL }
};
int
ldbm_back_extended(
- Backend *be,
- Connection *conn,
- Operation *op,
- const char *reqoid,
- struct berval *reqdata,
- char **rspoid,
- struct berval **rspdata,
- LDAPControl *** rspctrls,
- const char** text,
- BerVarray *refs
-)
+ Operation *op,
+ SlapReply *rs )
{
int i;
- for( i=0; exop_table[i].oid != NULL; i++ ) {
- if( strcmp( exop_table[i].oid, reqoid ) == 0 ) {
- return (exop_table[i].extended)(
- be, conn, op,
- reqoid, reqdata,
- rspoid, rspdata, rspctrls,
- text, refs );
+ for( i=0; exop_table[i].extended != NULL; i++ ) {
+ if( ber_bvcmp( exop_table[i].oid, &op->oq_extended.rs_reqoid ) == 0 ) {
+ return exop_table[i].extended( op, rs );
}
}
- *text = "not supported within naming context";
- return LDAP_OPERATIONS_ERROR;
+ rs->sr_text = "not supported within naming context";
+ return LDAP_UNWILLING_TO_PERFORM;
}