Red Hat Directory Server 8.2

Plug-in Guide

Customizing Red Hat Directory Server 8.2 with plug-ins

Edition 8.2.0

Legal Notice

Copyright © 2010 Red Hat, Inc..
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack Logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
August 2, 2010 

Abstract

This book describes how to write server plug-ins in order to customize and extend the capabilities of the Red Hat Directory Server (Directory Server).
Preface
1. Required Concepts
2. Examples and Formatting
3. Additional Reading
4. Giving Feedback
5. Documentation History
I. Introduction to Directory Server Plug-ins
1. An Overview of Directory Server Plug-ins
1.1. About Directory Server Plug-ins
1.2. How Directory Server Plug-ins Work
1.3. Types of Directory Server Plug-ins
1.4. Using Directory Server Plug-in APIs
1.5. Deprecated Functions and Replacements
2. Writing and Compiling Plug-ins
2.1. Writing a Plug-in Function
2.2. Writing Plug-in Initialization Functions
2.3. Compiling a Directory Server Plug-in
3. Configuring Plug-ins
3.1. Creating a Plug-in Configuration File
3.2. Loading the Plug-in Configuration File
3.3. Passing Extra Arguments to Plug-ins
3.4. Setting the Log Level of the Server
4. An Example Plug-in
4.1. Writing the Plug-in Example
4.2. Compiling the Plug-in Example
4.3. Registering the Plug-in
4.4. Running the Plug-in
II. Writing Functions and Plug-ins
5. Frontend API Functions
5.1. Logging Messages
5.2. Adding Notes to Access Log Entries
5.3. Sending Data to the Client
5.4. Determining if an Operation was Abandoned
5.5. Working with Entries, Attributes, and Values
5.6. Working with DNs and RDNs
5.7. Working with Search Filters
5.8. Checking Passwords
6. Writing Pre- and Post-operation Plug-ins
6.1. How Pre- and Post-operation Plug-ins Work
6.2. Types of Pre-operation and Post-operation Functions
6.3. Registering Pre- and Post-operation Functions
7. Defining Functions for LDAP Operations
7.1. Specifying Start and Close Functions
7.2. Processing an LDAP Bind Operation
7.3. Processing an LDAP Unbind Operation
7.4. Processing an LDAP Search Operation
7.5. Processing an LDAP Compare Operation
7.6. Processing an LDAP Add Operation
7.7. Processing an LDAP Modify Operation
7.8. Processing an LDAP Modify RDN Operation
7.9. Processing an LDAP Delete Operation
7.10. Processing an LDAP Abandon Operation
8. Defining Functions for Authentication
8.1. Understanding Authentication Methods
8.2. How the Directory Server Identifies Clients
8.3. How the Authentication Process Works
8.4. Writing Your Own Authentication Plug-in
8.5. Writing a Pre-Operation Bind Plug-in
9. Writing Entry Store/Fetch Plug-ins
9.1. How Entry Store/Fetch Plug-ins Work
9.2. Writing Entry Store/Fetch Functions
9.3. Registering Entry Store/Fetch Functions
10. Writing Extended Operation Plug-ins
10.1. How Extended Operation Plug-ins Work
10.2. Writing Extended Operation Functions
10.3. Registering Extended Operation Functions
10.4. Specifying Start and Close Functions
11. Writing Matching Rule Plug-ins
11.1. Understanding Matching Rules
11.2. Understanding Matching Rule Plug-ins
11.3. Indexing Based on Matching Rules
11.4. Handling Extensible Match Filters
11.5. Handling Sorting by Matching Rules
11.6. Writing a Destructor Function
11.7. Writing an Initialization Function
11.8. Registering Matching Rule Functions
11.9. Specifying Start and Close Functions
12. Using the Custom Distribution Logic
12.1. About Distributing Flat Namespaces
12.2. Creating a Distribution Function
12.3. Adding the Distribution Function to Your Directory
12.4. Using the Distribution Logic Examples
12.5. Custom Distribution Checklist
13. Using Data Interoperability Plug-ins
13.1. Installing Directory Server
13.2. Enabling the DIOP Feature in Directory Server
13.3. Using the DIOP Feature
13.4. Sample DIOP Plug-in
13.5. Plug-in API Reference
III. Data Type and Structure Reference
14. Data Type and Structure Reference
14.1. berval
14.2. computed_attr_context
14.3. LDAPControl
14.4. LDAPMod
14.5. mrFilterMatchFn
14.6. plugin_referral_entry_callback
14.7. plugin_result_callback
14.8. plugin_search_entry_callback
14.9. send_ldap_referral_fn_ptr_t
14.10. send_ldap_result_fn_ptr_t
14.11. send_ldap_search_entry_fn_ptr_t
14.12. Slapi_Attr
14.13. Slapi_Backend
14.14. slapi_backend_state_change_fnptr
14.15. Slapi_ComponentID
14.16. slapi_compute_callback_t
14.17. slapi_compute_output_t
14.18. Slapi_Connection
14.19. Slapi_CondVar
14.20. Slapi_Counter
14.21. Slapi_DN
14.22. Slapi_Entry
14.23. Slapi_Filter
14.24. Slapi_MatchingRuleEntry
14.25. Slapi_Mod
14.26. Slapi_Mods
14.27. Slapi_Mutex
14.28. Slapi_Operation
14.29. Slapi_PBlock
14.30. Slapi_PluginDesc
14.31. Slapi_RDN
14.32. Slapi_Task
14.33. Slapi_UniqueID
14.34. Slapi_Value
14.35. Slapi_ValueSet
14.36. Synchronization Callbacks and Data Types
IV. Function Reference
15. Distribution Routines
15.1. distribution_plugin_entry_point()
16. Functions for Access Control
16.1. slapi_access_allowed()
16.2. slapi_acl_check_mods()
16.3. slapi_acl_verify_aci_syntax()
17. Functions for Internal Operations and Plug-in Callback
17.1. slapi_add_internal_pb()
17.2. slapi_delete_internal_pb()
17.3. slapi_free_search_results_internal()
17.4. slapi_modify_internal_pb()
17.5. slapi_modrdn_internal_pb()
17.6. slapi_search_internal_callback_pb()
17.7. slapi_search_internal_get_entry()
17.8. slapi_search_internal_pb()
18. Functions for Setting Internal Operation Flags
18.1. slapi_add_entry_internal_set_pb()
18.2. slapi_add_internal_set_pb()
18.3. slapi_delete_internal_set_pb()
18.4. slapi_modify_internal_set_pb()
18.5. slapi_rename_internal_set_pb()
18.6. slapi_search_internal_set_pb()
18.7. slapi_seq_internal_callback_pb()
18.8. slapi_seq_internal_set_pb()
19. Functions for Handling Attributes
19.1. slapi_attr_add_value()
19.2. slapi_attr_basetype()
19.3. slapi_attr_dup()
19.4. slapi_attr_first_value()
19.5. slapi_attr_flag_is_set()
19.6. slapi_attr_free()
19.7. slapi_attr_get_bervals_copy()
19.8. slapi_attr_get_flags()
19.9. slapi_attr_get_numvalues()
19.10. slapi_attr_get_oid_copy()
19.11. slapi_attr_get_type()
19.12. slapi_attr_get_valueset()
19.13. slapi_attr_init()
19.14. slapi_attr_new()
19.15. slapi_attr_next_value()
19.16. slapi_attr_set_valueset()
19.17. slapi_attr_syntax_normalize()
19.18. slapi_attr_type2plugin()
19.19. slapi_attr_type_cmp()
19.20. slapi_attr_types_equivalent()
19.21. slapi_attr_value_cmp()
19.22. slapi_attr_value_find()
19.23. slapi_valueset_set_from_smod()
20. Functions for Managing Backend Operations
20.1. slapi_be_addsuffix()
20.2. slapi_be_delete_onexit()
20.3. slapi_be_exist()
20.4. slapi_be_free()
20.5. slapi_be_get_instance_info()
20.6. slapi_be_get_name()
20.7. slapi_be_get_readonly()
20.8. slapi_be_getentrypoint()
20.9. slapi_be_getsuffix()
20.10. slapi_be_gettype()
20.11. slapi_be_is_flag_set()
20.12. slapi_be_issuffix()
20.13. slapi_be_logchanges()
20.14. slapi_be_new()
20.15. slapi_be_private()
20.16. slapi_be_select()
20.17. slapi_be_select_by_instance_name()
20.18. slapi_be_set_flag()
20.19. slapi_be_set_instance_info()
20.20. slapi_be_set_readonly()
20.21. slapi_be_setentrypoint()
20.22. slapi_get_first_backend()
20.23. slapi_get_first_suffix()
20.24. slapi_get_next_backend()
20.25. slapi_get_next_suffix()
20.26. slapi_is_root_suffix()
20.27. slapi_register_backend_state_change()
20.28. slapi_unregister_backend_state_change()
21. Functions for Dealing with Controls
21.1. slapi_add_control_ext()
21.2. slapi_add_controls()
21.3. slapi_build_control()
21.4. slapi_build_control_from_berval()
21.5. slapi_control_present()
21.6. slapi_dup_control()
21.7. slapi_get_supported_controls_copy()
21.8. slapi_register_supported_control()
22. Functions for Syntax Plug-ins
22.1. slapi_call_syntax_assertion2keys_ava_sv()
22.2. slapi_call_syntax_assertion2keys_sub_sv()
22.3. slapi_call_syntax_values2keys_sv()
23. Functions for Managing Memory
23.1. slapi_ch_array_add()
23.2. slapi_ch_array_free()
23.3. slapi_ch_bvdup()
23.4. slapi_ch_bvecdup()
23.5. slapi_ch_calloc()
23.6. slapi_ch_free()
23.7. slapi_ch_free_string()
23.8. slapi_ch_malloc()
23.9. slapi_ch_realloc()
23.10. slapi_ch_smprintf()
23.11. slapi_ch_strdup()
24. Functions for Managing Entries
24.1. slapi_entry2str()
24.2. slapi_entry2str_with_options()
24.3. slapi_entry_add_rdn_values()
24.4. slapi_entry_add_string()
24.5. slapi_entry_add_value()
24.6. slapi_entry_add_values_sv()
24.7. slapi_entry_add_valueset()
24.8. slapi_entry_alloc()
24.9. slapi_entry_apply_mods()
24.10. slapi_entry_attr_delete()
24.11. slapi_entry_attr_find()
24.12. slapi_entry_attr_get_bool()
24.13. slapi_entry_attr_get_charptr()
24.14. slapi_entry_attr_get_charray()
24.15. slapi_entry_attr_get_int()
24.16. slapi_entry_attr_get_long()
24.17. slapi_entry_attr_get_uint()
24.18. slapi_entry_attr_get_ulong()
24.19. slapi_entry_attr_has_syntax_value()
24.20. slapi_entry_attr_merge_sv()
24.21. slapi_entry_attr_replace_sv()
24.22. slapi_entry_attr_set_charptr()
24.23. slapi_entry_attr_set_int()
24.24. slapi_entry_attr_set_long()
24.25. slapi_entry_attr_set_uint()
24.26. slapi_entry_attr_set_ulong()
24.27. slapi_entry_delete_string()
24.28. slapi_entry_delete_values_sv()
24.29. slapi_entry_dup()
24.30. slapi_entry_first_attr()
24.31. slapi_entry_free()
24.32. slapi_entry_get_dn()
24.33. slapi_entry_get_dn_const()
24.34. slapi_entry_get_ndn()
24.35. slapi_entry_get_sdn()
24.36. slapi_entry_get_sdn_const()
24.37. slapi_entry_get_uniqueid()
24.38. slapi_entry_has_children()
24.39. slapi_entry_init()
24.40. slapi_entry_merge_values_sv()
24.41. slapi_entry_next_attr()
24.42. slapi_entry_rdn_values_present()
24.43. slapi_entry_schema_check()
24.44. slapi_entry_set_dn()
24.45. slapi_entry_set_sdn()
24.46. slapi_entry_set_uniqueid()
24.47. slapi_entry_size()
24.48. slapi_is_rootdse()
24.49. slapi_str2entry()
25. Functions Related to Entry Flags
25.1. slapi_entry_clear_flag()
25.2. slapi_entry_flag_is_set()
25.3. slapi_entry_set_flag()
26. Functions for Dealing with Filters
26.1. slapi_filter_apply()
26.2. slapi_filter_compare()
26.3. slapi_filter_dup()
26.4. slapi_filter_free()
26.5. slapi_filter_get_attribute_type()
26.6. slapi_filter_get_ava()
26.7. slapi_filter_get_choice()
26.8. slapi_filter_get_subfilt()
26.9. slapi_filter_get_type()
26.10. slapi_filter_join()
26.11. slapi_filter_join_ex()
26.12. slapi_filter_list_first()
26.13. slapi_filter_list_next()
26.14. slapi_filter_test()
26.15. slapi_filter_test_ext()
26.16. slapi_filter_test_simple()
26.17. slapi_find_matching_paren()
26.18. slapi_str2filter()
26.19. slapi_vattr_filter_test()
27. Functions Specific to Extended Operation
27.1. slapi_get_supported_extended_ops_copy()
28. Functions Specific to Bind Methods
28.1. slapi_add_auth_response_control()
28.2. slapi_get_supported_saslmechanisms_copy()
28.3. slapi_register_supported_saslmechanism()
29. Functions for Thread-Safe LDAP Connections
29.1. slapi_ldap_init()
29.2. slapi_ldap_unbind()
30. Functions for Logging
30.1. slapi_log_error()
30.2. slapi_is_loglevel_set()
31. Functions for Counters
31.1. slapi_counter_add()
31.2. slapi_counter_decrement()
31.3. slapi_counter_destroy()
31.4. slapi_counter_get_value()
31.5. slapi_counter_increment()
31.6. slapi_counter_init()
31.7. slapi_counter_new()
31.8. slapi_counter_set_value()
31.9. slapi_counter_subtract()
32. Functions for Handling Matching Rules
32.1. slapi_berval_cmp()
32.2. slapi_matchingrule_free()
32.3. slapi_matchingrule_get()
32.4. slapi_matchingrule_is_ordering()
32.5. slapi_matchingrule_new()
32.6. slapi_matchingrule_register()
32.7. slapi_matchingrule_set()
32.8. slapi_matchingrule_unregister()
32.9. slapi_mr_filter_index()
32.10. slapi_mr_indexer_create()
33. Functions for LDAPMod Manipulation
33.1. slapi_entry2mods()
33.2. slapi_mod_add_value()
33.3. slapi_mod_done()
33.4. slapi_mod_dump()
33.5. slapi_mod_free()
33.6. slapi_mod_get_first_value()
33.7. slapi_mod_get_ldapmod_byref()
33.8. slapi_mod_get_ldapmod_passout()
33.9. slapi_mod_get_next_value()
33.10. slapi_mod_get_num_values()
33.11. slapi_mod_get_operation()
33.12. slapi_mod_get_type()
33.13. slapi_mod_init()
33.14. slapi_mod_init_byref()
33.15. slapi_mod_init_byval()
33.16. slapi_mod_init_passin()
33.17. slapi_mod_init_valueset_byval()
33.18. slapi_mod_isvalid()
33.19. slapi_mod_new()
33.20. slapi_mod_remove_value()
33.21. slapi_mod_set_operation()
33.22. slapi_mod_set_type()
33.23. slapi_mods2entry()
33.24. slapi_mods_add()
33.25. slapi_mods_add_ldapmod()
33.26. slapi_mods_add_mod_values()
33.27. slapi_mods_add_smod()
33.28. slapi_mods_add_modbvps()
33.29. slapi_mods_add_string()
33.30. slapi_mods_done()
33.31. slapi_mods_dump()
33.32. slapi_mods_free()
33.33. slapi_mods_get_first_mod()
33.34. slapi_mods_get_first_smod()
33.35. slapi_mods_get_ldapmods_byref()
33.36. slapi_mods_get_ldapmods_passout()
33.37. slapi_mods_get_next_mod()
33.38. slapi_mods_get_next_smod()
33.39. slapi_mods_get_num_mods()
33.40. slapi_mods_init()
33.41. slapi_mods_init_byref()
33.42. slapi_mods_init_passin()
33.43. slapi_mods_insert_after()
33.44. slapi_mods_insert_at()
33.45. slapi_mods_insert_before()
33.46. slapi_mods_insert_smod_at()
33.47. slapi_mods_insert_smod_before()
33.48. slapi_mods_iterator_backone()
33.49. slapi_mods_new()
33.50. slapi_mods_remove()
34. Functions for Monitoring Operations
34.1. slapi_op_abandoned()
34.2. slapi_op_get_type()
35. Functions for Managing Parameter Block
35.1. slapi_pblock_destroy()
35.2. slapi_pblock_get()
35.3. slapi_pblock_init()
35.4. slapi_pblock_new()
35.5. slapi_pblock_set()
36. Functions for Handling Passwords
36.1. slapi_pw_find_sv()
36.2. slapi_is_encoded()
36.3. slapi_encode()
36.4. slapi_add_pwd_control()
36.5. slapi_pwpolicy_make_response_control()
37. Functions for Managing RDNs
37.1. slapi_rdn_add()
37.2. slapi_rdn_compare()
37.3. slapi_rdn_contains()
37.4. slapi_rdn_contains_attr()
37.5. slapi_rdn_done()
37.6. slapi_rdn_free()
37.7. slapi_rdn_get_first()
37.8. slapi_rdn_get_index()
37.9. slapi_rdn_get_index_attr()
37.10. slapi_rdn_get_next()
37.11. slapi_rdn_get_num_components()
37.12. slapi_rdn_get_rdn()
37.13. slapi_rdn_get_nrdn()
37.14. slapi_rdn_init()
37.15. slapi_rdn_init_dn()
37.16. slapi_rdn_init_rdn()
37.17. slapi_rdn_init_sdn()
37.18. slapi_rdn_isempty()
37.19. slapi_rdn_new()
37.20. slapi_rdn_new_dn()
37.21. slapi_rdn_new_rdn()
37.22. slapi_rdn_new_sdn()
37.23. slapi_rdn_remove()
37.24. slapi_rdn_remove_attr()
37.25. slapi_rdn_remove_index()
37.26. slapi_rdn_set_dn()
37.27. slapi_rdn_set_rdn()
37.28. slapi_rdn_set_sdn()
37.29. slapi_rdn2typeval()
38. Functions for Managing Roles
38.1. slapi_role_check()
38.2. slapi_register_role_check()
39. Functions for Managing DNs
39.1. slapi_dn_isroot()
39.2. slapi_dn_normalize_case()
39.3. slapi_dn_normalize_to_end()
39.4. slapi_moddn_get_newdn()
39.5. slapi_sdn_add_rdn()
39.6. slapi_sdn_compare()
39.7. slapi_sdn_copy()
39.8. slapi_sdn_done()
39.9. slapi_sdn_dup()
39.10. slapi_sdn_free()
39.11. slapi_sdn_get_backend_parent()
39.12. slapi_sdn_get_dn()
39.13. slapi_sdn_get_ndn()
39.14. slapi_sdn_get_ndn_len()
39.15. slapi_sdn_get_parent()
39.16. slapi_sdn_get_rdn()
39.17. slapi_sdn_is_rdn_component()
39.18. slapi_sdn_isempty()
39.19. slapi_sdn_isgrandparent()
39.20. slapi_sdn_isparent()
39.21. slapi_sdn_issuffix()
39.22. slapi_sdn_new()
39.23. slapi_sdn_new_dn_byref()
39.24. slapi_sdn_new_dn_byval()
39.25. slapi_sdn_new_dn_passin()
39.26. slapi_sdn_new_ndn_byref()
39.27. slapi_sdn_new_ndn_byval()
39.28. slapi_sdn_scope_test()
39.29. slapi_sdn_set_dn_byref()
39.30. slapi_sdn_set_dn_byval()
39.31. slapi_sdn_set_dn_passin()
39.32. slapi_sdn_set_ndn_byref()
39.33. slapi_sdn_set_ndn_byval()
39.34. slapi_sdn_set_parent()
39.35. slapi_sdn_set_rdn()
40. Functions for Sending Entries and Results to the Client
40.1. slapi_send_ldap_referral()
40.2. slapi_send_ldap_result()
40.3. slapi_send_ldap_search_entry()
41. Functions Related to UTF-8
41.1. slapi_has8thBit()
41.2. slapi_utf8casecmp()
41.3. slapi_UTF8CASECMP()
41.4. slapi_utf8ncasecmp()
41.5. slapi_UTF8NCASECMP()
41.6. slapi_utf8isLower()
41.7. slapi_UTF8ISLOWER()
41.8. slapi_utf8isUpper()
41.9. slapi_UTF8ISUPPER()
41.10. slapi_utf8StrToLower()
41.11. slapi_UTF8STRTOLOWER()
41.12. slapi_utf8StrToUpper()
41.13. slapi_UTF8STRTOUPPER()
41.14. slapi_utf8ToLower()
41.15. slapi_UTF8TOLOWER()
41.16. slapi_utf8ToUpper()
41.17. slapi_UTF8TOUPPER()
42. Functions for Handling Values
42.1. slapi_value_compare()
42.2. slapi_value_dup()
42.3. slapi_value_free()
42.4. slapi_value_get_berval()
42.5. slapi_value_get_flags()
42.6. slapi_value_get_int()
42.7. slapi_value_get_length()
42.8. slapi_value_get_long()
42.9. slapi_value_get_string()
42.10. slapi_value_get_uint()
42.11. slapi_value_get_ulong()
42.12. slapi_value_init()
42.13. slapi_value_init_berval()
42.14. slapi_value_init_string()
42.15. slapi_value_init_string_passin()
42.16. slapi_value_new()
42.17. slapi_value_new_berval()
42.18. slapi_value_new_string()
42.19. slapi_value_new_string_passin()
42.20. slapi_value_new_value()
42.21. slapi_value_set()
42.22. slapi_value_set_berval()
42.23. slapi_value_set_flags()
42.24. slapi_value_set_int()
42.25. slapi_value_set_string()
42.26. slapi_value_set_string_passin()
42.27. slapi_value_set_value()
42.28. slapi_values_set_flags()
43. Functions for Handling Valuesets
43.1. slapi_valueset_add_value()
43.2. slapi_valueset_add_value_ext()
43.3. slapi_valueset_count()
43.4. slapi_valueset_done()
43.5. slapi_valueset_find()
43.6. slapi_valueset_first_value()
43.7. slapi_valueset_free()
43.8. slapi_valueset_init()
43.9. slapi_valueset_new()
43.10. slapi_valueset_next_value()
43.11. slapi_valueset_set_from_smod()
43.12. slapi_valueset_set_valueset()
44. Functions Specific to Virtual Attribute Service
44.1. slapi_vattr_list_attrs()
44.2. slapi_vattr_attrs_free()
44.3. slapi_vattr_schema_check_type()
44.4. slapi_vattr_value_compare()
44.5. slapi_vattr_values_free()
44.6. slapi_vattr_values_get()
44.7. slapi_vattr_values_get_ex()
44.8. slapi_vattr_values_type_thang_get()
45. Functions for Managing Locks and Synchronization
45.1. slapi_destroy_condvar()
45.2. slapi_destroy_mutex()
45.3. slapi_lock_mutex()
45.4. slapi_new_condvar()
45.5. slapi_new_mutex()
45.6. slapi_notify_condvar()
45.7. slapi_unlock_mutex()
45.8. slapi_wait_condvar()
46. Functions for Managing Computed Attributes
46.1. slapi_compute_add_evaluator()
46.2. slapi_compute_add_search_rewriter()
46.3. compute_rewrite_search_filter()
47. Functions for Manipulating Bits
47.1. slapi_isbitset_int()
47.2. slapi_isbitset_uchar()
47.3. slapi_setbit_int()
47.4. slapi_setbit_uchar()
47.5. slapi_unsetbit_int()
47.6. slapi_unsetbit_uchar()
48. Functions for Registering Object Extensions
48.1. slapi_get_object_extension()
48.2. slapi_register_object_extension()
48.3. slapi_set_object_extension()
49. Functions Related to Data Interoperability
49.1. slapi_op_reserved()
49.2. slapi_operation_set_flag()
49.3. slapi_operation_clear_flag()
49.4. slapi_operation_is_flag_set()
50. Functions for Registering Additional Plug-ins
50.1. slapi_register_plugin()
51. Functions for Server Tasks
51.1. slapi_destroy_task()
51.2. slapi_new_task()
51.3. slapi_task_begin()
51.4. slapi_task_cancel()
51.5. slapi_task_dec_refcount()
51.6. slapi_task_finish()
51.7. slapi_task_get_data()
51.8. slapi_task_get_refcount()
51.9. slapi_task_get_state()
51.10. slapi_task_inc_progress()
51.11. slapi_task_inc_refcount()
51.12. slapi_task_log_notice()
51.13. slapi_task_log_status()
51.14. slapi_task_register_handler()
51.15. slapi_task_set_data()
51.16. slapi_task_set_cancel_fn()
51.17. slapi_task_set_destructor_fn()
51.18. slapi_task_status_changed()
V. Parameter Block Reference
52. Parameters for Registering Plug-in Functions
52.1. Pre-Operation/Data Validation Plug-ins
52.2. Post-Operation/Data Notification Plug-ins
52.3. Matching Rule Plug-ins
52.4. Entry Plug-ins
53. Parameters Accessible to All Plug-ins
53.1. Information about the Database
53.2. Information about the Connection
53.3. Information about the Operation
53.4. Information about Extended Operations
53.5. Information about the Transaction
53.6. Information about Access Control Lists
53.7. Notes in the Access Log
53.8. Information about the Plug-in
53.9. Information about Command-Line Arguments
53.10. Information about Attributes
53.11. Information about Targets
54. Parameters for the Bind Function
55. Parameters for the Search Function
55.1. Parameters Passed to the Search Function
55.2. Parameters for Executing the Search
55.3. Parameters for the Search Results
56. Parameters that Convert Strings to Entries
57. Parameters for the Add Function
58. Parameters for the Compare Function
59. Parameters for the Delete Function
60. Parameters for the Modify Function
61. Parameters for the Modify RDN Function
62. Parameters for the Abandon Function
63. Parameters for the Matching Rule Function
63.1. Query Operators in Extensible Match Filters
64. Parameters for LDBM Backend Pre- and Post-Operation Functions
64.1. Pre-Operation Plug-ins
64.2. Post-Operation Plug-ins
65. Parameters for the Database
65.1. Information about the Database
65.2. Information about Operations
65.3. Information about Backend State Change
66. Parameters for LDAP Functions
66.1. Parameters for LDAP Operations
66.2. Parameters for LDAP Control
66.3. Parameters for Generating LDIF Strings
67. Parameters for Error Logging
68. Parameters for Filters
68.1. Parameters for Comparison Filters
68.2. Parameters for Filter Operations
69. Parameters for Password Storage
69.1. Password Storage Plug-ins
69.2. Parameters for Password Storage
70. Parameters for Resource Limits
70.1. Parameter for Binder-Based Resource Limits
70.2. Status Codes for Resource Limits
71. Parameters for the Virtual Attribute Service
Index