slapi-plugin.h revision 1.1.1.4
1/* $NetBSD: slapi-plugin.h,v 1.1.1.4 2014/05/28 09:58:40 tron Exp $ */ 2 3/* $OpenLDAP$ */ 4/* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 1998-2014 The OpenLDAP Foundation. 7 * Portions Copyright 1997,2002,2003 IBM Corporation. 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted only as authorized by the OpenLDAP 12 * Public License. 13 * 14 * A copy of this license is available in file LICENSE in the 15 * top-level directory of the distribution or, alternatively, at 16 * <http://www.OpenLDAP.org/license.html>. 17 */ 18 19/* 20 * This header is used in development of SLAPI plugins for 21 * OpenLDAP slapd(8) and other directory servers supporting 22 * this interface. Your portability mileage may vary. 23 */ 24 25#ifndef _SLAPI_PLUGIN_H 26#define _SLAPI_PLUGIN_H 27 28#include <ldap.h> 29 30typedef struct slapi_pblock Slapi_PBlock; 31typedef struct slapi_entry Slapi_Entry; 32typedef struct slapi_attr Slapi_Attr; 33typedef struct slapi_value Slapi_Value; 34typedef struct slapi_valueset Slapi_ValueSet; 35typedef struct slapi_filter Slapi_Filter; 36typedef struct BackendDB Slapi_Backend; 37typedef struct Operation Slapi_Operation; 38typedef struct Connection Slapi_Connection; 39typedef struct slapi_dn Slapi_DN; 40typedef struct slapi_rdn Slapi_RDN; 41typedef struct slapi_mod Slapi_Mod; 42typedef struct slapi_mods Slapi_Mods; 43typedef struct slapi_componentid Slapi_ComponentId; 44 45#define SLAPI_ATTR_UNIQUEID "entryUUID" 46#define SLAPI_ATTR_OBJECTCLASS "objectClass" 47 48/* pblock routines */ 49int slapi_pblock_get( Slapi_PBlock *pb, int arg, void *value ); 50int slapi_pblock_set( Slapi_PBlock *pb, int arg, void *value ); 51Slapi_PBlock *slapi_pblock_new( void ); 52void slapi_pblock_destroy( Slapi_PBlock *pb ); 53 54/* entry/attr/dn routines */ 55Slapi_Entry *slapi_str2entry( char *s, int flags ); 56#define SLAPI_STR2ENTRY_REMOVEDUPVALS 1 57#define SLAPI_STR2ENTRY_ADDRDNVALS 2 58#define SLAPI_STR2ENTRY_BIGENTRY 4 59#define SLAPI_STR2ENTRY_TOMBSTONE_CHECK 8 60#define SLAPI_STR2ENTRY_IGNORE_STATE 16 61#define SLAPI_STR2ENTRY_INCLUDE_VERSION_STR 32 62#define SLAPI_STR2ENTRY_EXPAND_OBJECTCLASSES 64 63#define SLAPI_STR2ENTRY_NOT_WELL_FORMED_LDIF 128 64char *slapi_entry2str( Slapi_Entry *e, int *len ); 65char *slapi_entry_get_dn( Slapi_Entry *e ); 66int slapi_x_entry_get_id( Slapi_Entry *e ); 67void slapi_entry_set_dn( Slapi_Entry *e, char *dn ); 68Slapi_Entry *slapi_entry_dup( Slapi_Entry *e ); 69int slapi_entry_attr_delete( Slapi_Entry *e, char *type ); 70Slapi_Entry *slapi_entry_alloc(); 71void slapi_entry_free( Slapi_Entry *e ); 72int slapi_entry_attr_merge( Slapi_Entry *e, char *type, struct berval **vals ); 73int slapi_entry_attr_find( Slapi_Entry *e, char *type, Slapi_Attr **attr ); 74char *slapi_entry_attr_get_charptr( const Slapi_Entry *e, const char *type ); 75int slapi_entry_attr_get_int( const Slapi_Entry *e, const char *type ); 76long slapi_entry_attr_get_long( const Slapi_Entry *e, const char *type ); 77unsigned int slapi_entry_attr_get_uint( const Slapi_Entry *e, const char *type ); 78unsigned long slapi_entry_attr_get_ulong( const Slapi_Entry *e, const char *type ); 79int slapi_attr_get_values( Slapi_Attr *attr, struct berval ***vals ); 80char *slapi_dn_normalize( char *dn ); 81char *slapi_dn_normalize_case( char *dn ); 82int slapi_dn_issuffix( char *dn, char *suffix ); 83char *slapi_dn_beparent( Slapi_PBlock *pb, const char *dn ); 84int slapi_dn_isbesuffix( Slapi_PBlock *pb, char *dn ); 85char *slapi_dn_parent( const char *dn ); 86int slapi_dn_isparent( const char *parentdn, const char *childdn ); 87char *slapi_dn_ignore_case( char *dn ); 88int slapi_rdn2typeval( char *rdn, char **type, struct berval *bv ); 89char *slapi_dn_plus_rdn(const char *dn, const char *rdn); 90 91/* DS 5.x SLAPI */ 92int slapi_access_allowed( Slapi_PBlock *pb, Slapi_Entry *e, char *attr, struct berval *val, int access ); 93int slapi_acl_check_mods( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod **mods, char **errbuf ); 94Slapi_Attr *slapi_attr_new( void ); 95Slapi_Attr *slapi_attr_init( Slapi_Attr *a, const char *type ); 96void slapi_attr_free( Slapi_Attr **a ); 97Slapi_Attr *slapi_attr_dup( const Slapi_Attr *attr ); 98int slapi_attr_add_value( Slapi_Attr *a, const Slapi_Value *v ); 99int slapi_attr_type2plugin( const char *type, void **pi ); 100int slapi_attr_get_type( const Slapi_Attr *attr, char **type ); 101int slapi_attr_get_oid_copy( const Slapi_Attr *attr, char **oidp ); 102int slapi_attr_get_flags( const Slapi_Attr *attr, unsigned long *flags ); 103int slapi_attr_flag_is_set( const Slapi_Attr *attr, unsigned long flag ); 104int slapi_attr_value_cmp( const Slapi_Attr *attr, const struct berval *v1, const struct berval *v2 ); 105int slapi_attr_value_find( const Slapi_Attr *a, struct berval *v ); 106#define SLAPI_TYPE_CMP_EXACT 0 107#define SLAPI_TYPE_CMP_BASE 1 108#define SLAPI_TYPE_CMP_SUBTYPE 2 109int slapi_attr_type_cmp( const char *t1, const char *t2, int opt ); 110int slapi_attr_types_equivalent( const char *t1, const char *t2 ); 111int slapi_attr_first_value( Slapi_Attr *a, Slapi_Value **v ); 112int slapi_attr_next_value( Slapi_Attr *a, int hint, Slapi_Value **v ); 113int slapi_attr_get_numvalues( const Slapi_Attr *a, int *numValues ); 114int slapi_attr_get_valueset( const Slapi_Attr *a, Slapi_ValueSet **vs ); 115int slapi_attr_get_bervals_copy( Slapi_Attr *a, struct berval ***vals ); 116int slapi_entry_attr_hasvalue( Slapi_Entry *e, const char *type, const char *value ); 117int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 118void slapi_entry_attr_set_charptr(Slapi_Entry* e, const char *type, const char *value); 119void slapi_entry_attr_set_int( Slapi_Entry* e, const char *type, int l); 120void slapi_entry_attr_set_uint( Slapi_Entry* e, const char *type, unsigned int l); 121void slapi_entry_attr_set_long(Slapi_Entry* e, const char *type, long l); 122void slapi_entry_attr_set_ulong(Slapi_Entry* e, const char *type, unsigned long l); 123int slapi_entry_has_children(const Slapi_Entry *e); 124size_t slapi_entry_size(Slapi_Entry *e); 125int slapi_is_rootdse( const char *dn ); 126int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 127int slapi_entry_add_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 128int slapi_entry_add_valueset(Slapi_Entry *e, const char *type, Slapi_ValueSet *vs); 129int slapi_entry_delete_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 130int slapi_entry_merge_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 131int slapi_entry_attr_replace_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); 132int slapi_entry_add_value(Slapi_Entry *e, const char *type, const Slapi_Value *value); 133int slapi_entry_add_string(Slapi_Entry *e, const char *type, const char *value); 134int slapi_entry_delete_string(Slapi_Entry *e, const char *type, const char *value); 135int slapi_entry_first_attr( const Slapi_Entry *e, Slapi_Attr **attr ); 136int slapi_entry_next_attr( const Slapi_Entry *e, Slapi_Attr *prevattr, Slapi_Attr **attr ); 137const char *slapi_entry_get_uniqueid( const Slapi_Entry *e ); 138void slapi_entry_set_uniqueid( Slapi_Entry *e, char *uniqueid ); 139int slapi_entry_schema_check( Slapi_PBlock *pb, Slapi_Entry *e ); 140int slapi_entry_rdn_values_present( const Slapi_Entry *e ); 141int slapi_entry_add_rdn_values( Slapi_Entry *e ); 142char *slapi_attr_syntax_normalize( const char *s ); 143 144Slapi_Value *slapi_value_new( void ); 145Slapi_Value *slapi_value_new_berval(const struct berval *bval); 146Slapi_Value *slapi_value_new_value(const Slapi_Value *v); 147Slapi_Value *slapi_value_new_string(const char *s); 148Slapi_Value *slapi_value_init(Slapi_Value *v); 149Slapi_Value *slapi_value_init_berval(Slapi_Value *v, struct berval *bval); 150Slapi_Value *slapi_value_init_string(Slapi_Value *v, const char *s); 151Slapi_Value *slapi_value_dup(const Slapi_Value *v); 152void slapi_value_free(Slapi_Value **value); 153const struct berval *slapi_value_get_berval( const Slapi_Value *value ); 154Slapi_Value *slapi_value_set_berval( Slapi_Value *value, const struct berval *bval ); 155Slapi_Value *slapi_value_set_value( Slapi_Value *value, const Slapi_Value *vfrom); 156Slapi_Value *slapi_value_set( Slapi_Value *value, void *val, unsigned long len); 157int slapi_value_set_string(Slapi_Value *value, const char *strVal); 158int slapi_value_set_int(Slapi_Value *value, int intVal); 159const char*slapi_value_get_string(const Slapi_Value *value); 160int slapi_value_get_int(const Slapi_Value *value); 161unsigned int slapi_value_get_uint(const Slapi_Value *value); 162long slapi_value_get_long(const Slapi_Value *value); 163unsigned long slapi_value_get_ulong(const Slapi_Value *value); 164size_t slapi_value_get_length(const Slapi_Value *value); 165int slapi_value_compare(const Slapi_Attr *a, const Slapi_Value *v1, const Slapi_Value *v2); 166 167Slapi_ValueSet *slapi_valueset_new( void ); 168void slapi_valueset_free(Slapi_ValueSet *vs); 169void slapi_valueset_init(Slapi_ValueSet *vs); 170void slapi_valueset_done(Slapi_ValueSet *vs); 171void slapi_valueset_add_value(Slapi_ValueSet *vs, const Slapi_Value *addval); 172int slapi_valueset_first_value( Slapi_ValueSet *vs, Slapi_Value **v ); 173int slapi_valueset_next_value( Slapi_ValueSet *vs, int index, Slapi_Value **v); 174int slapi_valueset_count( const Slapi_ValueSet *vs); 175void slapi_valueset_set_valueset(Slapi_ValueSet *vs1, const Slapi_ValueSet *vs2); 176 177/* DNs */ 178Slapi_DN *slapi_sdn_new( void ); 179Slapi_DN *slapi_sdn_new_dn_byval( const char *dn ); 180Slapi_DN *slapi_sdn_new_ndn_byval( const char *ndn ); 181Slapi_DN *slapi_sdn_new_dn_byref( const char *dn ); 182Slapi_DN *slapi_sdn_new_ndn_byref( const char *ndn ); 183Slapi_DN *slapi_sdn_new_dn_passin( const char *dn ); 184Slapi_DN *slapi_sdn_set_dn_byval( Slapi_DN *sdn, const char *dn ); 185Slapi_DN *slapi_sdn_set_dn_byref( Slapi_DN *sdn, const char *dn ); 186Slapi_DN *slapi_sdn_set_dn_passin( Slapi_DN *sdn, const char *dn ); 187Slapi_DN *slapi_sdn_set_ndn_byval( Slapi_DN *sdn, const char *ndn ); 188Slapi_DN *slapi_sdn_set_ndn_byref( Slapi_DN *sdn, const char *ndn ); 189void slapi_sdn_done( Slapi_DN *sdn ); 190void slapi_sdn_free( Slapi_DN **sdn ); 191const char * slapi_sdn_get_dn( const Slapi_DN *sdn ); 192const char * slapi_sdn_get_ndn( const Slapi_DN *sdn ); 193void slapi_sdn_get_parent( const Slapi_DN *sdn,Slapi_DN *sdn_parent ); 194void slapi_sdn_get_backend_parent( const Slapi_DN *sdn, Slapi_DN *sdn_parent, const Slapi_Backend *backend ); 195Slapi_DN * slapi_sdn_dup( const Slapi_DN *sdn ); 196void slapi_sdn_copy( const Slapi_DN *from, Slapi_DN *to ); 197int slapi_sdn_compare( const Slapi_DN *sdn1, const Slapi_DN *sdn2 ); 198int slapi_sdn_isempty( const Slapi_DN *sdn ); 199int slapi_sdn_issuffix(const Slapi_DN *sdn, const Slapi_DN *suffixsdn ); 200int slapi_sdn_isparent( const Slapi_DN *parent, const Slapi_DN *child ); 201int slapi_sdn_isgrandparent( const Slapi_DN *parent, const Slapi_DN *child ); 202int slapi_sdn_get_ndn_len( const Slapi_DN *sdn ); 203int slapi_sdn_scope_test( const Slapi_DN *dn, const Slapi_DN *base, int scope ); 204void slapi_sdn_get_rdn( const Slapi_DN *sdn,Slapi_RDN *rdn ); 205Slapi_DN *slapi_sdn_set_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn ); 206Slapi_DN *slapi_sdn_set_parent( Slapi_DN *sdn, const Slapi_DN *parentdn ); 207int slapi_sdn_is_rdn_component( const Slapi_DN *rdn, const Slapi_Attr *a, const Slapi_Value *v ); 208char * slapi_moddn_get_newdn( Slapi_DN *dn_olddn, char *newrdn, char *newsuperiordn ); 209 210/* RDNs */ 211Slapi_RDN *slapi_rdn_new( void ); 212Slapi_RDN *slapi_rdn_new_dn( const char *dn ); 213Slapi_RDN *slapi_rdn_new_sdn( const Slapi_DN *sdn ); 214Slapi_RDN *slapi_rdn_new_rdn( const Slapi_RDN *fromrdn ); 215void slapi_rdn_init( Slapi_RDN *rdn ); 216void slapi_rdn_init_dn( Slapi_RDN *rdn, const char *dn ); 217void slapi_rdn_init_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn ); 218void slapi_rdn_init_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn ); 219void slapi_rdn_set_dn( Slapi_RDN *rdn, const char *dn ); 220void slapi_rdn_set_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn ); 221void slapi_rdn_set_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn ); 222void slapi_rdn_free( Slapi_RDN **rdn ); 223void slapi_rdn_done( Slapi_RDN *rdn ); 224int slapi_rdn_get_first( Slapi_RDN *rdn, char **type, char **value ); 225int slapi_rdn_get_next( Slapi_RDN *rdn, int index, char **type, char **value ); 226int slapi_rdn_get_index( Slapi_RDN *rdn, const char *type, const char *value, size_t length ); 227int slapi_rdn_get_index_attr( Slapi_RDN *rdn, const char *type, char **value ); 228int slapi_rdn_contains( Slapi_RDN *rdn, const char *type, const char *value,size_t length ); 229int slapi_rdn_contains_attr( Slapi_RDN *rdn, const char *type, char **value ); 230int slapi_rdn_add( Slapi_RDN *rdn, const char *type, const char *value ); 231int slapi_rdn_remove_index( Slapi_RDN *rdn, int atindex ); 232int slapi_rdn_remove( Slapi_RDN *rdn, const char *type, const char *value, size_t length ); 233int slapi_rdn_remove_attr( Slapi_RDN *rdn, const char *type ); 234int slapi_rdn_isempty( const Slapi_RDN *rdn ); 235int slapi_rdn_get_num_components( Slapi_RDN *rdn ); 236int slapi_rdn_compare( Slapi_RDN *rdn1, Slapi_RDN *rdn2 ); 237const char *slapi_rdn_get_rdn( const Slapi_RDN *rdn ); 238const char *slapi_rdn_get_nrdn( const Slapi_RDN *rdn ); 239Slapi_DN *slapi_sdn_add_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn ); 240 241/* locks and synchronization */ 242typedef struct slapi_mutex Slapi_Mutex; 243typedef struct slapi_condvar Slapi_CondVar; 244Slapi_Mutex *slapi_new_mutex( void ); 245void slapi_destroy_mutex( Slapi_Mutex *mutex ); 246void slapi_lock_mutex( Slapi_Mutex *mutex ); 247int slapi_unlock_mutex( Slapi_Mutex *mutex ); 248Slapi_CondVar *slapi_new_condvar( Slapi_Mutex *mutex ); 249void slapi_destroy_condvar( Slapi_CondVar *cvar ); 250int slapi_wait_condvar( Slapi_CondVar *cvar, struct timeval *timeout ); 251int slapi_notify_condvar( Slapi_CondVar *cvar, int notify_all ); 252 253/* thread-safe LDAP connections */ 254LDAP *slapi_ldap_init( char *ldaphost, int ldapport, int secure, int shared ); 255void slapi_ldap_unbind( LDAP *ld ); 256 257char *slapi_ch_malloc( unsigned long size ); 258void slapi_ch_free( void **ptr ); 259void slapi_ch_free_string( char **ptr ); 260char *slapi_ch_calloc( unsigned long nelem, unsigned long size ); 261char *slapi_ch_realloc( char *block, unsigned long size ); 262char *slapi_ch_strdup( const char *s ); 263void slapi_ch_array_free( char **arrayp ); 264struct berval *slapi_ch_bvdup(const struct berval *v); 265struct berval **slapi_ch_bvecdup(const struct berval **v); 266 267/* LDAP V3 routines */ 268int slapi_control_present( LDAPControl **controls, char *oid, 269 struct berval **val, int *iscritical); 270void slapi_register_supported_control(char *controloid, 271 unsigned long controlops); 272#define SLAPI_OPERATION_BIND 0x00000001L 273#define SLAPI_OPERATION_UNBIND 0x00000002L 274#define SLAPI_OPERATION_SEARCH 0x00000004L 275#define SLAPI_OPERATION_MODIFY 0x00000008L 276#define SLAPI_OPERATION_ADD 0x00000010L 277#define SLAPI_OPERATION_DELETE 0x00000020L 278#define SLAPI_OPERATION_MODDN 0x00000040L 279#define SLAPI_OPERATION_MODRDN SLAPI_OPERATION_MODDN 280#define SLAPI_OPERATION_COMPARE 0x00000080L 281#define SLAPI_OPERATION_ABANDON 0x00000100L 282#define SLAPI_OPERATION_EXTENDED 0x00000200L 283#define SLAPI_OPERATION_ANY 0xFFFFFFFFL 284#define SLAPI_OPERATION_NONE 0x00000000L 285int slapi_get_supported_controls(char ***ctrloidsp, unsigned long **ctrlopsp); 286LDAPControl *slapi_dup_control(LDAPControl *ctrl); 287void slapi_register_supported_saslmechanism(char *mechanism); 288char **slapi_get_supported_saslmechanisms(); 289char **slapi_get_supported_extended_ops(void); 290 291/* operation */ 292int slapi_op_abandoned( Slapi_PBlock *pb ); 293unsigned long slapi_op_get_type(Slapi_Operation * op); 294void slapi_operation_set_flag(Slapi_Operation *op, unsigned long flag); 295void slapi_operation_clear_flag(Slapi_Operation *op, unsigned long flag); 296int slapi_operation_is_flag_set(Slapi_Operation *op, unsigned long flag); 297char *slapi_op_type_to_string(unsigned long type); 298 299/* send ldap result back */ 300void slapi_send_ldap_result( Slapi_PBlock *pb, int err, char *matched, 301 char *text, int nentries, struct berval **urls ); 302int slapi_send_ldap_search_entry( Slapi_PBlock *pb, Slapi_Entry *e, 303 LDAPControl **ectrls, char **attrs, int attrsonly ); 304int slapi_send_ldap_search_reference( Slapi_PBlock *pb, Slapi_Entry *e, 305 struct berval **urls, LDAPControl **ectrls, struct berval **v2refs ); 306 307/* filter routines */ 308Slapi_Filter *slapi_str2filter( char *str ); 309Slapi_Filter *slapi_filter_dup( Slapi_Filter *f ); 310void slapi_filter_free( Slapi_Filter *f, int recurse ); 311int slapi_filter_get_choice( Slapi_Filter *f); 312int slapi_filter_get_ava( Slapi_Filter *f, char **type, struct berval **bval ); 313Slapi_Filter *slapi_filter_list_first( Slapi_Filter *f ); 314Slapi_Filter *slapi_filter_list_next( Slapi_Filter *f, Slapi_Filter *fprev ); 315int slapi_filter_get_attribute_type( Slapi_Filter *f, char **type ); 316int slapi_x_filter_set_attribute_type( Slapi_Filter *f, const char *type ); 317int slapi_filter_get_subfilt( Slapi_Filter *f, char **type, char **initial, 318 char ***any, char **final ); 319Slapi_Filter *slapi_filter_join( int ftype, Slapi_Filter *f1, Slapi_Filter *f2); 320int slapi_x_filter_append( int choice, Slapi_Filter **pContainingFilter, 321 Slapi_Filter **pNextFilter, Slapi_Filter *filterToAppend ); 322int slapi_filter_test( Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Filter *f, 323 int verify_access ); 324int slapi_filter_test_simple( Slapi_Entry *e, Slapi_Filter *f ); 325typedef int (*FILTER_APPLY_FN)( Slapi_Filter *f, void *arg ); 326int slapi_filter_apply( Slapi_Filter *f, FILTER_APPLY_FN fn, void *arg, int *error_code ); 327#define SLAPI_FILTER_SCAN_STOP -1 /* set by callback */ 328#define SLAPI_FILTER_SCAN_ERROR -2 /* set by callback */ 329#define SLAPI_FILTER_SCAN_NOMORE 0 /* set by callback */ 330#define SLAPI_FILTER_SCAN_CONTINUE 1 /* set by callback */ 331#define SLAPI_FILTER_UNKNOWN_FILTER_TYPE 2 /* set by slapi_filter_apply() */ 332 333/* internal add/delete/search/modify routines */ 334Slapi_PBlock *slapi_search_internal( char *base, int scope, char *filter, 335 LDAPControl **controls, char **attrs, int attrsonly ); 336Slapi_PBlock *slapi_modify_internal( char *dn, LDAPMod **mods, 337 LDAPControl **controls, int log_change ); 338Slapi_PBlock *slapi_add_internal( char * dn, LDAPMod **attrs, 339 LDAPControl **controls, int log_changes ); 340Slapi_PBlock *slapi_add_entry_internal( Slapi_Entry * e, 341 LDAPControl **controls, int log_change ); 342Slapi_PBlock *slapi_delete_internal( char * dn, LDAPControl **controls, 343 int log_change ); 344Slapi_PBlock *slapi_modrdn_internal( char * olddn, char * newrdn, 345 int deloldrdn, LDAPControl **controls, 346 int log_change ); 347Slapi_PBlock *slapi_rename_internal( const char * olddn, const char *newrdn, 348 const char *newsuperior, int delolrdn, 349 LDAPControl **controls, int log_change ); 350void slapi_free_search_results_internal(Slapi_PBlock *pb); 351 352/* new internal add/delete/search/modify routines */ 353typedef void (*plugin_result_callback)( int rc, void *callback_data ); 354typedef int (*plugin_referral_entry_callback)( char * referral, 355 void *callback_data ); 356typedef int (*plugin_search_entry_callback)( Slapi_Entry *e, 357 void *callback_data ); 358void slapi_free_search_results_internal( Slapi_PBlock *pb ); 359 360#define SLAPI_OP_FLAG_NEVER_CHAIN 0x0800 361 362int slapi_search_internal_pb( Slapi_PBlock *pb ); 363int slapi_search_internal_callback_pb( Slapi_PBlock *pb, void *callback_data, 364 plugin_result_callback prc, plugin_search_entry_callback psec, 365 plugin_referral_entry_callback prec ); 366int slapi_add_internal_pb( Slapi_PBlock *pb ); 367int slapi_modify_internal_pb( Slapi_PBlock *pb ); 368int slapi_modrdn_internal_pb( Slapi_PBlock *pb ); 369int slapi_delete_internal_pb( Slapi_PBlock *pb ); 370 371int slapi_seq_internal_callback_pb(Slapi_PBlock *pb, void *callback_data, 372 plugin_result_callback res_callback, 373 plugin_search_entry_callback srch_callback, 374 plugin_referral_entry_callback ref_callback); 375 376void slapi_search_internal_set_pb( Slapi_PBlock *pb, const char *base, 377 int scope, const char *filter, char **attrs, int attrsonly, 378 LDAPControl **controls, const char *uniqueid, 379 Slapi_ComponentId *plugin_identity, int operation_flags ); 380void slapi_add_entry_internal_set_pb( Slapi_PBlock *pb, Slapi_Entry *e, 381 LDAPControl **controls, Slapi_ComponentId *plugin_identity, 382 int operation_flags ); 383int slapi_add_internal_set_pb( Slapi_PBlock *pb, const char *dn, 384 LDAPMod **attrs, LDAPControl **controls, 385 Slapi_ComponentId *plugin_identity, int operation_flags ); 386void slapi_modify_internal_set_pb( Slapi_PBlock *pb, const char *dn, 387 LDAPMod **mods, LDAPControl **controls, const char *uniqueid, 388 Slapi_ComponentId *plugin_identity, int operation_flags ); 389void slapi_rename_internal_set_pb( Slapi_PBlock *pb, const char *olddn, 390 const char *newrdn, const char *newsuperior, int deloldrdn, 391 LDAPControl **controls, const char *uniqueid, 392 Slapi_ComponentId *plugin_identity, int operation_flags ); 393void slapi_delete_internal_set_pb( Slapi_PBlock *pb, const char *dn, 394 LDAPControl **controls, const char *uniqueid, 395 Slapi_ComponentId *plugin_identity, int operation_flags ); 396void slapi_seq_internal_set_pb( Slapi_PBlock *pb, char *ibase, int type, 397 char *attrname, char *val, char **attrs, int attrsonly, 398 LDAPControl **controls, Slapi_ComponentId *plugin_identity, 399 int operation_flags ); 400 401/* connection related routines */ 402int slapi_is_connection_ssl(Slapi_PBlock *pPB, int *isSSL); 403int slapi_get_client_port(Slapi_PBlock *pPB, int *fromPort); 404int slapi_get_client_ip(Slapi_PBlock *pb, char **clientIP); 405void slapi_free_client_ip(char **clientIP); 406 407/* computed attributes */ 408typedef struct _computed_attr_context computed_attr_context; 409typedef int (*slapi_compute_output_t)(computed_attr_context *c, Slapi_Attr *a, Slapi_Entry *e); 410typedef int (*slapi_compute_callback_t)(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn); 411typedef int (*slapi_search_rewrite_callback_t)(Slapi_PBlock *pb); 412int slapi_compute_add_evaluator(slapi_compute_callback_t function); 413int slapi_compute_add_search_rewriter(slapi_search_rewrite_callback_t function); 414int compute_rewrite_search_filter(Slapi_PBlock *pb); 415int compute_evaluator(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn); 416int slapi_x_compute_get_pblock(computed_attr_context *c, Slapi_PBlock **pb); 417 418/* backend routines */ 419void slapi_be_set_readonly( Slapi_Backend *be, int readonly ); 420int slapi_be_get_readonly( Slapi_Backend *be ); 421const char *slapi_x_be_get_updatedn( Slapi_Backend *be ); 422Slapi_Backend *slapi_be_select( const Slapi_DN *sdn ); 423 424/* ACL plugins; only SLAPI_PLUGIN_ACL_ALLOW_ACCESS supported now */ 425typedef int (*slapi_acl_callback_t)(Slapi_PBlock *pb, 426 Slapi_Entry *e, 427 const char *attr, 428 struct berval *berval, 429 int access, 430 void *state); 431 432/* object extensions */ 433typedef void *(*slapi_extension_constructor_fnptr)(void *object, void *parent); 434 435typedef void (*slapi_extension_destructor_fnptr)(void *extension, 436 void *object, void *parent); 437 438int slapi_register_object_extension( const char *pluginname, 439 const char *objectname, slapi_extension_constructor_fnptr constructor, 440 slapi_extension_destructor_fnptr destructor, int *objecttype, 441 int *extensionhandle); 442 443#define SLAPI_EXT_CONNECTION "Connection" 444#define SLAPI_EXT_OPERATION "Operation" 445#define SLAPI_EXT_ENTRY "Entry" 446#define SLAPI_EXT_MTNODE "Mapping Tree Node" 447 448void *slapi_get_object_extension(int objecttype, void *object, 449 int extensionhandle); 450void slapi_set_object_extension(int objecttype, void *object, 451 int extensionhandle, void *extension); 452 453int slapi_x_backend_get_flags( const Slapi_Backend *be, unsigned long *flags ); 454 455/* parameters currently supported */ 456 457/* 458 * Attribute flags returned by slapi_attr_get_flags() 459 */ 460#define SLAPI_ATTR_FLAG_SINGLE 0x0001 461#define SLAPI_ATTR_FLAG_OPATTR 0x0002 462#define SLAPI_ATTR_FLAG_READONLY 0x0004 463#define SLAPI_ATTR_FLAG_STD_ATTR SLAPI_ATTR_FLAG_READONLY 464#define SLAPI_ATTR_FLAG_OBSOLETE 0x0040 465#define SLAPI_ATTR_FLAG_COLLECTIVE 0x0080 466#define SLAPI_ATTR_FLAG_NOUSERMOD 0x0100 467 468/* 469 * Backend flags returned by slapi_x_backend_get_flags() 470 */ 471#define SLAPI_BACKEND_FLAG_NOLASTMOD 0x0001U 472#define SLAPI_BACKEND_FLAG_NO_SCHEMA_CHECK 0x0002U 473#define SLAPI_BACKEND_FLAG_GLUE_INSTANCE 0x0010U /* a glue backend */ 474#define SLAPI_BACKEND_FLAG_GLUE_SUBORDINATE 0x0020U /* child of a glue hierarchy */ 475#define SLAPI_BACKEND_FLAG_GLUE_LINKED 0x0040U /* child is connected to parent */ 476#define SLAPI_BACKEND_FLAG_OVERLAY 0x0080U /* this db struct is an overlay */ 477#define SLAPI_BACKEND_FLAG_GLOBAL_OVERLAY 0x0100U /* this db struct is a global overlay */ 478#define SLAPI_BACKEND_FLAG_SHADOW 0x8000U /* a shadow */ 479#define SLAPI_BACKEND_FLAG_SYNC_SHADOW 0x1000U /* a sync shadow */ 480#define SLAPI_BACKEND_FLAG_SLURP_SHADOW 0x2000U /* a slurp shadow */ 481 482/* 483 * ACL levels 484 */ 485#define SLAPI_ACL_COMPARE 0x01 486#define SLAPI_ACL_SEARCH 0x02 487#define SLAPI_ACL_READ 0x04 488#define SLAPI_ACL_WRITE 0x08 489#define SLAPI_ACL_DELETE 0x10 490#define SLAPI_ACL_ADD 0x20 491#define SLAPI_ACL_SELF 0x40 492#define SLAPI_ACL_PROXY 0x80 493#define SLAPI_ACL_ALL 0x7f 494 495/* plugin types supported */ 496 497#define SLAPI_PLUGIN_DATABASE 1 498#define SLAPI_PLUGIN_EXTENDEDOP 2 499#define SLAPI_PLUGIN_PREOPERATION 3 500#define SLAPI_PLUGIN_POSTOPERATION 4 501#define SLAPI_PLUGIN_MATCHINGRULE 5 502#define SLAPI_PLUGIN_SYNTAX 6 503#define SLAPI_PLUGIN_AUDIT 7 504 505/* misc params */ 506 507#define SLAPI_BACKEND 130 508#define SLAPI_CONNECTION 131 509#define SLAPI_OPERATION 132 510#define SLAPI_REQUESTOR_ISROOT 133 511#define SLAPI_BE_MONITORDN 134 512#define SLAPI_BE_TYPE 135 513#define SLAPI_BE_READONLY 136 514#define SLAPI_BE_LASTMOD 137 515#define SLAPI_CONN_ID 139 516 517/* operation params */ 518#define SLAPI_OPINITIATED_TIME 140 519#define SLAPI_REQUESTOR_DN 141 520#define SLAPI_IS_REPLICATED_OPERATION 142 521#define SLAPI_REQUESTOR_ISUPDATEDN SLAPI_IS_REPLICATED_OPERATION 522 523/* connection structure params*/ 524#define SLAPI_CONN_DN 143 525#define SLAPI_CONN_AUTHTYPE 144 526#define SLAPI_CONN_CLIENTIP 145 527#define SLAPI_CONN_SERVERIP 146 528/* OpenLDAP extensions */ 529#define SLAPI_X_CONN_CLIENTPATH 1300 530#define SLAPI_X_CONN_SERVERPATH 1301 531#define SLAPI_X_CONN_IS_UDP 1302 532#define SLAPI_X_CONN_SSF 1303 533#define SLAPI_X_CONN_SASL_CONTEXT 1304 534#define SLAPI_X_OPERATION_DELETE_GLUE_PARENT 1305 535#define SLAPI_X_RELAX 1306 536#define SLAPI_X_MANAGEDIT SLAPI_X_RELAX 537#define SLAPI_X_OPERATION_NO_SCHEMA_CHECK 1307 538#define SLAPI_X_ADD_STRUCTURAL_CLASS 1308 539#define SLAPI_X_OPERATION_NO_SUBORDINATE_GLUE 1309 540 541/* Authentication types */ 542#define SLAPD_AUTH_NONE "none" 543#define SLAPD_AUTH_SIMPLE "simple" 544#define SLAPD_AUTH_SSL "SSL" 545#define SLAPD_AUTH_SASL "SASL " 546 547/* plugin configuration parmams */ 548#define SLAPI_PLUGIN 3 549#define SLAPI_PLUGIN_PRIVATE 4 550#define SLAPI_PLUGIN_TYPE 5 551#define SLAPI_PLUGIN_ARGV 6 552#define SLAPI_PLUGIN_ARGC 7 553#define SLAPI_PLUGIN_VERSION 8 554#define SLAPI_PLUGIN_OPRETURN 9 555#define SLAPI_PLUGIN_OBJECT 10 556#define SLAPI_PLUGIN_DESTROY_FN 11 557#define SLAPI_PLUGIN_DESCRIPTION 12 558#define SLAPI_PLUGIN_IDENTITY 13 559 560/* internal opreations params */ 561#define SLAPI_PLUGIN_INTOP_RESULT 15 562#define SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES 16 563#define SLAPI_PLUGIN_INTOP_SEARCH_REFERRALS 17 564 565/* transaction arguments */ 566#define SLAPI_PARENT_TXN 190 567#define SLAPI_TXN 191 568 569/* function pointer params for backends */ 570#define SLAPI_PLUGIN_DB_BIND_FN 200 571#define SLAPI_PLUGIN_DB_UNBIND_FN 201 572#define SLAPI_PLUGIN_DB_SEARCH_FN 202 573#define SLAPI_PLUGIN_DB_COMPARE_FN 203 574#define SLAPI_PLUGIN_DB_MODIFY_FN 204 575#define SLAPI_PLUGIN_DB_MODRDN_FN 205 576#define SLAPI_PLUGIN_DB_ADD_FN 206 577#define SLAPI_PLUGIN_DB_DELETE_FN 207 578#define SLAPI_PLUGIN_DB_ABANDON_FN 208 579#define SLAPI_PLUGIN_DB_CONFIG_FN 209 580#define SLAPI_PLUGIN_CLOSE_FN 210 581#define SLAPI_PLUGIN_DB_FLUSH_FN 211 582#define SLAPI_PLUGIN_START_FN 212 583#define SLAPI_PLUGIN_DB_SEQ_FN 213 584#define SLAPI_PLUGIN_DB_ENTRY_FN 214 585#define SLAPI_PLUGIN_DB_REFERRAL_FN 215 586#define SLAPI_PLUGIN_DB_RESULT_FN 216 587#define SLAPI_PLUGIN_DB_LDIF2DB_FN 217 588#define SLAPI_PLUGIN_DB_DB2LDIF_FN 218 589#define SLAPI_PLUGIN_DB_BEGIN_FN 219 590#define SLAPI_PLUGIN_DB_COMMIT_FN 220 591#define SLAPI_PLUGIN_DB_ABORT_FN 221 592#define SLAPI_PLUGIN_DB_ARCHIVE2DB_FN 222 593#define SLAPI_PLUGIN_DB_DB2ARCHIVE_FN 223 594#define SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN 224 595#define SLAPI_PLUGIN_DB_FREE_RESULT_SET_FN 225 596#define SLAPI_PLUGIN_DB_SIZE_FN 226 597#define SLAPI_PLUGIN_DB_TEST_FN 227 598 599 600/* functions pointers for LDAP V3 extended ops */ 601#define SLAPI_PLUGIN_EXT_OP_FN 300 602#define SLAPI_PLUGIN_EXT_OP_OIDLIST 301 603 604/* preoperation */ 605#define SLAPI_PLUGIN_PRE_BIND_FN 401 606#define SLAPI_PLUGIN_PRE_UNBIND_FN 402 607#define SLAPI_PLUGIN_PRE_SEARCH_FN 403 608#define SLAPI_PLUGIN_PRE_COMPARE_FN 404 609#define SLAPI_PLUGIN_PRE_MODIFY_FN 405 610#define SLAPI_PLUGIN_PRE_MODRDN_FN 406 611#define SLAPI_PLUGIN_PRE_ADD_FN 407 612#define SLAPI_PLUGIN_PRE_DELETE_FN 408 613#define SLAPI_PLUGIN_PRE_ABANDON_FN 409 614#define SLAPI_PLUGIN_PRE_ENTRY_FN 410 615#define SLAPI_PLUGIN_PRE_REFERRAL_FN 411 616#define SLAPI_PLUGIN_PRE_RESULT_FN 412 617 618/* internal preoperation */ 619#define SLAPI_PLUGIN_INTERNAL_PRE_ADD_FN 420 620#define SLAPI_PLUGIN_INTERNAL_PRE_MODIFY_FN 421 621#define SLAPI_PLUGIN_INTERNAL_PRE_MODRDN_FN 422 622#define SLAPI_PLUGIN_INTERNAL_PRE_DELETE_FN 423 623 624/* backend preoperation */ 625#define SLAPI_PLUGIN_BE_PRE_ADD_FN 450 626#define SLAPI_PLUGIN_BE_PRE_MODIFY_FN 451 627#define SLAPI_PLUGIN_BE_PRE_MODRDN_FN 452 628#define SLAPI_PLUGIN_BE_PRE_DELETE_FN 453 629 630/* postoperation */ 631#define SLAPI_PLUGIN_POST_BIND_FN 501 632#define SLAPI_PLUGIN_POST_UNBIND_FN 502 633#define SLAPI_PLUGIN_POST_SEARCH_FN 503 634#define SLAPI_PLUGIN_POST_COMPARE_FN 504 635#define SLAPI_PLUGIN_POST_MODIFY_FN 505 636#define SLAPI_PLUGIN_POST_MODRDN_FN 506 637#define SLAPI_PLUGIN_POST_ADD_FN 507 638#define SLAPI_PLUGIN_POST_DELETE_FN 508 639#define SLAPI_PLUGIN_POST_ABANDON_FN 509 640#define SLAPI_PLUGIN_POST_ENTRY_FN 510 641#define SLAPI_PLUGIN_POST_REFERRAL_FN 511 642#define SLAPI_PLUGIN_POST_RESULT_FN 512 643 644/* internal postoperation */ 645#define SLAPI_PLUGIN_INTERNAL_POST_ADD_FN 520 646#define SLAPI_PLUGIN_INTERNAL_POST_MODIFY_FN 521 647#define SLAPI_PLUGIN_INTERNAL_POST_MODRDN_FN 522 648#define SLAPI_PLUGIN_INTERNAL_POST_DELETE_FN 523 649 650/* backend postoperation */ 651#define SLAPI_PLUGIN_BE_POST_ADD_FN 550 652#define SLAPI_PLUGIN_BE_POST_MODIFY_FN 551 653#define SLAPI_PLUGIN_BE_POST_MODRDN_FN 552 654#define SLAPI_PLUGIN_BE_POST_DELETE_FN 553 655 656#define SLAPI_OPERATION_TYPE 590 657#define SLAPI_OPERATION_MSGID 591 658 659#define SLAPI_PLUGIN_MR_FILTER_CREATE_FN 600 660#define SLAPI_PLUGIN_MR_INDEXER_CREATE_FN 601 661#define SLAPI_PLUGIN_MR_FILTER_MATCH_FN 602 662#define SLAPI_PLUGIN_MR_FILTER_INDEX_FN 603 663#define SLAPI_PLUGIN_MR_FILTER_RESET_FN 604 664#define SLAPI_PLUGIN_MR_INDEX_FN 605 665#define SLAPI_PLUGIN_MR_OID 610 666#define SLAPI_PLUGIN_MR_TYPE 611 667#define SLAPI_PLUGIN_MR_VALUE 612 668#define SLAPI_PLUGIN_MR_VALUES 613 669#define SLAPI_PLUGIN_MR_KEYS 614 670#define SLAPI_PLUGIN_MR_FILTER_REUSABLE 615 671#define SLAPI_PLUGIN_MR_QUERY_OPERATOR 616 672#define SLAPI_PLUGIN_MR_USAGE 617 673 674#define SLAPI_MATCHINGRULE_NAME 1 675#define SLAPI_MATCHINGRULE_OID 2 676#define SLAPI_MATCHINGRULE_DESC 3 677#define SLAPI_MATCHINGRULE_SYNTAX 4 678#define SLAPI_MATCHINGRULE_OBSOLETE 5 679 680#define SLAPI_OP_LESS 1 681#define SLAPI_OP_LESS_OR_EQUAL 2 682#define SLAPI_OP_EQUAL 3 683#define SLAPI_OP_GREATER_OR_EQUAL 4 684#define SLAPI_OP_GREATER 5 685#define SLAPI_OP_SUBSTRING 6 686 687#define SLAPI_PLUGIN_MR_USAGE_INDEX 0 688#define SLAPI_PLUGIN_MR_USAGE_SORT 1 689 690#define SLAPI_PLUGIN_SYNTAX_FILTER_AVA 700 691#define SLAPI_PLUGIN_SYNTAX_FILTER_SUB 701 692#define SLAPI_PLUGIN_SYNTAX_VALUES2KEYS 702 693#define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_AVA 703 694#define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_SUB 704 695#define SLAPI_PLUGIN_SYNTAX_NAMES 705 696#define SLAPI_PLUGIN_SYNTAX_OID 706 697#define SLAPI_PLUGIN_SYNTAX_FLAGS 707 698#define SLAPI_PLUGIN_SYNTAX_COMPARE 708 699 700#define SLAPI_PLUGIN_SYNTAX_FLAG_ORKEYS 1 701#define SLAPI_PLUGIN_SYNTAX_FLAG_ORDERING 2 702 703#define SLAPI_PLUGIN_ACL_INIT 730 704#define SLAPI_PLUGIN_ACL_SYNTAX_CHECK 731 705#define SLAPI_PLUGIN_ACL_ALLOW_ACCESS 732 706#define SLAPI_PLUGIN_ACL_MODS_ALLOWED 733 707#define SLAPI_PLUGIN_ACL_MODS_UPDATE 734 708 709#define SLAPI_OPERATION_AUTHTYPE 741 710#define SLAPI_OPERATION_ID 742 711#define SLAPI_CONN_CERT 743 712#define SLAPI_CONN_AUTHMETHOD 746 713#define SLAPI_IS_INTERNAL_OPERATION 748 714 715#define SLAPI_RESULT_CODE 881 716#define SLAPI_RESULT_TEXT 882 717#define SLAPI_RESULT_MATCHED 883 718 719/* managedsait control */ 720#define SLAPI_MANAGEDSAIT 1000 721 722/* audit plugin defines */ 723#define SLAPI_PLUGIN_AUDIT_DATA 1100 724#define SLAPI_PLUGIN_AUDIT_FN 1101 725 726/* backend_group extension */ 727#define SLAPI_X_PLUGIN_PRE_GROUP_FN 1202 728#define SLAPI_X_PLUGIN_POST_GROUP_FN 1203 729 730#define SLAPI_X_GROUP_ENTRY 1250 /* group entry */ 731#define SLAPI_X_GROUP_ATTRIBUTE 1251 /* member attribute */ 732#define SLAPI_X_GROUP_OPERATION_DN 1252 /* asserted value */ 733#define SLAPI_X_GROUP_TARGET_ENTRY 1253 /* target entry */ 734 735/* internal preoperation extensions */ 736#define SLAPI_PLUGIN_INTERNAL_PRE_BIND_FN 1260 737#define SLAPI_PLUGIN_INTERNAL_PRE_UNBIND_FN 1261 738#define SLAPI_PLUGIN_INTERNAL_PRE_SEARCH_FN 1262 739#define SLAPI_PLUGIN_INTERNAL_PRE_COMPARE_FN 1263 740#define SLAPI_PLUGIN_INTERNAL_PRE_ABANDON_FN 1264 741 742/* internal postoperation extensions */ 743#define SLAPI_PLUGIN_INTERNAL_POST_BIND_FN 1270 744#define SLAPI_PLUGIN_INTERNAL_POST_UNBIND_FN 1271 745#define SLAPI_PLUGIN_INTERNAL_POST_SEARCH_FN 1272 746#define SLAPI_PLUGIN_INTERNAL_POST_COMPARE_FN 1273 747#define SLAPI_PLUGIN_INTERNAL_POST_ABANDON_FN 1274 748 749/* config stuff */ 750#define SLAPI_CONFIG_FILENAME 40 751#define SLAPI_CONFIG_LINENO 41 752#define SLAPI_CONFIG_ARGC 42 753#define SLAPI_CONFIG_ARGV 43 754 755/* operational params */ 756#define SLAPI_TARGET_ADDRESS 48 757#define SLAPI_TARGET_UNIQUEID 49 758#define SLAPI_TARGET_DN 50 759 760/* server LDAPv3 controls */ 761#define SLAPI_REQCONTROLS 51 762#define SLAPI_RESCONTROLS 55 763#define SLAPI_ADD_RESCONTROL 56 764#define SLAPI_CONTROLS_ARG 58 765 766/* add params */ 767#define SLAPI_ADD_TARGET SLAPI_TARGET_DN 768#define SLAPI_ADD_ENTRY 60 769#define SLAPI_ADD_EXISTING_DN_ENTRY 61 770#define SLAPI_ADD_PARENT_ENTRY 62 771#define SLAPI_ADD_PARENT_UNIQUEID 63 772#define SLAPI_ADD_EXISTING_UNIQUEID_ENTRY 64 773 774/* bind params */ 775#define SLAPI_BIND_TARGET SLAPI_TARGET_DN 776#define SLAPI_BIND_METHOD 70 777#define SLAPI_BIND_CREDENTIALS 71 778#define SLAPI_BIND_SASLMECHANISM 72 779#define SLAPI_BIND_RET_SASLCREDS 73 780 781/* compare params */ 782#define SLAPI_COMPARE_TARGET SLAPI_TARGET_DN 783#define SLAPI_COMPARE_TYPE 80 784#define SLAPI_COMPARE_VALUE 81 785 786/* delete params */ 787#define SLAPI_DELETE_TARGET SLAPI_TARGET_DN 788#define SLAPI_DELETE_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY 789 790/* modify params */ 791#define SLAPI_MODIFY_TARGET SLAPI_TARGET_DN 792#define SLAPI_MODIFY_MODS 90 793#define SLAPI_MODIFY_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY 794 795/* modrdn params */ 796#define SLAPI_MODRDN_TARGET SLAPI_TARGET_DN 797#define SLAPI_MODRDN_NEWRDN 100 798#define SLAPI_MODRDN_DELOLDRDN 101 799#define SLAPI_MODRDN_NEWSUPERIOR 102 /* v3 only */ 800#define SLAPI_MODRDN_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY 801#define SLAPI_MODRDN_PARENT_ENTRY 104 802#define SLAPI_MODRDN_NEWPARENT_ENTRY 105 803#define SLAPI_MODRDN_TARGET_ENTRY 106 804#define SLAPI_MODRDN_NEWSUPERIOR_ADDRESS 107 805 806/* search params */ 807#define SLAPI_SEARCH_TARGET SLAPI_TARGET_DN 808#define SLAPI_SEARCH_SCOPE 110 809#define SLAPI_SEARCH_DEREF 111 810#define SLAPI_SEARCH_SIZELIMIT 112 811#define SLAPI_SEARCH_TIMELIMIT 113 812#define SLAPI_SEARCH_FILTER 114 813#define SLAPI_SEARCH_STRFILTER 115 814#define SLAPI_SEARCH_ATTRS 116 815#define SLAPI_SEARCH_ATTRSONLY 117 816 817/* abandon params */ 818#define SLAPI_ABANDON_MSGID 120 819 820/* extended operation params */ 821#define SLAPI_EXT_OP_REQ_OID 160 822#define SLAPI_EXT_OP_REQ_VALUE 161 823 824/* extended operation return codes */ 825#define SLAPI_EXT_OP_RET_OID 162 826#define SLAPI_EXT_OP_RET_VALUE 163 827 828#define SLAPI_PLUGIN_EXTENDED_SENT_RESULT -1 829 830#define SLAPI_FAIL_DISKFULL -2 831#define SLAPI_FAIL_GENERAL -1 832#define SLAPI_PLUGIN_EXTENDED_NOT_HANDLED -2 833#define SLAPI_BIND_SUCCESS 0 834#define SLAPI_BIND_FAIL 2 835#define SLAPI_BIND_ANONYMOUS 3 836 837/* Search result params */ 838#define SLAPI_SEARCH_RESULT_SET 193 839#define SLAPI_SEARCH_RESULT_ENTRY 194 840#define SLAPI_NENTRIES 195 841#define SLAPI_SEARCH_REFERRALS 196 842 843/* filter types */ 844#ifndef LDAP_FILTER_AND 845#define LDAP_FILTER_AND 0xa0L 846#endif 847#ifndef LDAP_FILTER_OR 848#define LDAP_FILTER_OR 0xa1L 849#endif 850#ifndef LDAP_FILTER_NOT 851#define LDAP_FILTER_NOT 0xa2L 852#endif 853#ifndef LDAP_FILTER_EQUALITY 854#define LDAP_FILTER_EQUALITY 0xa3L 855#endif 856#ifndef LDAP_FILTER_SUBSTRINGS 857#define LDAP_FILTER_SUBSTRINGS 0xa4L 858#endif 859#ifndef LDAP_FILTER_GE 860#define LDAP_FILTER_GE 0xa5L 861#endif 862#ifndef LDAP_FILTER_LE 863#define LDAP_FILTER_LE 0xa6L 864#endif 865#ifndef LDAP_FILTER_PRESENT 866#define LDAP_FILTER_PRESENT 0x87L 867#endif 868#ifndef LDAP_FILTER_APPROX 869#define LDAP_FILTER_APPROX 0xa8L 870#endif 871#ifndef LDAP_FILTER_EXT_MATCH 872#define LDAP_FILTER_EXT_MATCH 0xa9L 873#endif 874 875int slapi_log_error( int severity, char *subsystem, char *fmt, ... ); 876#define SLAPI_LOG_FATAL 0 877#define SLAPI_LOG_TRACE 1 878#define SLAPI_LOG_PACKETS 2 879#define SLAPI_LOG_ARGS 3 880#define SLAPI_LOG_CONNS 4 881#define SLAPI_LOG_BER 5 882#define SLAPI_LOG_FILTER 6 883#define SLAPI_LOG_CONFIG 7 884#define SLAPI_LOG_ACL 8 885#define SLAPI_LOG_SHELL 9 886#define SLAPI_LOG_PARSE 10 887#define SLAPI_LOG_HOUSE 11 888#define SLAPI_LOG_REPL 12 889#define SLAPI_LOG_CACHE 13 890#define SLAPI_LOG_PLUGIN 14 891#define SLAPI_LOG_TIMING 15 892 893#define SLAPI_PLUGIN_DESCRIPTION 12 894typedef struct slapi_plugindesc { 895 char *spd_id; 896 char *spd_vendor; 897 char *spd_version; 898 char *spd_description; 899} Slapi_PluginDesc; 900 901#define SLAPI_PLUGIN_VERSION_01 "01" 902#define SLAPI_PLUGIN_VERSION_02 "02" 903#define SLAPI_PLUGIN_VERSION_03 "03" 904#define SLAPI_PLUGIN_CURRENT_VERSION SLAPI_PLUGIN_VERSION_03 905 906#endif /* _SLAPI_PLUGIN_H */ 907 908