/* 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-2004 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,
- LDAPControl *** rspctrls,
- 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, rspctrls, 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;
}