]> git.sur5r.net Git - openldap/blob - servers/slapd/back-bdb/extended.c
b35f4b05fc0b11167e56802f4b0f9945eab6de41
[openldap] / servers / slapd / back-bdb / extended.c
1 /* extended.c - bdb backend extended routines */
2 /* $OpenLDAP$ */
3 /*
4  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
5  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
6  */
7
8 #include "portable.h"
9
10 #include <stdio.h>
11 #include <ac/string.h>
12
13 #include "back-bdb.h"
14 #include "external.h"
15
16 static struct exop {
17         char *oid;
18         BI_op_extended  *extended;
19 } exop_table[] = {
20         { LDAP_EXOP_X_MODIFY_PASSWD, bdb_exop_passwd },
21         { NULL, NULL }
22 };
23
24 int
25 bdb_extended(
26         Backend         *be,
27         Connection              *conn,
28         Operation               *op,
29         const char              *reqoid,
30         struct berval   *reqdata,
31         char            **rspoid,
32         struct berval   **rspdata,
33         LDAPControl *** rspctrls,
34         const char**    text,
35         BVarray *refs 
36 )
37 {
38         int i;
39
40         for( i=0; exop_table[i].oid != NULL; i++ ) {
41                 if( strcmp( exop_table[i].oid, reqoid ) == 0 ) {
42                         return (exop_table[i].extended)(
43                                 be, conn, op,
44                                 reqoid, reqdata,
45                                 rspoid, rspdata, rspctrls,
46                                 text, refs );
47                 }
48         }
49
50         *text = "not supported within naming context";
51         return LDAP_OPERATIONS_ERROR;
52 }
53