/** BEGIN COPYRIGHT BLOCK
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 *
 * License: GPL (version 3 or any later version).
 * See LICENSE for details. 
 * END COPYRIGHT BLOCK **/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif


/*
 * Netscape Directory Server 4.x plugin API backwards compatible header file.
 */
#ifndef _SLAPIPLUGINCOMPAT4
#define _SLAPIPLUGINCOMPAT4

#ifdef __cplusplus
extern "C" {
#endif


/******* Deprecated (obsolete) macros ****************************************/
/*
 * The SLAPI_BIND_FAIL_OR_ANONYMOUS bind function return code is deprecated.
 * Use SLAPI_BIND_FAIL or SLAPI_BIND_ANONYMOUS instead.
 */
#define SLAPI_BIND_FAIL_OR_ANONYMOUS	1    /* back end should send result */


/******* Deprecated (obsolete) pblock arg identifiers ************************/
#define SLAPI_CONFIG_FILENAME		40	/* use config. entries instead */
#define SLAPI_CONFIG_LINENO			41	/* use config. entries instead */
#define SLAPI_CONFIG_ARGC			42	/* use config. entries instead */
#define SLAPI_CONFIG_ARGV			43	/* use config. entries instead */
#define SLAPI_CONN_AUTHTYPE    		144	/* use SLAPI_CONN_AUTHTYPE */
#define SLAPI_REQUESTOR_ISUPDATEDN	SLAPI_IS_REPLICATED_OPERATION
#define SLAPI_CONN_CLIENTIP			145	/* use SLAPI_CONN_CLIENTNETADDR */
#define SLAPI_CONN_SERVERIP			146	/* use SLAPI_CONN_SERVERNETADDR */

/******* Deprecated (obsolete) functions *************************************/
/*
 * Please use the new functions in slapi-plugin.h instead of the ones
 * below that are marked SLAPI_DEPRECATED.
 */
#define SLAPI_DEPRECATED


/*
 *
 * The following functions that deal with bervals are deprecated
 * and their use is not recommended.  For each deprecated function, you
 * will find in slapi-plugin.h a corresponding function with a _sv
 * extension that uses Slapi_Values instead of bervals.  The new
 * functions are more efficient than the old ones, and some of the old
 * functions are much less efficient than they were previously.
 */
SLAPI_DEPRECATED int slapi_entry_attr_merge( Slapi_Entry *e, const char *type,
		struct berval **vals );
SLAPI_DEPRECATED int slapi_entry_add_values( Slapi_Entry *e, const char *type,
		struct berval **vals );
SLAPI_DEPRECATED int slapi_entry_delete_values( Slapi_Entry *e,
		const char *type, struct berval **vals );
SLAPI_DEPRECATED int slapi_entry_attr_replace( Slapi_Entry *e,
		const char *type, struct berval **vals );
SLAPI_DEPRECATED int slapi_attr_get_values( Slapi_Attr *attr,
		struct berval ***vals );
SLAPI_DEPRECATED int slapi_attr_get_oid( const Slapi_Attr *attr, char **oid );
SLAPI_DEPRECATED int slapi_filter_get_type( Slapi_Filter *f, char **type );
SLAPI_DEPRECATED int slapi_pw_find( struct berval **vals, struct berval *v );
SLAPI_DEPRECATED int slapi_call_syntax_values2keys( void *vpi,
		struct berval **vals, struct berval ***ivals, int ftype );
SLAPI_DEPRECATED int slapi_call_syntax_assertion2keys_ava( void *vpi,
		struct berval *val, struct berval ***ivals, int ftype );
SLAPI_DEPRECATED int slapi_call_syntax_assertion2keys_sub( void *vpi,
		char *initial, char **any, char *final, struct berval ***ivals );
SLAPI_DEPRECATED int slapi_attr_values2keys( const Slapi_Attr *sattr,
		struct berval **vals, struct berval ***ivals, int ftype );
SLAPI_DEPRECATED int slapi_attr_assertion2keys_ava( const Slapi_Attr *sattr,
		struct berval *val, struct berval ***ivals, int ftype );
SLAPI_DEPRECATED int slapi_attr_assertion2keys_sub( const Slapi_Attr *sattr,
		char *initial, char **any, char *final, struct berval ***ivals );

/*
 * slapi_entry_attr_hasvalue() has been deprecated in favor of
 * slapi_entry_attr_has_syntax_value() which respects the syntax of the
 * attribute type (slapi_entry_attr_hasvalue() assumes the value is a
 * caseIgnore ASCII string).
 */
SLAPI_DEPRECATED int slapi_entry_attr_hasvalue(const Slapi_Entry *e,
		const char *type, const char *value);

/*
 * The following "internal operation" calls are deprecated.  The new internal
 * operation functions that are defined in slapi-plugin.h take a Slapi_PBlock
 * for extensibility and support the new plugin configuration capabilities
 * as well.
 */
SLAPI_DEPRECATED int slapi_search_internal_callback( const char *ibase,
		int scope, const char *ifstr, char **attrs, int attrsonly,
		void *callback_data, LDAPControl **controls,
		plugin_result_callback prc, plugin_search_entry_callback psec,
		plugin_referral_entry_callback prec );
SLAPI_DEPRECATED int slapi_seq_callback( const char *ibase, int type,
		char *attrname, char *val, char **attrs, int attrsonly,
		void *callback_data, LDAPControl **controls,
		plugin_result_callback res_callback,
		plugin_search_entry_callback srch_callback,
		plugin_referral_entry_callback ref_callback);
SLAPI_DEPRECATED Slapi_PBlock *slapi_search_internal( const char *base,
		int scope, const char *filter, LDAPControl **controls, char **attrs,
		int attrsonly );
SLAPI_DEPRECATED Slapi_PBlock *slapi_modify_internal( const char *dn,
		LDAPMod **mods, LDAPControl **controls, int dummy );
SLAPI_DEPRECATED Slapi_PBlock *slapi_add_internal( const char * dn,
		LDAPMod **attrs, LDAPControl **controls, int dummy );
SLAPI_DEPRECATED Slapi_PBlock *slapi_add_entry_internal( Slapi_Entry *e,
		LDAPControl **controls, int dummy );
SLAPI_DEPRECATED Slapi_PBlock *slapi_delete_internal( const char * dn,
		LDAPControl **controls, int dummy );
SLAPI_DEPRECATED Slapi_PBlock *slapi_modrdn_internal( const char * olddn,
		const char * newrdn, int deloldrdn, LDAPControl **controls, int dummy);
SLAPI_DEPRECATED Slapi_PBlock *slapi_rename_internal( const char *iodn,
		const char *inewrdn, const char *inewsuperior, int deloldrdn,
		LDAPControl **controls, int dummy);

/*
 * These following three functions are not multi-thread (MT) safe (they return
 * a pointer to unprotected data).  Use the new functions from slapi-plugin.h
 * that end in _copy() instead, e.g., use slapi_get_supported_controls_copy()
 * instead of slapi_get_supported_controls().
 */
SLAPI_DEPRECATED int slapi_get_supported_controls( char ***ctrloidsp,
	unsigned long **ctrlopsp );
SLAPI_DEPRECATED char **slapi_get_supported_extended_ops( void );
SLAPI_DEPRECATED char **slapi_get_supported_saslmechanisms( void );


#ifdef __cplusplus
}
#endif

#endif /* _SLAPIPLUGINCOMPAT4 */
