1 /* null.c - the null backend */
2 /* $OpenLDAP: pkg/ldap/servers/slapd/back-null/null.c,v 1.18.2.5 2008/02/12 00:58:15 quanah Exp $ */
3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
5 * Copyright 2002-2008 The OpenLDAP Foundation.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
12 * A copy of this license is available in the file LICENSE in the
13 * top-level directory of the distribution or, alternatively, at
14 * <http://www.OpenLDAP.org/license.html>.
17 * This work was originally developed by Hallvard Furuseth for inclusion
18 * in OpenLDAP Software.
24 #include <ac/string.h>
38 null_back_bind( Operation
*op
, SlapReply
*rs
)
40 struct null_info
*ni
= (struct null_info
*) op
->o_bd
->be_private
;
42 if ( ni
->ni_bind_allowed
|| be_isroot_pw( op
) ) {
43 /* front end will send result on success (0) */
47 rs
->sr_err
= LDAP_INVALID_CREDENTIALS
;
48 send_ldap_result( op
, rs
);
53 /* add, delete, modify, modrdn, search */
55 null_back_success( Operation
*op
, SlapReply
*rs
)
57 rs
->sr_err
= LDAP_SUCCESS
;
58 send_ldap_result( op
, rs
);
64 null_back_false( Operation
*op
, SlapReply
*rs
)
66 rs
->sr_err
= LDAP_COMPARE_FALSE
;
67 send_ldap_result( op
, rs
);
78 AttributeDescription
*at
,
82 assert( *ent
== NULL
);
84 /* don't admit the object isn't there */
85 return oc
|| at
? LDAP_NO_SUCH_ATTRIBUTE
: LDAP_BUSY
;
92 null_tool_entry_open( BackendDB
*be
, int mode
)
98 null_tool_entry_close( BackendDB
*be
)
100 assert( be
!= NULL
);
105 null_tool_entry_next( BackendDB
*be
)
111 null_tool_entry_get( BackendDB
*be
, ID id
)
113 assert( slapMode
& SLAP_TOOL_MODE
);
118 null_tool_entry_put( BackendDB
*be
, Entry
*e
, struct berval
*text
)
120 assert( slapMode
& SLAP_TOOL_MODE
);
121 assert( text
!= NULL
);
122 assert( text
->bv_val
!= NULL
);
123 assert( text
->bv_val
[0] == '\0' ); /* overconservative? */
125 e
->e_id
= ((struct null_info
*) be
->be_private
)->ni_nextid
++;
140 struct null_info
*ni
= (struct null_info
*) be
->be_private
;
143 fprintf( stderr
, "%s: line %d: null database info is null!\n",
148 /* bind requests allowed */
149 if ( strcasecmp( argv
[0], "bind" ) == 0 ) {
152 "%s: line %d: missing <on/off> in \"bind <on/off>\" line\n",
156 ni
->ni_bind_allowed
= strcasecmp( argv
[1], "off" );
160 return SLAP_CONF_UNKNOWN
;
167 null_back_db_init( BackendDB
*be
, ConfigReply
*cr
)
169 struct null_info
*ni
= ch_calloc( 1, sizeof(struct null_info
) );
170 ni
->ni_bind_allowed
= 0;
177 null_back_db_destroy( Backend
*be
, ConfigReply
*cr
)
179 free( be
->be_private
);
185 null_back_initialize( BackendInfo
*bi
)
192 bi
->bi_db_init
= null_back_db_init
;
193 bi
->bi_db_config
= null_back_db_config
;
196 bi
->bi_db_destroy
= null_back_db_destroy
;
198 bi
->bi_op_bind
= null_back_bind
;
199 bi
->bi_op_unbind
= 0;
200 bi
->bi_op_search
= null_back_success
;
201 bi
->bi_op_compare
= null_back_false
;
202 bi
->bi_op_modify
= null_back_success
;
203 bi
->bi_op_modrdn
= null_back_success
;
204 bi
->bi_op_add
= null_back_success
;
205 bi
->bi_op_delete
= null_back_success
;
206 bi
->bi_op_abandon
= 0;
210 bi
->bi_chk_referrals
= 0;
212 bi
->bi_connection_init
= 0;
213 bi
->bi_connection_destroy
= 0;
215 bi
->bi_entry_get_rw
= null_back_entry_get
;
217 bi
->bi_tool_entry_open
= null_tool_entry_open
;
218 bi
->bi_tool_entry_close
= null_tool_entry_close
;
219 bi
->bi_tool_entry_first
= null_tool_entry_next
;
220 bi
->bi_tool_entry_next
= null_tool_entry_next
;
221 bi
->bi_tool_entry_get
= null_tool_entry_get
;
222 bi
->bi_tool_entry_put
= null_tool_entry_put
;
227 #if SLAPD_NULL == SLAPD_MOD_DYNAMIC
229 /* conditionally define the init_module() function */
230 SLAP_BACKEND_INIT_MODULE( null
)
232 #endif /* SLAPD_NULL == SLAPD_MOD_DYNAMIC */