/*	$NetBSD: proto-ndb.h,v 1.1.1.5.6.1 2019/08/10 06:17:19 martin Exp $	*/
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software .
 *
 * Copyright 2008-2019 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
 * .
 */
/* ACKNOWLEDGEMENTS:
 * This work was initially developed by Howard Chu for inclusion
 * in OpenLDAP Software. This work was sponsored by MySQL.
 */
#ifndef _PROTO_NDB_H
#define _PROTO_NDB_H
LDAP_BEGIN_DECL
extern BI_init		ndb_back_initialize;
extern BI_open		ndb_back_open;
extern BI_close		ndb_back_close;
extern BI_destroy	ndb_back_destroy;
extern BI_db_init	ndb_back_db_init;
extern BI_db_destroy	ndb_back_db_destroy;
extern BI_op_bind	ndb_back_bind;
extern BI_op_unbind	ndb_back_unbind;
extern BI_op_search	ndb_back_search;
extern BI_op_compare	ndb_back_compare;
extern BI_op_modify	ndb_back_modify;
extern BI_op_modrdn	ndb_back_modrdn;
extern BI_op_add	ndb_back_add;
extern BI_op_delete	ndb_back_delete;
extern BI_operational	ndb_operational;
extern BI_has_subordinates	ndb_has_subordinates;
extern BI_entry_get_rw	ndb_entry_get;
extern BI_tool_entry_open	ndb_tool_entry_open;
extern BI_tool_entry_close	ndb_tool_entry_close;
extern BI_tool_entry_first	ndb_tool_entry_first;
extern BI_tool_entry_next	ndb_tool_entry_next;
extern BI_tool_entry_get	ndb_tool_entry_get;
extern BI_tool_entry_put	ndb_tool_entry_put;
extern BI_tool_dn2id_get	ndb_tool_dn2id_get;
extern int ndb_modify_internal(
	Operation *op,
	NdbArgs *NA,
	const char **text,
	char *textbuf,
	size_t textlen );
extern int
ndb_entry_get_data(
	Operation *op,
	NdbArgs *args,
	int update );
extern int
ndb_entry_put_data(
	BackendDB *be,
	NdbArgs *args );
extern int
ndb_entry_del_data(
	BackendDB *be,
	NdbArgs *args );
extern int
ndb_entry_put_info(
	BackendDB *be,
	NdbArgs *args,
	int update );
extern int
ndb_entry_get_info(
	Operation *op,
	NdbArgs *args,
	int update,
	struct berval *matched );
extern "C" int
ndb_entry_del_info(
	BackendDB *be,
	NdbArgs *args );
extern int
ndb_dn2rdns(
	struct berval *dn,
	NdbRdns *buf );
extern NdbAttrInfo *
ndb_ai_find( struct ndb_info *ni, AttributeType *at );
extern NdbAttrInfo *
ndb_ai_get( struct ndb_info *ni, struct berval *at );
extern int
ndb_aset_get( struct ndb_info *ni, struct berval *sname, struct berval *attrs, NdbOcInfo **ret );
extern int
ndb_aset_create( struct ndb_info *ni, NdbOcInfo *oci );
extern int
ndb_oc_read( struct ndb_info *ni, const NdbDictionary::Dictionary *dict );
extern int
ndb_oc_attrs(
	NdbTransaction *txn,
	const NdbDictionary::Table *myTable,
	Entry *e,
	NdbOcInfo *no,
	NdbAttrInfo **attrs,
	int nattrs,
	Attribute *old );
extern int
ndb_has_children(
	NdbArgs *NA,
	int *hasChildren );
extern struct berval *
ndb_str2bvarray(
	char *str,
	int len,
	char delim,
	void *ctx );
extern struct berval *
ndb_ref2oclist(
	const char *ref,
	void *ctx );
extern int
ndb_next_id(
	BackendDB *be,
	Ndb *ndb,
	ID *id );
extern int
ndb_thread_handle(
	Operation *op,
	Ndb **ndb );
extern int
ndb_back_init_cf(
	BackendInfo *bi );
extern "C" void
ndb_trans_backoff( int num_retries );
extern "C" void
ndb_check_referral( Operation *op, SlapReply *rs, NdbArgs *NA );
LDAP_END_DECL
#endif /* _PROTO_NDB_H */