/* 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-2007 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"
static struct exop {
- char *oid;
- SLAP_EXTENDED_FN extended;
+ 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;
+ rs->sr_text = "not supported within naming context";
+ return LDAP_UNWILLING_TO_PERFORM;
}