]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/extended.c
Initial round of changes for 2.3 beta
[openldap] / servers / slapd / back-ldbm / extended.c
index eb55797d8fee8c87bb85d941e734f04450f94736..ca78f6271da50f304024d5c0fa283cf454d3ee7d 100644 (file)
@@ -1,8 +1,17 @@
 /* extended.c - ldbm backend extended routines */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2005 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
 
 #include "portable.h"
 #include "slap.h"
 #include "back-ldbm.h"
 #include "proto-back-ldbm.h"
+#include "lber_pvt.h"
 
 struct exop {
-       char *oid;
-       SLAP_EXTENDED_FN        extended;
+       struct berval *oid;
+       BI_op_extended  *extended;
 } exop_table[] = {
-       { LDAP_EXOP_X_MODIFY_PASSWD, ldbm_back_exop_passwd },
        { NULL, NULL }
 };
 
 int
 ldbm_back_extended(
-    Backend            *be,
-    Connection         *conn,
-    Operation          *op,
-       char            *oid,
-    struct berval      *reqdata,
-    struct berval      **rspdata,
-       char**  text
-)
+       Operation       *op,
+       SlapReply       *rs )
 {
        int i;
 
-       for( i=0; exop_table[i].oid != NULL; i++ ) {
-               if( strcmp( exop_table[i].oid, oid ) == 0 ) {
-                       return (exop_table[i].extended)(
-                               be, conn, op,
-                               oid, reqdata, rspdata, text );
+       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 = ch_strdup("not supported within naming context");
-       return LDAP_OPERATIONS_ERROR;
+       rs->sr_text = "not supported within naming context";
+       return LDAP_UNWILLING_TO_PERFORM;
 }