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