]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/extended.c
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / servers / slapd / back-bdb / extended.c
index 04b96f823a5bbbb0d1fe171c2cce1e90b6d3a043..1b72c0f830351c28e285df956f8d441bced35d5e 100644 (file)
@@ -1,8 +1,17 @@
-/* extended.c - ldbm backend extended routines */
+/* extended.c - bdb backend extended routines */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 2000-2014 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 <ac/string.h>
 
 #include "back-bdb.h"
-#include "external.h"
+#include "lber_pvt.h"
 
-struct exop {
-       char *oid;
-       SLAP_EXTENDED_FN        extended;
+static struct exop {
+       struct berval *oid;
+       BI_op_extended  *extended;
 } exop_table[] = {
-       { LDAP_EXOP_X_MODIFY_PASSWD, bdb_exop_passwd },
        { NULL, NULL }
 };
 
 int
-bdb_extended(
-       Backend         *be,
-       Connection              *conn,
-       Operation               *op,
-       const char              *reqoid,
+bdb_extended( Operation *op, SlapReply *rs )
+/*     struct berval           *reqoid,
        struct berval   *reqdata,
        char            **rspoid,
        struct berval   **rspdata,
        LDAPControl *** rspctrls,
        const char**    text,
-       struct berval *** refs 
-)
+       BerVarray       *refs 
+) */
 {
        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;
-}
\ No newline at end of file
+       rs->sr_text = "not supported within naming context";
+       return rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
+}
+