]> git.sur5r.net Git - openldap/blob - servers/slapd/back-ldbm/extended.c
eb55797d8fee8c87bb85d941e734f04450f94736
[openldap] / servers / slapd / back-ldbm / extended.c
1 /* extended.c - ldbm backend extended routines */
2 /* $OpenLDAP$ */
3 /*
4  * Copyright 1998-1999 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
12 #include <ac/socket.h>
13 #include <ac/string.h>
14
15 #include "slap.h"
16 #include "back-ldbm.h"
17 #include "proto-back-ldbm.h"
18
19 struct exop {
20         char *oid;
21         SLAP_EXTENDED_FN        extended;
22 } exop_table[] = {
23         { LDAP_EXOP_X_MODIFY_PASSWD, ldbm_back_exop_passwd },
24         { NULL, NULL }
25 };
26
27 int
28 ldbm_back_extended(
29     Backend             *be,
30     Connection          *conn,
31     Operation           *op,
32         char            *oid,
33     struct berval       *reqdata,
34     struct berval       **rspdata,
35         char**  text
36 )
37 {
38         int i;
39
40         for( i=0; exop_table[i].oid != NULL; i++ ) {
41                 if( strcmp( exop_table[i].oid, oid ) == 0 ) {
42                         return (exop_table[i].extended)(
43                                 be, conn, op,
44                                 oid, reqdata, rspdata, text );
45                 }
46         }
47
48         *text = ch_strdup("not supported within naming context");
49         return LDAP_OPERATIONS_ERROR;
50 }
51