]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/extended.c
#unifdef -DSLAP_NVALUES_ON_DISK
[openldap] / servers / slapd / back-ldbm / extended.c
index edef7ca491421aa54d6b1a1ffe178e4f5a76d4d4..b2cdb9e53542dc74b4d40a1907f7aec0e81303d1 100644 (file)
@@ -1,7 +1,7 @@
 /* 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;
 }