# PaCkAgE DaTaStReAm openldap 1 20969 # end of header 07070100031a6d000081a40000000000000000000000015124535600000119000000b600010002ffffffffffffffff0000001100000000openldap/pkginfoPKG=openldap NAME=openldap 2.4.33 i86pc Solaris 11 VERSION=2.4.33 PSTAMP=20th February 2013 VENDOR=OpenLDAP Project EMAIL=http://www.openldap.org/ DESC=Open Lightweight Directory Access Protocol ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100031a6c000081a400000000000000000000000151245356000063ec000000b600010002ffffffffffffffff0000001000000000openldap/pkgmap: 1 20969 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 s none /usr/local/bin/ldapadd=ldapmodify 1 f none /usr/local/bin/ldapcompare 0755 root root 408932 26566 1361334090 1 f none /usr/local/bin/ldapdelete 0755 root root 409480 16285 1361334090 1 f none /usr/local/bin/ldapexop 0755 root root 410164 50318 1361334090 1 f none /usr/local/bin/ldapmodify 0755 root root 425560 59480 1361334089 1 f none /usr/local/bin/ldapmodrdn 0755 root root 409020 59508 1361334090 1 f none /usr/local/bin/ldappasswd 0755 root root 406880 13348 1361334090 1 f none /usr/local/bin/ldapsearch 0755 root root 437376 10077 1361334089 1 f none /usr/local/bin/ldapurl 0755 root root 327752 48683 1361334090 1 f none /usr/local/bin/ldapwhoami 0755 root root 406216 55886 1361334090 1 d none /usr/local/etc 0755 root root 1 d none /usr/local/etc/openldap 0755 root root 1 f none /usr/local/etc/openldap/DB_CONFIG.example 0600 root root 845 5921 1361334092 1 f none /usr/local/etc/openldap/ldap.conf 0644 root root 245 19582 1361334088 1 f none /usr/local/etc/openldap/ldap.conf.default 0644 root root 245 19582 1361334088 1 d none /usr/local/etc/openldap/schema 0755 root root 1 f none /usr/local/etc/openldap/schema/README 0444 root root 3512 41517 1361334092 1 f none /usr/local/etc/openldap/schema/collective.ldif 0444 root root 2036 36392 1361334092 1 f none /usr/local/etc/openldap/schema/collective.schema 0444 root root 6190 4876 1361334092 1 f none /usr/local/etc/openldap/schema/corba.ldif 0444 root root 1845 18222 1361334092 1 f none /usr/local/etc/openldap/schema/corba.schema 0444 root root 8063 37945 1361334092 1 f none /usr/local/etc/openldap/schema/core.ldif 0444 root root 20612 29141 1361334092 1 f none /usr/local/etc/openldap/schema/core.schema 0444 root root 20499 14003 1361334092 1 f none /usr/local/etc/openldap/schema/cosine.ldif 0444 root root 12006 64679 1361334092 1 f none /usr/local/etc/openldap/schema/cosine.schema 0444 root root 73994 59146 1361334092 1 f none /usr/local/etc/openldap/schema/duaconf.ldif 0444 root root 4842 58426 1361334092 1 f none /usr/local/etc/openldap/schema/duaconf.schema 0444 root root 10388 50184 1361334092 1 f none /usr/local/etc/openldap/schema/dyngroup.ldif 0444 root root 3330 26313 1361334092 1 f none /usr/local/etc/openldap/schema/dyngroup.schema 0444 root root 3289 20653 1361334092 1 f none /usr/local/etc/openldap/schema/inetorgperson.ldif 0444 root root 3481 11677 1361334092 1 f none /usr/local/etc/openldap/schema/inetorgperson.schema 0444 root root 6267 57717 1361334092 1 f none /usr/local/etc/openldap/schema/java.ldif 0444 root root 2979 35417 1361334092 1 f none /usr/local/etc/openldap/schema/java.schema 0444 root root 13901 9751 1361334092 1 f none /usr/local/etc/openldap/schema/misc.ldif 0444 root root 2082 35478 1361334092 1 f none /usr/local/etc/openldap/schema/misc.schema 0444 root root 2387 48315 1361334092 1 f none /usr/local/etc/openldap/schema/nis.ldif 0444 root root 6809 59402 1361334092 1 f none /usr/local/etc/openldap/schema/nis.schema 0444 root root 7640 51668 1361334092 1 f none /usr/local/etc/openldap/schema/openldap.ldif 0444 root root 3308 17979 1361334092 1 f none /usr/local/etc/openldap/schema/openldap.schema 0444 root root 1514 60919 1361334092 1 f none /usr/local/etc/openldap/schema/pmi.ldif 0444 root root 6904 702 1361334092 1 f none /usr/local/etc/openldap/schema/pmi.schema 0444 root root 20467 17051 1361334092 1 f none /usr/local/etc/openldap/schema/ppolicy.ldif 0444 root root 4032 45299 1361334092 1 f none /usr/local/etc/openldap/schema/ppolicy.schema 0444 root root 19603 51206 1361334092 1 f none /usr/local/etc/openldap/slapd.conf 0600 root root 2129 47907 1361334091 1 f none /usr/local/etc/openldap/slapd.conf.default 0600 root root 2129 47907 1361334091 1 f none /usr/local/etc/openldap/slapd.ldif 0600 root root 2614 25800 1361334092 1 f none /usr/local/etc/openldap/slapd.ldif.default 0600 root root 2614 25800 1361334092 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/lber.h 0644 root root 15311 18273 1361334087 1 f none /usr/local/include/lber_types.h 0644 root root 1468 52751 1361334087 1 f none /usr/local/include/ldap.h 0644 root root 64751 13424 1361334087 1 f none /usr/local/include/ldap_cdefs.h 0644 root root 9466 11356 1361334087 1 f none /usr/local/include/ldap_features.h 0644 root root 1814 15260 1361334087 1 f none /usr/local/include/ldap_schema.h 0644 root root 9450 14771 1361334087 1 f none /usr/local/include/ldap_utf8.h 0644 root root 3468 11187 1361334087 1 f none /usr/local/include/ldif.h 0644 root root 4674 38736 1361334087 1 f none /usr/local/include/slapi-plugin.h 0644 root root 38351 4389 1361334087 1 d none /usr/local/lib 0755 root root 1 s none /usr/local/lib/liblber-2.4.so.2=liblber-2.4.so.2.8.5 1 f none /usr/local/lib/liblber-2.4.so.2.8.5 0755 root root 76728 360 1361334087 1 f none /usr/local/lib/liblber.a 0644 root root 77136 27883 1361334087 1 f none /usr/local/lib/liblber.la 0644 root root 935 14155 1361334087 1 s none /usr/local/lib/liblber.so=liblber-2.4.so.2.8.5 1 s none /usr/local/lib/libldap-2.4.so.2=libldap-2.4.so.2.8.5 1 f none /usr/local/lib/libldap-2.4.so.2.8.5 0755 root root 470988 43522 1361334088 1 f none /usr/local/lib/libldap.a 0644 root root 511800 34463 1361334088 1 f none /usr/local/lib/libldap.la 0644 root root 1008 20731 1361334088 1 s none /usr/local/lib/libldap.so=libldap-2.4.so.2.8.5 1 s none /usr/local/lib/libldap_r-2.4.so.2=libldap_r-2.4.so.2.8.5 1 f none /usr/local/lib/libldap_r-2.4.so.2.8.5 0755 root root 521148 51203 1361334089 1 f none /usr/local/lib/libldap_r.a 0644 root root 572520 16169 1361334089 1 f none /usr/local/lib/libldap_r.la 0644 root root 1022 22194 1361334089 1 s none /usr/local/lib/libldap_r.so=libldap_r-2.4.so.2.8.5 1 d none /usr/local/libexec 0755 root root 1 f none /usr/local/libexec/slapd 0755 root root 2521088 1626 1361334090 1 d none /usr/local/sbin 0755 root root 1 s none /usr/local/sbin/slapacl=../libexec/slapd 1 s none /usr/local/sbin/slapadd=../libexec/slapd 1 s none /usr/local/sbin/slapauth=../libexec/slapd 1 s none /usr/local/sbin/slapcat=../libexec/slapd 1 s none /usr/local/sbin/slapdn=../libexec/slapd 1 s none /usr/local/sbin/slapindex=../libexec/slapd 1 s none /usr/local/sbin/slappasswd=../libexec/slapd 1 s none /usr/local/sbin/slapschema=../libexec/slapd 1 s none /usr/local/sbin/slaptest=../libexec/slapd 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 s none /usr/local/share/man/man1/ldapadd.1=ldapmodify.1 1 f none /usr/local/share/man/man1/ldapcompare.1 0644 root root 6687 41694 1361334093 1 f none /usr/local/share/man/man1/ldapdelete.1 0644 root root 6724 41360 1361334093 1 f none /usr/local/share/man/man1/ldapexop.1 0644 root root 6153 64316 1361334093 1 f none /usr/local/share/man/man1/ldapmodify.1 0644 root root 8837 12170 1361334093 1 f none /usr/local/share/man/man1/ldapmodrdn.1 0644 root root 6894 53014 1361334093 1 f none /usr/local/share/man/man1/ldappasswd.1 0644 root root 5938 41358 1361334093 1 f none /usr/local/share/man/man1/ldapsearch.1 0644 root root 14246 30975 1361334093 1 f none /usr/local/share/man/man1/ldapurl.1 0644 root root 4091 11113 1361334093 1 f none /usr/local/share/man/man1/ldapwhoami.1 0644 root root 4978 23023 1361334093 1 d none /usr/local/share/man/man3 0755 root root 1 s none /usr/local/share/man/man3/ber_alloc_t.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_bvarray_add.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvarray_free.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvdup.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvecadd.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvecfree.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvfree.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvstr.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvstrdup.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_dupbv.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_first_element.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_flush.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_free.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_get_bitstring.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_boolean.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_enum.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_int.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_next.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_null.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_stringa.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_stringb.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_next_element.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_peek_tag.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_printf.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_enum.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_int.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_null.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_ostring.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_seq.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_set.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_string.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_scanf.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_skip_tag.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_start_set.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_str2bv.3=lber-types.3 1 f none /usr/local/share/man/man3/lber-decode.3 0644 root root 12613 29920 1361334093 1 f none /usr/local/share/man/man3/lber-encode.3 0644 root root 9241 47646 1361334093 1 f none /usr/local/share/man/man3/lber-memory.3 0644 root root 1516 58102 1361334094 1 f none /usr/local/share/man/man3/lber-sockbuf.3 0644 root root 5805 32452 1361334094 1 f none /usr/local/share/man/man3/lber-types.3 0644 root root 6485 33472 1361334094 1 s none /usr/local/share/man/man3/ld_errno.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap.3 0644 root root 8960 901 1361334094 1 f none /usr/local/share/man/man3/ldap_abandon.3 0644 root root 2269 61618 1361334094 1 s none /usr/local/share/man/man3/ldap_abandon_ext.3=ldap_abandon.3 1 f none /usr/local/share/man/man3/ldap_add.3 0644 root root 2634 27638 1361334094 1 s none /usr/local/share/man/man3/ldap_add_ext.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_add_ext_s.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_add_s.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_attributetype2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_attributetype2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_attributetype_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_bind.3 0644 root root 11820 42477 1361334094 1 s none /usr/local/share/man/man3/ldap_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_compare.3 0644 root root 2707 36349 1361334095 1 s none /usr/local/share/man/man3/ldap_compare_ext.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_compare_ext_s.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_compare_s.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_control_create.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_dup.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_find.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_free.3=ldap_controls.3 1 f none /usr/local/share/man/man3/ldap_controls.3 0644 root root 2957 59310 1361334095 1 s none /usr/local/share/man/man3/ldap_controls_dup.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_controls_free.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_count_entries.3=ldap_first_entry.3 1 s none /usr/local/share/man/man3/ldap_count_messages.3=ldap_first_message.3 1 s none /usr/local/share/man/man3/ldap_count_references.3=ldap_first_reference.3 1 s none /usr/local/share/man/man3/ldap_count_values.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_count_values_len.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_dcedn2dn.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_delete.3 0644 root root 2503 18122 1361334095 1 s none /usr/local/share/man/man3/ldap_delete_ext.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_delete_ext_s.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_delete_s.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_destroy.3=ldap_dup.3 1 s none /usr/local/share/man/man3/ldap_dn2ad_canonical.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2dcedn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2str.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2ufn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dnfree.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_dup.3 0644 root root 3581 50472 1361334095 1 s none /usr/local/share/man/man3/ldap_err2string.3=ldap_error.3 1 s none /usr/local/share/man/man3/ldap_errlist.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap_error.3 0644 root root 6610 34865 1361334095 1 s none /usr/local/share/man/man3/ldap_explode_dn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_explode_rdn.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_extended_operation.3 0644 root root 2486 19980 1361334096 1 s none /usr/local/share/man/man3/ldap_extended_operation_s.3=ldap_extended_operation.3 1 f none /usr/local/share/man/man3/ldap_first_attribute.3 0644 root root 2310 2736 1361334096 1 f none /usr/local/share/man/man3/ldap_first_entry.3 0644 root root 2362 4034 1361334096 1 f none /usr/local/share/man/man3/ldap_first_message.3 0644 root root 2591 24959 1361334096 1 f none /usr/local/share/man/man3/ldap_first_reference.3 0644 root root 2301 1333 1361334096 1 s none /usr/local/share/man/man3/ldap_free_urldesc.3=ldap_url.3 1 f none /usr/local/share/man/man3/ldap_get_dn.3 0644 root root 6713 41408 1361334096 1 f none /usr/local/share/man/man3/ldap_get_option.3 0644 root root 18814 64595 1361334096 1 f none /usr/local/share/man/man3/ldap_get_values.3 0644 root root 2743 39710 1361334096 1 s none /usr/local/share/man/man3/ldap_get_values_len.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_init.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_init_fd.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_initialize.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_install_tls.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_is_ldap_url.3=ldap_url.3 1 s none /usr/local/share/man/man3/ldap_matchingrule2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_matchingrule2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_matchingrule_free.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_memalloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memcalloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memfree.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_memory.3 0644 root root 1536 60229 1361334097 1 s none /usr/local/share/man/man3/ldap_memrealloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memvfree.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_modify.3 0644 root root 4471 57592 1361334097 1 s none /usr/local/share/man/man3/ldap_modify_ext.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_modify_ext_s.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_modify_s.3=ldap_modify.3 1 f none /usr/local/share/man/man3/ldap_modrdn.3 0644 root root 2272 60405 1361334097 1 s none /usr/local/share/man/man3/ldap_modrdn2.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_modrdn2_s.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_modrdn_s.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_mods_free.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_msgfree.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_msgid.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_msgtype.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_next_attribute.3=ldap_first_attribute.3 1 s none /usr/local/share/man/man3/ldap_next_entry.3=ldap_first_entry.3 1 s none /usr/local/share/man/man3/ldap_next_message.3=ldap_first_message.3 1 s none /usr/local/share/man/man3/ldap_next_reference.3=ldap_first_reference.3 1 s none /usr/local/share/man/man3/ldap_objectclass2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_objectclass2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_objectclass_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_open.3 0644 root root 6054 768 1361334097 1 s none /usr/local/share/man/man3/ldap_parse_extended_result.3=ldap_parse_result.3 1 f none /usr/local/share/man/man3/ldap_parse_reference.3 0644 root root 2303 1767 1361334097 1 f none /usr/local/share/man/man3/ldap_parse_result.3 0644 root root 3987 21177 1361334097 1 s none /usr/local/share/man/man3/ldap_parse_sasl_bind_result.3=ldap_parse_result.3 1 f none /usr/local/share/man/man3/ldap_parse_sort_control.3 0644 root root 1635 11177 1361334097 1 f none /usr/local/share/man/man3/ldap_parse_vlv_control.3 0644 root root 2298 6686 1361334097 1 s none /usr/local/share/man/man3/ldap_perror.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap_rename.3 0644 root root 2649 35310 1361334097 1 s none /usr/local/share/man/man3/ldap_rename_s.3=ldap_rename.3 1 f none /usr/local/share/man/man3/ldap_result.3 0644 root root 4464 56640 1361334097 1 s none /usr/local/share/man/man3/ldap_result2error.3=ldap_error.3 1 s none /usr/local/share/man/man3/ldap_sasl_bind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_sasl_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_schema.3 0644 root root 8945 45702 1361334098 1 s none /usr/local/share/man/man3/ldap_scherr2str.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_search.3 0644 root root 5155 59253 1361334098 1 s none /usr/local/share/man/man3/ldap_search_ext.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_ext_s.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_s.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_st.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_set_option.3=ldap_get_option.3 1 s none /usr/local/share/man/man3/ldap_set_rebind_proc.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_set_urllist_proc.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_simple_bind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_simple_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_sort.3 0644 root root 1176 34344 1361334098 1 s none /usr/local/share/man/man3/ldap_sort_entries.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_sort_strcasecmp.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_sort_values.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_start_tls.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_start_tls_s.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_str2attributetype.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2dn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_str2matchingrule.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2objectclass.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2syntax.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_strdup.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_sync.3 0644 root root 9726 52404 1361334099 1 s none /usr/local/share/man/man3/ldap_syntax2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_syntax2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_syntax_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_tls.3 0644 root root 1647 6779 1361334099 1 s none /usr/local/share/man/man3/ldap_tls_inplace.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_unbind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_ext.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_ext_s.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_url.3 0644 root root 3049 53676 1361334099 1 s none /usr/local/share/man/man3/ldap_url_parse.3=ldap_url.3 1 s none /usr/local/share/man/man3/ldap_value_free.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_value_free_len.3=ldap_get_values.3 1 d none /usr/local/share/man/man5 0755 root root 1 f none /usr/local/share/man/man5/ldap.conf.5 0644 root root 16237 34835 1361334099 1 f none /usr/local/share/man/man5/ldif.5 0644 root root 6707 41974 1361334099 1 f none /usr/local/share/man/man5/slapd-bdb.5 0644 root root 10539 24458 1361334099 1 f none /usr/local/share/man/man5/slapd-config.5 0644 root root 66741 50136 1361334099 1 f none /usr/local/share/man/man5/slapd-dnssrv.5 0644 root root 1603 5621 1361334099 1 s none /usr/local/share/man/man5/slapd-hdb.5=slapd-bdb.5 1 f none /usr/local/share/man/man5/slapd-ldap.5 0644 root root 22398 49647 1361334099 1 f none /usr/local/share/man/man5/slapd-ldbm.5 0644 root root 789 63571 1361334099 1 f none /usr/local/share/man/man5/slapd-ldif.5 0644 root root 1592 5208 1361334099 1 f none /usr/local/share/man/man5/slapd-mdb.5 0644 root root 6808 17145 1361334099 1 f none /usr/local/share/man/man5/slapd-meta.5 0644 root root 43868 10368 1361334099 1 f none /usr/local/share/man/man5/slapd-monitor.5 0644 root root 3272 18053 1361334099 1 f none /usr/local/share/man/man5/slapd-ndb.5 0644 root root 4738 24663 1361334099 1 f none /usr/local/share/man/man5/slapd-null.5 0644 root root 1527 61325 1361334099 1 f none /usr/local/share/man/man5/slapd-passwd.5 0644 root root 1528 64690 1361334099 1 f none /usr/local/share/man/man5/slapd-perl.5 0644 root root 5112 45982 1361334099 1 f none /usr/local/share/man/man5/slapd-relay.5 0644 root root 6441 23447 1361334099 1 f none /usr/local/share/man/man5/slapd-shell.5 0644 root root 5308 58874 1361334099 1 f none /usr/local/share/man/man5/slapd-sock.5 0644 root root 6932 8136 1361334099 1 f none /usr/local/share/man/man5/slapd-sql.5 0644 root root 26128 8047 1361334099 1 f none /usr/local/share/man/man5/slapd.access.5 0644 root root 29004 44977 1361334099 1 f none /usr/local/share/man/man5/slapd.backends.5 0644 root root 4399 55960 1361334099 1 f none /usr/local/share/man/man5/slapd.conf.5 0644 root root 64924 19240 1361334099 1 f none /usr/local/share/man/man5/slapd.overlays.5 0644 root root 4381 58040 1361334100 1 f none /usr/local/share/man/man5/slapd.plugin.5 0644 root root 4310 53971 1361334100 1 f none /usr/local/share/man/man5/slapo-accesslog.5 0644 root root 13001 3842 1361334100 1 f none /usr/local/share/man/man5/slapo-auditlog.5 0644 root root 1633 10712 1361334100 1 f none /usr/local/share/man/man5/slapo-chain.5 0644 root root 5847 55219 1361334100 1 f none /usr/local/share/man/man5/slapo-collect.5 0644 root root 1729 18423 1361334100 1 f none /usr/local/share/man/man5/slapo-constraint.5 0644 root root 4555 9773 1361334100 1 f none /usr/local/share/man/man5/slapo-dds.5 0644 root root 7367 460 1361334100 1 f none /usr/local/share/man/man5/slapo-dyngroup.5 0644 root root 1403 55449 1361334100 1 f none /usr/local/share/man/man5/slapo-dynlist.5 0644 root root 6195 22645 1361334100 1 f none /usr/local/share/man/man5/slapo-memberof.5 0644 root root 3789 7035 1361334100 1 f none /usr/local/share/man/man5/slapo-pbind.5 0644 root root 1416 53804 1361334100 1 f none /usr/local/share/man/man5/slapo-pcache.5 0644 root root 12766 36727 1361334100 1 f none /usr/local/share/man/man5/slapo-ppolicy.5 0644 root root 23643 49935 1361334100 1 f none /usr/local/share/man/man5/slapo-refint.5 0644 root root 2873 59462 1361334100 1 f none /usr/local/share/man/man5/slapo-retcode.5 0644 root root 8028 7936 1361334100 1 f none /usr/local/share/man/man5/slapo-rwm.5 0644 root root 23787 46455 1361334100 1 s none /usr/local/share/man/man5/slapo-sock.5=slapd-sock.5 1 f none /usr/local/share/man/man5/slapo-sssvlv.5 0644 root root 2072 50092 1361334100 1 f none /usr/local/share/man/man5/slapo-syncprov.5 0644 root root 3161 19603 1361334100 1 f none /usr/local/share/man/man5/slapo-translucent.5 0644 root root 4669 25693 1361334100 1 f none /usr/local/share/man/man5/slapo-unique.5 0644 root root 5111 65345 1361334100 1 f none /usr/local/share/man/man5/slapo-valsort.5 0644 root root 2355 11019 1361334100 1 d none /usr/local/share/man/man8 0755 root root 1 f none /usr/local/share/man/man8/slapacl.8 0644 root root 4472 38372 1361334100 1 f none /usr/local/share/man/man8/slapadd.8 0644 root root 5514 8906 1361334100 1 f none /usr/local/share/man/man8/slapauth.8 0644 root root 3339 12026 1361334100 1 f none /usr/local/share/man/man8/slapcat.8 0644 root root 5031 32269 1361334100 1 f none /usr/local/share/man/man8/slapd.8 0644 root root 11409 9739 1361334100 1 f none /usr/local/share/man/man8/slapdn.8 0644 root root 2602 17075 1361334100 1 f none /usr/local/share/man/man8/slapindex.8 0644 root root 4206 27870 1361334100 1 f none /usr/local/share/man/man8/slappasswd.8 0644 root root 4517 46862 1361334100 1 f none /usr/local/share/man/man8/slapschema.8 0644 root root 4986 33571 1361334100 1 f none /usr/local/share/man/man8/slaptest.8 0644 root root 2768 32224 1361334100 1 d none /usr/local/var 0755 root root 1 d none /usr/local/var/openldap-data 0755 root root 1 f none /usr/local/var/openldap-data/DB_CONFIG.example 0600 root root 845 5921 1361334092 1 d none /usr/local/var/run 0755 root root 1 i checkinstall 790 2505 1361335300 1 i pkginfo 281 21957 1361335126 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100031a6d000081a40000000000000000000000015124535600000119000000b600010002ffffffffffffffff0000000800000000pkginfoPKG=openldap NAME=openldap 2.4.33 i86pc Solaris 11 VERSION=2.4.33 PSTAMP=20th February 2013 VENDOR=OpenLDAP Project EMAIL=http://www.openldap.org/ DESC=Open Lightweight Directory Access Protocol ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100031a6c000081a400000000000000000000000151245356000063ec000000b600010002ffffffffffffffff0000000700000000pkgmap: 1 20969 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 s none /usr/local/bin/ldapadd=ldapmodify 1 f none /usr/local/bin/ldapcompare 0755 root root 408932 26566 1361334090 1 f none /usr/local/bin/ldapdelete 0755 root root 409480 16285 1361334090 1 f none /usr/local/bin/ldapexop 0755 root root 410164 50318 1361334090 1 f none /usr/local/bin/ldapmodify 0755 root root 425560 59480 1361334089 1 f none /usr/local/bin/ldapmodrdn 0755 root root 409020 59508 1361334090 1 f none /usr/local/bin/ldappasswd 0755 root root 406880 13348 1361334090 1 f none /usr/local/bin/ldapsearch 0755 root root 437376 10077 1361334089 1 f none /usr/local/bin/ldapurl 0755 root root 327752 48683 1361334090 1 f none /usr/local/bin/ldapwhoami 0755 root root 406216 55886 1361334090 1 d none /usr/local/etc 0755 root root 1 d none /usr/local/etc/openldap 0755 root root 1 f none /usr/local/etc/openldap/DB_CONFIG.example 0600 root root 845 5921 1361334092 1 f none /usr/local/etc/openldap/ldap.conf 0644 root root 245 19582 1361334088 1 f none /usr/local/etc/openldap/ldap.conf.default 0644 root root 245 19582 1361334088 1 d none /usr/local/etc/openldap/schema 0755 root root 1 f none /usr/local/etc/openldap/schema/README 0444 root root 3512 41517 1361334092 1 f none /usr/local/etc/openldap/schema/collective.ldif 0444 root root 2036 36392 1361334092 1 f none /usr/local/etc/openldap/schema/collective.schema 0444 root root 6190 4876 1361334092 1 f none /usr/local/etc/openldap/schema/corba.ldif 0444 root root 1845 18222 1361334092 1 f none /usr/local/etc/openldap/schema/corba.schema 0444 root root 8063 37945 1361334092 1 f none /usr/local/etc/openldap/schema/core.ldif 0444 root root 20612 29141 1361334092 1 f none /usr/local/etc/openldap/schema/core.schema 0444 root root 20499 14003 1361334092 1 f none /usr/local/etc/openldap/schema/cosine.ldif 0444 root root 12006 64679 1361334092 1 f none /usr/local/etc/openldap/schema/cosine.schema 0444 root root 73994 59146 1361334092 1 f none /usr/local/etc/openldap/schema/duaconf.ldif 0444 root root 4842 58426 1361334092 1 f none /usr/local/etc/openldap/schema/duaconf.schema 0444 root root 10388 50184 1361334092 1 f none /usr/local/etc/openldap/schema/dyngroup.ldif 0444 root root 3330 26313 1361334092 1 f none /usr/local/etc/openldap/schema/dyngroup.schema 0444 root root 3289 20653 1361334092 1 f none /usr/local/etc/openldap/schema/inetorgperson.ldif 0444 root root 3481 11677 1361334092 1 f none /usr/local/etc/openldap/schema/inetorgperson.schema 0444 root root 6267 57717 1361334092 1 f none /usr/local/etc/openldap/schema/java.ldif 0444 root root 2979 35417 1361334092 1 f none /usr/local/etc/openldap/schema/java.schema 0444 root root 13901 9751 1361334092 1 f none /usr/local/etc/openldap/schema/misc.ldif 0444 root root 2082 35478 1361334092 1 f none /usr/local/etc/openldap/schema/misc.schema 0444 root root 2387 48315 1361334092 1 f none /usr/local/etc/openldap/schema/nis.ldif 0444 root root 6809 59402 1361334092 1 f none /usr/local/etc/openldap/schema/nis.schema 0444 root root 7640 51668 1361334092 1 f none /usr/local/etc/openldap/schema/openldap.ldif 0444 root root 3308 17979 1361334092 1 f none /usr/local/etc/openldap/schema/openldap.schema 0444 root root 1514 60919 1361334092 1 f none /usr/local/etc/openldap/schema/pmi.ldif 0444 root root 6904 702 1361334092 1 f none /usr/local/etc/openldap/schema/pmi.schema 0444 root root 20467 17051 1361334092 1 f none /usr/local/etc/openldap/schema/ppolicy.ldif 0444 root root 4032 45299 1361334092 1 f none /usr/local/etc/openldap/schema/ppolicy.schema 0444 root root 19603 51206 1361334092 1 f none /usr/local/etc/openldap/slapd.conf 0600 root root 2129 47907 1361334091 1 f none /usr/local/etc/openldap/slapd.conf.default 0600 root root 2129 47907 1361334091 1 f none /usr/local/etc/openldap/slapd.ldif 0600 root root 2614 25800 1361334092 1 f none /usr/local/etc/openldap/slapd.ldif.default 0600 root root 2614 25800 1361334092 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/lber.h 0644 root root 15311 18273 1361334087 1 f none /usr/local/include/lber_types.h 0644 root root 1468 52751 1361334087 1 f none /usr/local/include/ldap.h 0644 root root 64751 13424 1361334087 1 f none /usr/local/include/ldap_cdefs.h 0644 root root 9466 11356 1361334087 1 f none /usr/local/include/ldap_features.h 0644 root root 1814 15260 1361334087 1 f none /usr/local/include/ldap_schema.h 0644 root root 9450 14771 1361334087 1 f none /usr/local/include/ldap_utf8.h 0644 root root 3468 11187 1361334087 1 f none /usr/local/include/ldif.h 0644 root root 4674 38736 1361334087 1 f none /usr/local/include/slapi-plugin.h 0644 root root 38351 4389 1361334087 1 d none /usr/local/lib 0755 root root 1 s none /usr/local/lib/liblber-2.4.so.2=liblber-2.4.so.2.8.5 1 f none /usr/local/lib/liblber-2.4.so.2.8.5 0755 root root 76728 360 1361334087 1 f none /usr/local/lib/liblber.a 0644 root root 77136 27883 1361334087 1 f none /usr/local/lib/liblber.la 0644 root root 935 14155 1361334087 1 s none /usr/local/lib/liblber.so=liblber-2.4.so.2.8.5 1 s none /usr/local/lib/libldap-2.4.so.2=libldap-2.4.so.2.8.5 1 f none /usr/local/lib/libldap-2.4.so.2.8.5 0755 root root 470988 43522 1361334088 1 f none /usr/local/lib/libldap.a 0644 root root 511800 34463 1361334088 1 f none /usr/local/lib/libldap.la 0644 root root 1008 20731 1361334088 1 s none /usr/local/lib/libldap.so=libldap-2.4.so.2.8.5 1 s none /usr/local/lib/libldap_r-2.4.so.2=libldap_r-2.4.so.2.8.5 1 f none /usr/local/lib/libldap_r-2.4.so.2.8.5 0755 root root 521148 51203 1361334089 1 f none /usr/local/lib/libldap_r.a 0644 root root 572520 16169 1361334089 1 f none /usr/local/lib/libldap_r.la 0644 root root 1022 22194 1361334089 1 s none /usr/local/lib/libldap_r.so=libldap_r-2.4.so.2.8.5 1 d none /usr/local/libexec 0755 root root 1 f none /usr/local/libexec/slapd 0755 root root 2521088 1626 1361334090 1 d none /usr/local/sbin 0755 root root 1 s none /usr/local/sbin/slapacl=../libexec/slapd 1 s none /usr/local/sbin/slapadd=../libexec/slapd 1 s none /usr/local/sbin/slapauth=../libexec/slapd 1 s none /usr/local/sbin/slapcat=../libexec/slapd 1 s none /usr/local/sbin/slapdn=../libexec/slapd 1 s none /usr/local/sbin/slapindex=../libexec/slapd 1 s none /usr/local/sbin/slappasswd=../libexec/slapd 1 s none /usr/local/sbin/slapschema=../libexec/slapd 1 s none /usr/local/sbin/slaptest=../libexec/slapd 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 s none /usr/local/share/man/man1/ldapadd.1=ldapmodify.1 1 f none /usr/local/share/man/man1/ldapcompare.1 0644 root root 6687 41694 1361334093 1 f none /usr/local/share/man/man1/ldapdelete.1 0644 root root 6724 41360 1361334093 1 f none /usr/local/share/man/man1/ldapexop.1 0644 root root 6153 64316 1361334093 1 f none /usr/local/share/man/man1/ldapmodify.1 0644 root root 8837 12170 1361334093 1 f none /usr/local/share/man/man1/ldapmodrdn.1 0644 root root 6894 53014 1361334093 1 f none /usr/local/share/man/man1/ldappasswd.1 0644 root root 5938 41358 1361334093 1 f none /usr/local/share/man/man1/ldapsearch.1 0644 root root 14246 30975 1361334093 1 f none /usr/local/share/man/man1/ldapurl.1 0644 root root 4091 11113 1361334093 1 f none /usr/local/share/man/man1/ldapwhoami.1 0644 root root 4978 23023 1361334093 1 d none /usr/local/share/man/man3 0755 root root 1 s none /usr/local/share/man/man3/ber_alloc_t.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_bvarray_add.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvarray_free.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvdup.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvecadd.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvecfree.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvfree.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvstr.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_bvstrdup.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_dupbv.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_first_element.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_flush.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_free.3=lber-types.3 1 s none /usr/local/share/man/man3/ber_get_bitstring.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_boolean.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_enum.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_int.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_next.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_null.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_stringa.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_get_stringb.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_next_element.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_peek_tag.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_printf.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_enum.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_int.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_null.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_ostring.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_seq.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_set.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_put_string.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_scanf.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_skip_tag.3=lber-decode.3 1 s none /usr/local/share/man/man3/ber_start_set.3=lber-encode.3 1 s none /usr/local/share/man/man3/ber_str2bv.3=lber-types.3 1 f none /usr/local/share/man/man3/lber-decode.3 0644 root root 12613 29920 1361334093 1 f none /usr/local/share/man/man3/lber-encode.3 0644 root root 9241 47646 1361334093 1 f none /usr/local/share/man/man3/lber-memory.3 0644 root root 1516 58102 1361334094 1 f none /usr/local/share/man/man3/lber-sockbuf.3 0644 root root 5805 32452 1361334094 1 f none /usr/local/share/man/man3/lber-types.3 0644 root root 6485 33472 1361334094 1 s none /usr/local/share/man/man3/ld_errno.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap.3 0644 root root 8960 901 1361334094 1 f none /usr/local/share/man/man3/ldap_abandon.3 0644 root root 2269 61618 1361334094 1 s none /usr/local/share/man/man3/ldap_abandon_ext.3=ldap_abandon.3 1 f none /usr/local/share/man/man3/ldap_add.3 0644 root root 2634 27638 1361334094 1 s none /usr/local/share/man/man3/ldap_add_ext.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_add_ext_s.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_add_s.3=ldap_add.3 1 s none /usr/local/share/man/man3/ldap_attributetype2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_attributetype2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_attributetype_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_bind.3 0644 root root 11820 42477 1361334094 1 s none /usr/local/share/man/man3/ldap_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_compare.3 0644 root root 2707 36349 1361334095 1 s none /usr/local/share/man/man3/ldap_compare_ext.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_compare_ext_s.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_compare_s.3=ldap_compare.3 1 s none /usr/local/share/man/man3/ldap_control_create.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_dup.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_find.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_control_free.3=ldap_controls.3 1 f none /usr/local/share/man/man3/ldap_controls.3 0644 root root 2957 59310 1361334095 1 s none /usr/local/share/man/man3/ldap_controls_dup.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_controls_free.3=ldap_controls.3 1 s none /usr/local/share/man/man3/ldap_count_entries.3=ldap_first_entry.3 1 s none /usr/local/share/man/man3/ldap_count_messages.3=ldap_first_message.3 1 s none /usr/local/share/man/man3/ldap_count_references.3=ldap_first_reference.3 1 s none /usr/local/share/man/man3/ldap_count_values.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_count_values_len.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_dcedn2dn.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_delete.3 0644 root root 2503 18122 1361334095 1 s none /usr/local/share/man/man3/ldap_delete_ext.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_delete_ext_s.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_delete_s.3=ldap_delete.3 1 s none /usr/local/share/man/man3/ldap_destroy.3=ldap_dup.3 1 s none /usr/local/share/man/man3/ldap_dn2ad_canonical.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2dcedn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2str.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dn2ufn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_dnfree.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_dup.3 0644 root root 3581 50472 1361334095 1 s none /usr/local/share/man/man3/ldap_err2string.3=ldap_error.3 1 s none /usr/local/share/man/man3/ldap_errlist.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap_error.3 0644 root root 6610 34865 1361334095 1 s none /usr/local/share/man/man3/ldap_explode_dn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_explode_rdn.3=ldap_get_dn.3 1 f none /usr/local/share/man/man3/ldap_extended_operation.3 0644 root root 2486 19980 1361334096 1 s none /usr/local/share/man/man3/ldap_extended_operation_s.3=ldap_extended_operation.3 1 f none /usr/local/share/man/man3/ldap_first_attribute.3 0644 root root 2310 2736 1361334096 1 f none /usr/local/share/man/man3/ldap_first_entry.3 0644 root root 2362 4034 1361334096 1 f none /usr/local/share/man/man3/ldap_first_message.3 0644 root root 2591 24959 1361334096 1 f none /usr/local/share/man/man3/ldap_first_reference.3 0644 root root 2301 1333 1361334096 1 s none /usr/local/share/man/man3/ldap_free_urldesc.3=ldap_url.3 1 f none /usr/local/share/man/man3/ldap_get_dn.3 0644 root root 6713 41408 1361334096 1 f none /usr/local/share/man/man3/ldap_get_option.3 0644 root root 18814 64595 1361334096 1 f none /usr/local/share/man/man3/ldap_get_values.3 0644 root root 2743 39710 1361334096 1 s none /usr/local/share/man/man3/ldap_get_values_len.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_init.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_init_fd.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_initialize.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_install_tls.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_is_ldap_url.3=ldap_url.3 1 s none /usr/local/share/man/man3/ldap_matchingrule2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_matchingrule2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_matchingrule_free.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_memalloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memcalloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memfree.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_memory.3 0644 root root 1536 60229 1361334097 1 s none /usr/local/share/man/man3/ldap_memrealloc.3=ldap_memory.3 1 s none /usr/local/share/man/man3/ldap_memvfree.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_modify.3 0644 root root 4471 57592 1361334097 1 s none /usr/local/share/man/man3/ldap_modify_ext.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_modify_ext_s.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_modify_s.3=ldap_modify.3 1 f none /usr/local/share/man/man3/ldap_modrdn.3 0644 root root 2272 60405 1361334097 1 s none /usr/local/share/man/man3/ldap_modrdn2.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_modrdn2_s.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_modrdn_s.3=ldap_modrdn.3 1 s none /usr/local/share/man/man3/ldap_mods_free.3=ldap_modify.3 1 s none /usr/local/share/man/man3/ldap_msgfree.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_msgid.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_msgtype.3=ldap_result.3 1 s none /usr/local/share/man/man3/ldap_next_attribute.3=ldap_first_attribute.3 1 s none /usr/local/share/man/man3/ldap_next_entry.3=ldap_first_entry.3 1 s none /usr/local/share/man/man3/ldap_next_message.3=ldap_first_message.3 1 s none /usr/local/share/man/man3/ldap_next_reference.3=ldap_first_reference.3 1 s none /usr/local/share/man/man3/ldap_objectclass2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_objectclass2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_objectclass_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_open.3 0644 root root 6054 768 1361334097 1 s none /usr/local/share/man/man3/ldap_parse_extended_result.3=ldap_parse_result.3 1 f none /usr/local/share/man/man3/ldap_parse_reference.3 0644 root root 2303 1767 1361334097 1 f none /usr/local/share/man/man3/ldap_parse_result.3 0644 root root 3987 21177 1361334097 1 s none /usr/local/share/man/man3/ldap_parse_sasl_bind_result.3=ldap_parse_result.3 1 f none /usr/local/share/man/man3/ldap_parse_sort_control.3 0644 root root 1635 11177 1361334097 1 f none /usr/local/share/man/man3/ldap_parse_vlv_control.3 0644 root root 2298 6686 1361334097 1 s none /usr/local/share/man/man3/ldap_perror.3=ldap_error.3 1 f none /usr/local/share/man/man3/ldap_rename.3 0644 root root 2649 35310 1361334097 1 s none /usr/local/share/man/man3/ldap_rename_s.3=ldap_rename.3 1 f none /usr/local/share/man/man3/ldap_result.3 0644 root root 4464 56640 1361334097 1 s none /usr/local/share/man/man3/ldap_result2error.3=ldap_error.3 1 s none /usr/local/share/man/man3/ldap_sasl_bind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_sasl_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_schema.3 0644 root root 8945 45702 1361334098 1 s none /usr/local/share/man/man3/ldap_scherr2str.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_search.3 0644 root root 5155 59253 1361334098 1 s none /usr/local/share/man/man3/ldap_search_ext.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_ext_s.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_s.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_search_st.3=ldap_search.3 1 s none /usr/local/share/man/man3/ldap_set_option.3=ldap_get_option.3 1 s none /usr/local/share/man/man3/ldap_set_rebind_proc.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_set_urllist_proc.3=ldap_open.3 1 s none /usr/local/share/man/man3/ldap_simple_bind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_simple_bind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_sort.3 0644 root root 1176 34344 1361334098 1 s none /usr/local/share/man/man3/ldap_sort_entries.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_sort_strcasecmp.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_sort_values.3=ldap_sort.3 1 s none /usr/local/share/man/man3/ldap_start_tls.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_start_tls_s.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_str2attributetype.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2dn.3=ldap_get_dn.3 1 s none /usr/local/share/man/man3/ldap_str2matchingrule.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2objectclass.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_str2syntax.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_strdup.3=ldap_memory.3 1 f none /usr/local/share/man/man3/ldap_sync.3 0644 root root 9726 52404 1361334099 1 s none /usr/local/share/man/man3/ldap_syntax2name.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_syntax2str.3=ldap_schema.3 1 s none /usr/local/share/man/man3/ldap_syntax_free.3=ldap_schema.3 1 f none /usr/local/share/man/man3/ldap_tls.3 0644 root root 1647 6779 1361334099 1 s none /usr/local/share/man/man3/ldap_tls_inplace.3=ldap_tls.3 1 s none /usr/local/share/man/man3/ldap_unbind.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_ext.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_ext_s.3=ldap_bind.3 1 s none /usr/local/share/man/man3/ldap_unbind_s.3=ldap_bind.3 1 f none /usr/local/share/man/man3/ldap_url.3 0644 root root 3049 53676 1361334099 1 s none /usr/local/share/man/man3/ldap_url_parse.3=ldap_url.3 1 s none /usr/local/share/man/man3/ldap_value_free.3=ldap_get_values.3 1 s none /usr/local/share/man/man3/ldap_value_free_len.3=ldap_get_values.3 1 d none /usr/local/share/man/man5 0755 root root 1 f none /usr/local/share/man/man5/ldap.conf.5 0644 root root 16237 34835 1361334099 1 f none /usr/local/share/man/man5/ldif.5 0644 root root 6707 41974 1361334099 1 f none /usr/local/share/man/man5/slapd-bdb.5 0644 root root 10539 24458 1361334099 1 f none /usr/local/share/man/man5/slapd-config.5 0644 root root 66741 50136 1361334099 1 f none /usr/local/share/man/man5/slapd-dnssrv.5 0644 root root 1603 5621 1361334099 1 s none /usr/local/share/man/man5/slapd-hdb.5=slapd-bdb.5 1 f none /usr/local/share/man/man5/slapd-ldap.5 0644 root root 22398 49647 1361334099 1 f none /usr/local/share/man/man5/slapd-ldbm.5 0644 root root 789 63571 1361334099 1 f none /usr/local/share/man/man5/slapd-ldif.5 0644 root root 1592 5208 1361334099 1 f none /usr/local/share/man/man5/slapd-mdb.5 0644 root root 6808 17145 1361334099 1 f none /usr/local/share/man/man5/slapd-meta.5 0644 root root 43868 10368 1361334099 1 f none /usr/local/share/man/man5/slapd-monitor.5 0644 root root 3272 18053 1361334099 1 f none /usr/local/share/man/man5/slapd-ndb.5 0644 root root 4738 24663 1361334099 1 f none /usr/local/share/man/man5/slapd-null.5 0644 root root 1527 61325 1361334099 1 f none /usr/local/share/man/man5/slapd-passwd.5 0644 root root 1528 64690 1361334099 1 f none /usr/local/share/man/man5/slapd-perl.5 0644 root root 5112 45982 1361334099 1 f none /usr/local/share/man/man5/slapd-relay.5 0644 root root 6441 23447 1361334099 1 f none /usr/local/share/man/man5/slapd-shell.5 0644 root root 5308 58874 1361334099 1 f none /usr/local/share/man/man5/slapd-sock.5 0644 root root 6932 8136 1361334099 1 f none /usr/local/share/man/man5/slapd-sql.5 0644 root root 26128 8047 1361334099 1 f none /usr/local/share/man/man5/slapd.access.5 0644 root root 29004 44977 1361334099 1 f none /usr/local/share/man/man5/slapd.backends.5 0644 root root 4399 55960 1361334099 1 f none /usr/local/share/man/man5/slapd.conf.5 0644 root root 64924 19240 1361334099 1 f none /usr/local/share/man/man5/slapd.overlays.5 0644 root root 4381 58040 1361334100 1 f none /usr/local/share/man/man5/slapd.plugin.5 0644 root root 4310 53971 1361334100 1 f none /usr/local/share/man/man5/slapo-accesslog.5 0644 root root 13001 3842 1361334100 1 f none /usr/local/share/man/man5/slapo-auditlog.5 0644 root root 1633 10712 1361334100 1 f none /usr/local/share/man/man5/slapo-chain.5 0644 root root 5847 55219 1361334100 1 f none /usr/local/share/man/man5/slapo-collect.5 0644 root root 1729 18423 1361334100 1 f none /usr/local/share/man/man5/slapo-constraint.5 0644 root root 4555 9773 1361334100 1 f none /usr/local/share/man/man5/slapo-dds.5 0644 root root 7367 460 1361334100 1 f none /usr/local/share/man/man5/slapo-dyngroup.5 0644 root root 1403 55449 1361334100 1 f none /usr/local/share/man/man5/slapo-dynlist.5 0644 root root 6195 22645 1361334100 1 f none /usr/local/share/man/man5/slapo-memberof.5 0644 root root 3789 7035 1361334100 1 f none /usr/local/share/man/man5/slapo-pbind.5 0644 root root 1416 53804 1361334100 1 f none /usr/local/share/man/man5/slapo-pcache.5 0644 root root 12766 36727 1361334100 1 f none /usr/local/share/man/man5/slapo-ppolicy.5 0644 root root 23643 49935 1361334100 1 f none /usr/local/share/man/man5/slapo-refint.5 0644 root root 2873 59462 1361334100 1 f none /usr/local/share/man/man5/slapo-retcode.5 0644 root root 8028 7936 1361334100 1 f none /usr/local/share/man/man5/slapo-rwm.5 0644 root root 23787 46455 1361334100 1 s none /usr/local/share/man/man5/slapo-sock.5=slapd-sock.5 1 f none /usr/local/share/man/man5/slapo-sssvlv.5 0644 root root 2072 50092 1361334100 1 f none /usr/local/share/man/man5/slapo-syncprov.5 0644 root root 3161 19603 1361334100 1 f none /usr/local/share/man/man5/slapo-translucent.5 0644 root root 4669 25693 1361334100 1 f none /usr/local/share/man/man5/slapo-unique.5 0644 root root 5111 65345 1361334100 1 f none /usr/local/share/man/man5/slapo-valsort.5 0644 root root 2355 11019 1361334100 1 d none /usr/local/share/man/man8 0755 root root 1 f none /usr/local/share/man/man8/slapacl.8 0644 root root 4472 38372 1361334100 1 f none /usr/local/share/man/man8/slapadd.8 0644 root root 5514 8906 1361334100 1 f none /usr/local/share/man/man8/slapauth.8 0644 root root 3339 12026 1361334100 1 f none /usr/local/share/man/man8/slapcat.8 0644 root root 5031 32269 1361334100 1 f none /usr/local/share/man/man8/slapd.8 0644 root root 11409 9739 1361334100 1 f none /usr/local/share/man/man8/slapdn.8 0644 root root 2602 17075 1361334100 1 f none /usr/local/share/man/man8/slapindex.8 0644 root root 4206 27870 1361334100 1 f none /usr/local/share/man/man8/slappasswd.8 0644 root root 4517 46862 1361334100 1 f none /usr/local/share/man/man8/slapschema.8 0644 root root 4986 33571 1361334100 1 f none /usr/local/share/man/man8/slaptest.8 0644 root root 2768 32224 1361334100 1 d none /usr/local/var 0755 root root 1 d none /usr/local/var/openldap-data 0755 root root 1 f none /usr/local/var/openldap-data/DB_CONFIG.example 0600 root root 845 5921 1361334092 1 d none /usr/local/var/run 0755 root root 1 i checkinstall 790 2505 1361335300 1 i pkginfo 281 21957 1361335126 07070100031b24000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000000800000000install07070100031b25000081ed0000000000000000000000015124540400000316000000b600010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.11" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 07070100031a6e000041ed0000000000000000000000035124535600000000000000b600010002ffffffffffffffff0000000500000000root07070100031a6f000041ed0000000000000000000000035124535600000000000000b600010002ffffffffffffffff0000000900000000root/usr07070100031a70000041ed0000000000000000000000095124535600000000000000b600010002ffffffffffffffff0000000f00000000root/usr/local07070100031b21000041ed0000000000000000000000035124535600000000000000b600010002ffffffffffffffff0000001300000000root/usr/local/var07070100031b22000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000002100000000root/usr/local/var/openldap-data07070100031b23000081a400000000000000000000000151244f4c0000034d000000b600010002ffffffffffffffff0000003300000000root/usr/local/var/openldap-data/DB_CONFIG.example# $OpenLDAP$ # Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. # # See the Oracle Berkeley DB documentation # # for detail description of DB_CONFIG syntax and semantics. # # Hints can also be found in the OpenLDAP Software FAQ # # in particular: # # Note: most DB_CONFIG settings will take effect only upon rebuilding # the DB environment. # one 0.25 GB cache set_cachesize 0 268435456 1 # Data Directory #set_data_dir db # Transaction Log settings set_lg_regionmax 262144 set_lg_bsize 2097152 #set_lg_dir logs # Note: special DB_CONFIG flags are no longer needed for "quick" # slapadd(8) or slapindex(8) access (see their -q option). 07070100031aa0000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000001700000000root/usr/local/include07070100031aa4000081a400000000000000000000000151244f47000024fa000000b600010002ffffffffffffffff0000002400000000root/usr/local/include/ldap_cdefs.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* LDAP C Defines */ #ifndef _LDAP_CDEFS_H #define _LDAP_CDEFS_H #if defined(__cplusplus) || defined(c_plusplus) # define LDAP_BEGIN_DECL extern "C" { # define LDAP_END_DECL } #else # define LDAP_BEGIN_DECL /* begin declarations */ # define LDAP_END_DECL /* end declarations */ #endif #if !defined(LDAP_NO_PROTOTYPES) && ( defined(LDAP_NEEDS_PROTOTYPES) || \ defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) ) /* ANSI C or C++ */ # define LDAP_P(protos) protos # define LDAP_CONCAT1(x,y) x ## y # define LDAP_CONCAT(x,y) LDAP_CONCAT1(x,y) # define LDAP_STRING(x) #x /* stringify without expanding x */ # define LDAP_XSTRING(x) LDAP_STRING(x) /* expand x, then stringify */ #ifndef LDAP_CONST # define LDAP_CONST const #endif #else /* no prototypes */ /* traditional C */ # define LDAP_P(protos) () # define LDAP_CONCAT(x,y) x/**/y # define LDAP_STRING(x) "x" #ifndef LDAP_CONST # define LDAP_CONST /* no const */ #endif #endif /* no prototypes */ #if (__GNUC__) * 1000 + (__GNUC_MINOR__) >= 2006 # define LDAP_GCCATTR(attrs) __attribute__(attrs) #else # define LDAP_GCCATTR(attrs) #endif /* * Support for Windows DLLs. * * When external source code includes header files for dynamic libraries, * the external source code is "importing" DLL symbols into its resulting * object code. On Windows, symbols imported from DLLs must be explicitly * indicated in header files with the __declspec(dllimport) directive. * This is not totally necessary for functions because the compiler * (gcc or MSVC) will generate stubs when this directive is absent. * However, this is required for imported variables. * * The LDAP libraries, i.e. liblber and libldap, can be built as * static or shared, based on configuration. Just about all other source * code in OpenLDAP use these libraries. If the LDAP libraries * are configured as shared, 'configure' defines the LDAP_LIBS_DYNAMIC * macro. When other source files include LDAP library headers, the * LDAP library symbols will automatically be marked as imported. When * the actual LDAP libraries are being built, the symbols will not * be marked as imported because the LBER_LIBRARY or LDAP_LIBRARY macros * will be respectively defined. * * Any project outside of OpenLDAP with source code wanting to use * LDAP dynamic libraries should explicitly define LDAP_LIBS_DYNAMIC. * This will ensure that external source code appropriately marks symbols * that will be imported. * * The slapd executable, itself, can be used as a dynamic library. * For example, if a backend module is compiled as shared, it will * import symbols from slapd. When this happens, the slapd symbols * must be marked as imported in header files that the backend module * includes. Remember that slapd links with various static libraries. * If the LDAP libraries were configured as static, their object * code is also part of the monolithic slapd executable. Thus, when * a backend module imports symbols from slapd, it imports symbols from * all of the static libraries in slapd as well. Thus, the SLAP_IMPORT * macro, when defined, will appropriately mark symbols as imported. * This macro should be used by shared backend modules as well as any * other external source code that imports symbols from the slapd * executable as if it were a DLL. * * Note that we don't actually have to worry about using the * __declspec(dllexport) directive anywhere. This is because both * MSVC and Mingw provide alternate (more effective) methods for exporting * symbols out of binaries, i.e. the use of a DEF file. * * NOTE ABOUT BACKENDS: Backends can be configured as static or dynamic. * When a backend is configured as dynamic, slapd will load the backend * explicitly and populate function pointer structures by calling * the backend's well-known initialization function. Because of this * procedure, slapd never implicitly imports symbols from dynamic backends. * This makes it unnecessary to tag various backend functions with the * __declspec(dllimport) directive. This is because neither slapd nor * any other external binary should ever be implicitly loading a backend * dynamic module. * * Backends are supposed to be self-contained. However, it appears that * back-meta DOES implicitly import symbols from back-ldap. This means * that the __declspec(dllimport) directive should be marked on back-ldap * functions (in its header files) if and only if we're compiling for * windows AND back-ldap has been configured as dynamic AND back-meta * is the client of back-ldap. When client is slapd, there is no effect * since slapd does not implicitly import symbols. * * TODO(?): Currently, back-meta nor back-ldap is supported for Mingw32. * Thus, there's no need to worry about this right now. This is something that * may or may not have to be addressed in the future. */ /* LBER library */ #if defined(_WIN32) && \ ((defined(LDAP_LIBS_DYNAMIC) && !defined(LBER_LIBRARY)) || \ (!defined(LDAP_LIBS_DYNAMIC) && defined(SLAPD_IMPORT))) # define LBER_F(type) extern __declspec(dllimport) type # define LBER_V(type) extern __declspec(dllimport) type #else # define LBER_F(type) extern type # define LBER_V(type) extern type #endif /* LDAP library */ #if defined(_WIN32) && \ ((defined(LDAP_LIBS_DYNAMIC) && !defined(LDAP_LIBRARY)) || \ (!defined(LDAP_LIBS_DYNAMIC) && defined(SLAPD_IMPORT))) # define LDAP_F(type) extern __declspec(dllimport) type # define LDAP_V(type) extern __declspec(dllimport) type #else # define LDAP_F(type) extern type # define LDAP_V(type) extern type #endif /* AVL library */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_AVL_F(type) extern __declspec(dllimport) type # define LDAP_AVL_V(type) extern __declspec(dllimport) type #else # define LDAP_AVL_F(type) extern type # define LDAP_AVL_V(type) extern type #endif /* LDIF library */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_LDIF_F(type) extern __declspec(dllimport) type # define LDAP_LDIF_V(type) extern __declspec(dllimport) type #else # define LDAP_LDIF_F(type) extern type # define LDAP_LDIF_V(type) extern type #endif /* LUNICODE library */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_LUNICODE_F(type) extern __declspec(dllimport) type # define LDAP_LUNICODE_V(type) extern __declspec(dllimport) type #else # define LDAP_LUNICODE_F(type) extern type # define LDAP_LUNICODE_V(type) extern type #endif /* LUTIL library */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_LUTIL_F(type) extern __declspec(dllimport) type # define LDAP_LUTIL_V(type) extern __declspec(dllimport) type #else # define LDAP_LUTIL_F(type) extern type # define LDAP_LUTIL_V(type) extern type #endif /* REWRITE library */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_REWRITE_F(type) extern __declspec(dllimport) type # define LDAP_REWRITE_V(type) extern __declspec(dllimport) type #else # define LDAP_REWRITE_F(type) extern type # define LDAP_REWRITE_V(type) extern type #endif /* SLAPD (as a dynamic library exporting symbols) */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_SLAPD_F(type) extern __declspec(dllimport) type # define LDAP_SLAPD_V(type) extern __declspec(dllimport) type #else # define LDAP_SLAPD_F(type) extern type # define LDAP_SLAPD_V(type) extern type #endif /* SLAPD (as a dynamic library exporting symbols) */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define LDAP_SLAPI_F(type) extern __declspec(dllimport) type # define LDAP_SLAPI_V(type) extern __declspec(dllimport) type #else # define LDAP_SLAPI_F(type) extern type # define LDAP_SLAPI_V(type) extern type #endif /* SLAPD (as a dynamic library exporting symbols) */ #if defined(_WIN32) && defined(SLAPD_IMPORT) # define SLAPI_F(type) extern __declspec(dllimport) type # define SLAPI_V(type) extern __declspec(dllimport) type #else # define SLAPI_F(type) extern type # define SLAPI_V(type) extern type #endif /* * C library. Mingw32 links with the dynamic C run-time library by default, * so the explicit definition of CSTATIC will keep dllimport from * being defined, if desired. * * MSVC defines the _DLL macro when the compiler is invoked with /MD or /MDd, * which means the resulting object code will be linked with the dynamic * C run-time library. * * Technically, it shouldn't be necessary to redefine any functions that * the headers for the C library should already contain. Nevertheless, this * is here as a safe-guard. * * TODO: Determine if these macros ever get expanded for Windows. If not, * the declspec expansion can probably be removed. */ #if (defined(__MINGW32__) && !defined(CSTATIC)) || \ (defined(_MSC_VER) && defined(_DLL)) # define LDAP_LIBC_F(type) extern __declspec(dllimport) type # define LDAP_LIBC_V(type) extern __declspec(dllimport) type #else # define LDAP_LIBC_F(type) extern type # define LDAP_LIBC_V(type) extern type #endif #endif /* _LDAP_CDEFS_H */ 07070100031aa6000081a400000000000000000000000151244f47000024ea000000b600010002ffffffffffffffff0000002500000000root/usr/local/include/ldap_schema.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* ldap-schema.h - Header for basic schema handling functions that can be * used by both clients and servers. * these routines should be renamed ldap_x_... */ #ifndef _LDAP_SCHEMA_H #define _LDAP_SCHEMA_H 1 #include LDAP_BEGIN_DECL /* Codes for parsing errors */ #define LDAP_SCHERR_OUTOFMEM 1 #define LDAP_SCHERR_UNEXPTOKEN 2 #define LDAP_SCHERR_NOLEFTPAREN 3 #define LDAP_SCHERR_NORIGHTPAREN 4 #define LDAP_SCHERR_NODIGIT 5 #define LDAP_SCHERR_BADNAME 6 #define LDAP_SCHERR_BADDESC 7 #define LDAP_SCHERR_BADSUP 8 #define LDAP_SCHERR_DUPOPT 9 #define LDAP_SCHERR_EMPTY 10 #define LDAP_SCHERR_MISSING 11 #define LDAP_SCHERR_OUT_OF_ORDER 12 typedef struct ldap_schema_extension_item { char *lsei_name; char **lsei_values; } LDAPSchemaExtensionItem; typedef struct ldap_syntax { char *syn_oid; /* REQUIRED */ char **syn_names; /* OPTIONAL */ char *syn_desc; /* OPTIONAL */ LDAPSchemaExtensionItem **syn_extensions; /* OPTIONAL */ } LDAPSyntax; typedef struct ldap_matchingrule { char *mr_oid; /* REQUIRED */ char **mr_names; /* OPTIONAL */ char *mr_desc; /* OPTIONAL */ int mr_obsolete; /* OPTIONAL */ char *mr_syntax_oid; /* REQUIRED */ LDAPSchemaExtensionItem **mr_extensions; /* OPTIONAL */ } LDAPMatchingRule; typedef struct ldap_matchingruleuse { char *mru_oid; /* REQUIRED */ char **mru_names; /* OPTIONAL */ char *mru_desc; /* OPTIONAL */ int mru_obsolete; /* OPTIONAL */ char **mru_applies_oids; /* REQUIRED */ LDAPSchemaExtensionItem **mru_extensions; /* OPTIONAL */ } LDAPMatchingRuleUse; typedef struct ldap_attributetype { char *at_oid; /* REQUIRED */ char **at_names; /* OPTIONAL */ char *at_desc; /* OPTIONAL */ int at_obsolete; /* 0=no, 1=yes */ char *at_sup_oid; /* OPTIONAL */ char *at_equality_oid; /* OPTIONAL */ char *at_ordering_oid; /* OPTIONAL */ char *at_substr_oid; /* OPTIONAL */ char *at_syntax_oid; /* OPTIONAL */ int at_syntax_len; /* OPTIONAL */ int at_single_value; /* 0=no, 1=yes */ int at_collective; /* 0=no, 1=yes */ int at_no_user_mod; /* 0=no, 1=yes */ int at_usage; /* 0=userApplications, 1=directoryOperation, 2=distributedOperation, 3=dSAOperation */ LDAPSchemaExtensionItem **at_extensions; /* OPTIONAL */ } LDAPAttributeType; typedef struct ldap_objectclass { char *oc_oid; /* REQUIRED */ char **oc_names; /* OPTIONAL */ char *oc_desc; /* OPTIONAL */ int oc_obsolete; /* 0=no, 1=yes */ char **oc_sup_oids; /* OPTIONAL */ int oc_kind; /* 0=ABSTRACT, 1=STRUCTURAL, 2=AUXILIARY */ char **oc_at_oids_must; /* OPTIONAL */ char **oc_at_oids_may; /* OPTIONAL */ LDAPSchemaExtensionItem **oc_extensions; /* OPTIONAL */ } LDAPObjectClass; typedef struct ldap_contentrule { char *cr_oid; /* REQUIRED */ char **cr_names; /* OPTIONAL */ char *cr_desc; /* OPTIONAL */ char **cr_sup_oids; /* OPTIONAL */ int cr_obsolete; /* 0=no, 1=yes */ char **cr_oc_oids_aux; /* OPTIONAL */ char **cr_at_oids_must; /* OPTIONAL */ char **cr_at_oids_may; /* OPTIONAL */ char **cr_at_oids_not; /* OPTIONAL */ LDAPSchemaExtensionItem **cr_extensions; /* OPTIONAL */ } LDAPContentRule; typedef struct ldap_nameform { char *nf_oid; /* REQUIRED */ char **nf_names; /* OPTIONAL */ char *nf_desc; /* OPTIONAL */ int nf_obsolete; /* 0=no, 1=yes */ char *nf_objectclass; /* REQUIRED */ char **nf_at_oids_must; /* REQUIRED */ char **nf_at_oids_may; /* OPTIONAL */ LDAPSchemaExtensionItem **nf_extensions; /* OPTIONAL */ } LDAPNameForm; typedef struct ldap_structurerule { int sr_ruleid; /* REQUIRED */ char **sr_names; /* OPTIONAL */ char *sr_desc; /* OPTIONAL */ int sr_obsolete; /* 0=no, 1=yes */ char *sr_nameform; /* REQUIRED */ int sr_nsup_ruleids;/* number of sr_sup_ruleids */ int *sr_sup_ruleids;/* OPTIONAL */ LDAPSchemaExtensionItem **sr_extensions; /* OPTIONAL */ } LDAPStructureRule; /* * Misc macros */ #define LDAP_SCHEMA_NO 0 #define LDAP_SCHEMA_YES 1 #define LDAP_SCHEMA_USER_APPLICATIONS 0 #define LDAP_SCHEMA_DIRECTORY_OPERATION 1 #define LDAP_SCHEMA_DISTRIBUTED_OPERATION 2 #define LDAP_SCHEMA_DSA_OPERATION 3 #define LDAP_SCHEMA_ABSTRACT 0 #define LDAP_SCHEMA_STRUCTURAL 1 #define LDAP_SCHEMA_AUXILIARY 2 /* * Flags that control how liberal the parsing routines are. */ #define LDAP_SCHEMA_ALLOW_NONE 0x00U /* Strict parsing */ #define LDAP_SCHEMA_ALLOW_NO_OID 0x01U /* Allow missing oid */ #define LDAP_SCHEMA_ALLOW_QUOTED 0x02U /* Allow bogus extra quotes */ #define LDAP_SCHEMA_ALLOW_DESCR 0x04U /* Allow descr instead of OID */ #define LDAP_SCHEMA_ALLOW_DESCR_PREFIX 0x08U /* Allow descr as OID prefix */ #define LDAP_SCHEMA_ALLOW_OID_MACRO 0x10U /* Allow OID macros in slapd */ #define LDAP_SCHEMA_ALLOW_OUT_OF_ORDER_FIELDS 0x20U /* Allow fields in most any order */ #define LDAP_SCHEMA_ALLOW_ALL 0x3fU /* Be very liberal in parsing */ #define LDAP_SCHEMA_SKIP 0x80U /* Don't malloc any result */ LDAP_F( LDAP_CONST char * ) ldap_syntax2name LDAP_P(( LDAPSyntax * syn )); LDAP_F( LDAP_CONST char * ) ldap_matchingrule2name LDAP_P(( LDAPMatchingRule * mr )); LDAP_F( LDAP_CONST char * ) ldap_matchingruleuse2name LDAP_P(( LDAPMatchingRuleUse * mru )); LDAP_F( LDAP_CONST char * ) ldap_attributetype2name LDAP_P(( LDAPAttributeType * at )); LDAP_F( LDAP_CONST char * ) ldap_objectclass2name LDAP_P(( LDAPObjectClass * oc )); LDAP_F( LDAP_CONST char * ) ldap_contentrule2name LDAP_P(( LDAPContentRule * cr )); LDAP_F( LDAP_CONST char * ) ldap_nameform2name LDAP_P(( LDAPNameForm * nf )); LDAP_F( LDAP_CONST char * ) ldap_structurerule2name LDAP_P(( LDAPStructureRule * sr )); LDAP_F( void ) ldap_syntax_free LDAP_P(( LDAPSyntax * syn )); LDAP_F( void ) ldap_matchingrule_free LDAP_P(( LDAPMatchingRule * mr )); LDAP_F( void ) ldap_matchingruleuse_free LDAP_P(( LDAPMatchingRuleUse * mr )); LDAP_F( void ) ldap_attributetype_free LDAP_P(( LDAPAttributeType * at )); LDAP_F( void ) ldap_objectclass_free LDAP_P(( LDAPObjectClass * oc )); LDAP_F( void ) ldap_contentrule_free LDAP_P(( LDAPContentRule * cr )); LDAP_F( void ) ldap_nameform_free LDAP_P(( LDAPNameForm * nf )); LDAP_F( void ) ldap_structurerule_free LDAP_P(( LDAPStructureRule * sr )); LDAP_F( LDAPStructureRule * ) ldap_str2structurerule LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPNameForm * ) ldap_str2nameform LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPContentRule * ) ldap_str2contentrule LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPObjectClass * ) ldap_str2objectclass LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPAttributeType * ) ldap_str2attributetype LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPSyntax * ) ldap_str2syntax LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPMatchingRule * ) ldap_str2matchingrule LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( LDAPMatchingRuleUse * ) ldap_str2matchingruleuse LDAP_P(( LDAP_CONST char * s, int * code, LDAP_CONST char ** errp, LDAP_CONST unsigned flags )); LDAP_F( char * ) ldap_structurerule2str LDAP_P(( LDAPStructureRule * sr )); LDAP_F( struct berval * ) ldap_structurerule2bv LDAP_P(( LDAPStructureRule * sr, struct berval *bv )); LDAP_F( char * ) ldap_nameform2str LDAP_P(( LDAPNameForm * nf )); LDAP_F( struct berval * ) ldap_nameform2bv LDAP_P(( LDAPNameForm * nf, struct berval *bv )); LDAP_F( char * ) ldap_contentrule2str LDAP_P(( LDAPContentRule * cr )); LDAP_F( struct berval * ) ldap_contentrule2bv LDAP_P(( LDAPContentRule * cr, struct berval *bv )); LDAP_F( char * ) ldap_objectclass2str LDAP_P(( LDAPObjectClass * oc )); LDAP_F( struct berval * ) ldap_objectclass2bv LDAP_P(( LDAPObjectClass * oc, struct berval *bv )); LDAP_F( char * ) ldap_attributetype2str LDAP_P(( LDAPAttributeType * at )); LDAP_F( struct berval * ) ldap_attributetype2bv LDAP_P(( LDAPAttributeType * at, struct berval *bv )); LDAP_F( char * ) ldap_syntax2str LDAP_P(( LDAPSyntax * syn )); LDAP_F( struct berval * ) ldap_syntax2bv LDAP_P(( LDAPSyntax * syn, struct berval *bv )); LDAP_F( char * ) ldap_matchingrule2str LDAP_P(( LDAPMatchingRule * mr )); LDAP_F( struct berval * ) ldap_matchingrule2bv LDAP_P(( LDAPMatchingRule * mr, struct berval *bv )); LDAP_F( char * ) ldap_matchingruleuse2str LDAP_P(( LDAPMatchingRuleUse * mru )); LDAP_F( struct berval * ) ldap_matchingruleuse2bv LDAP_P(( LDAPMatchingRuleUse * mru, struct berval *bv )); LDAP_F( char * ) ldap_scherr2str LDAP_P(( int code )) LDAP_GCCATTR((const)); LDAP_END_DECL #endif 07070100031aa3000081a400000000000000000000000151244f470000fcef000000b600010002ffffffffffffffff0000001e00000000root/usr/local/include/ldap.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* Portions Copyright (c) 1990 Regents of the University of Michigan. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that this notice is preserved and that due credit is given * to the University of Michigan at Ann Arbor. The name of the University * may not be used to endorse or promote products derived from this * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. */ #ifndef _LDAP_H #define _LDAP_H /* pull in lber */ #include /* include version and API feature defines */ #include LDAP_BEGIN_DECL #define LDAP_VERSION1 1 #define LDAP_VERSION2 2 #define LDAP_VERSION3 3 #define LDAP_VERSION_MIN LDAP_VERSION2 #define LDAP_VERSION LDAP_VERSION2 #define LDAP_VERSION_MAX LDAP_VERSION3 /* * We use 3000+n here because it is above 1823 (for RFC 1823), * above 2000+rev of IETF LDAPEXT draft (now quite dated), * yet below allocations for new RFCs (just in case there is * someday an RFC produced). */ #define LDAP_API_VERSION 3001 #define LDAP_VENDOR_NAME "OpenLDAP" /* OpenLDAP API Features */ #define LDAP_API_FEATURE_X_OPENLDAP LDAP_VENDOR_VERSION #if defined( LDAP_API_FEATURE_X_OPENLDAP_REENTRANT ) || \ ( defined( LDAP_THREAD_SAFE ) && \ defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) ) /* -lldap may or may not be thread safe */ /* -lldap_r, if available, is always thread safe */ # define LDAP_API_FEATURE_THREAD_SAFE 1 # define LDAP_API_FEATURE_SESSION_THREAD_SAFE 1 # define LDAP_API_FEATURE_OPERATION_THREAD_SAFE 1 #endif #if defined( LDAP_THREAD_SAFE ) && \ defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) /* #define LDAP_API_FEATURE_SESSION_SAFE 1 */ /* #define LDAP_API_OPERATION_SESSION_SAFE 1 */ #endif #define LDAP_PORT 389 /* ldap:/// default LDAP port */ #define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ #define LDAP_ROOT_DSE "" #define LDAP_NO_ATTRS "1.1" #define LDAP_ALL_USER_ATTRIBUTES "*" #define LDAP_ALL_OPERATIONAL_ATTRIBUTES "+" /* RFC 3673 */ /* RFC 4511: maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- */ #define LDAP_MAXINT (2147483647) /* * LDAP_OPTions * 0x0000 - 0x0fff reserved for api options * 0x1000 - 0x3fff reserved for api extended options * 0x4000 - 0x7fff reserved for private and experimental options */ #define LDAP_OPT_API_INFO 0x0000 #define LDAP_OPT_DESC 0x0001 /* historic */ #define LDAP_OPT_DEREF 0x0002 #define LDAP_OPT_SIZELIMIT 0x0003 #define LDAP_OPT_TIMELIMIT 0x0004 /* 0x05 - 0x07 not defined */ #define LDAP_OPT_REFERRALS 0x0008 #define LDAP_OPT_RESTART 0x0009 /* 0x0a - 0x10 not defined */ #define LDAP_OPT_PROTOCOL_VERSION 0x0011 #define LDAP_OPT_SERVER_CONTROLS 0x0012 #define LDAP_OPT_CLIENT_CONTROLS 0x0013 /* 0x14 not defined */ #define LDAP_OPT_API_FEATURE_INFO 0x0015 /* 0x16 - 0x2f not defined */ #define LDAP_OPT_HOST_NAME 0x0030 #define LDAP_OPT_RESULT_CODE 0x0031 #define LDAP_OPT_ERROR_NUMBER LDAP_OPT_RESULT_CODE #define LDAP_OPT_DIAGNOSTIC_MESSAGE 0x0032 #define LDAP_OPT_ERROR_STRING LDAP_OPT_DIAGNOSTIC_MESSAGE #define LDAP_OPT_MATCHED_DN 0x0033 /* 0x0034 - 0x3fff not defined */ /* 0x0091 used by Microsoft for LDAP_OPT_AUTO_RECONNECT */ #define LDAP_OPT_SSPI_FLAGS 0x0092 /* 0x0093 used by Microsoft for LDAP_OPT_SSL_INFO */ /* 0x0094 used by Microsoft for LDAP_OPT_REF_DEREF_CONN_PER_MSG */ #define LDAP_OPT_SIGN 0x0095 #define LDAP_OPT_ENCRYPT 0x0096 #define LDAP_OPT_SASL_METHOD 0x0097 /* 0x0098 used by Microsoft for LDAP_OPT_AREC_EXCLUSIVE */ #define LDAP_OPT_SECURITY_CONTEXT 0x0099 /* 0x009A used by Microsoft for LDAP_OPT_ROOTDSE_CACHE */ /* 0x009B - 0x3fff not defined */ /* API Extensions */ #define LDAP_OPT_API_EXTENSION_BASE 0x4000 /* API extensions */ /* private and experimental options */ /* OpenLDAP specific options */ #define LDAP_OPT_DEBUG_LEVEL 0x5001 /* debug level */ #define LDAP_OPT_TIMEOUT 0x5002 /* default timeout */ #define LDAP_OPT_REFHOPLIMIT 0x5003 /* ref hop limit */ #define LDAP_OPT_NETWORK_TIMEOUT 0x5005 /* socket level timeout */ #define LDAP_OPT_URI 0x5006 #define LDAP_OPT_REFERRAL_URLS 0x5007 /* Referral URLs */ #define LDAP_OPT_SOCKBUF 0x5008 /* sockbuf */ #define LDAP_OPT_DEFBASE 0x5009 /* searchbase */ #define LDAP_OPT_CONNECT_ASYNC 0x5010 /* create connections asynchronously */ #define LDAP_OPT_CONNECT_CB 0x5011 /* connection callbacks */ #define LDAP_OPT_SESSION_REFCNT 0x5012 /* session reference count */ /* OpenLDAP TLS options */ #define LDAP_OPT_X_TLS 0x6000 #define LDAP_OPT_X_TLS_CTX 0x6001 /* OpenSSL CTX* */ #define LDAP_OPT_X_TLS_CACERTFILE 0x6002 #define LDAP_OPT_X_TLS_CACERTDIR 0x6003 #define LDAP_OPT_X_TLS_CERTFILE 0x6004 #define LDAP_OPT_X_TLS_KEYFILE 0x6005 #define LDAP_OPT_X_TLS_REQUIRE_CERT 0x6006 #define LDAP_OPT_X_TLS_PROTOCOL_MIN 0x6007 #define LDAP_OPT_X_TLS_CIPHER_SUITE 0x6008 #define LDAP_OPT_X_TLS_RANDOM_FILE 0x6009 #define LDAP_OPT_X_TLS_SSL_CTX 0x600a /* OpenSSL SSL* */ #define LDAP_OPT_X_TLS_CRLCHECK 0x600b #define LDAP_OPT_X_TLS_CONNECT_CB 0x600c #define LDAP_OPT_X_TLS_CONNECT_ARG 0x600d #define LDAP_OPT_X_TLS_DHFILE 0x600e #define LDAP_OPT_X_TLS_NEWCTX 0x600f #define LDAP_OPT_X_TLS_CRLFILE 0x6010 /* GNUtls only */ #define LDAP_OPT_X_TLS_PACKAGE 0x6011 #define LDAP_OPT_X_TLS_NEVER 0 #define LDAP_OPT_X_TLS_HARD 1 #define LDAP_OPT_X_TLS_DEMAND 2 #define LDAP_OPT_X_TLS_ALLOW 3 #define LDAP_OPT_X_TLS_TRY 4 #define LDAP_OPT_X_TLS_CRL_NONE 0 #define LDAP_OPT_X_TLS_CRL_PEER 1 #define LDAP_OPT_X_TLS_CRL_ALL 2 /* for LDAP_OPT_X_TLS_PROTOCOL_MIN */ #define LDAP_OPT_X_TLS_PROTOCOL(maj,min) (((maj) << 8) + (min)) #define LDAP_OPT_X_TLS_PROTOCOL_SSL2 (2 << 8) #define LDAP_OPT_X_TLS_PROTOCOL_SSL3 (3 << 8) #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_0 ((3 << 8) + 1) #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_1 ((3 << 8) + 2) #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_2 ((3 << 8) + 3) /* OpenLDAP SASL options */ #define LDAP_OPT_X_SASL_MECH 0x6100 #define LDAP_OPT_X_SASL_REALM 0x6101 #define LDAP_OPT_X_SASL_AUTHCID 0x6102 #define LDAP_OPT_X_SASL_AUTHZID 0x6103 #define LDAP_OPT_X_SASL_SSF 0x6104 /* read-only */ #define LDAP_OPT_X_SASL_SSF_EXTERNAL 0x6105 /* write-only */ #define LDAP_OPT_X_SASL_SECPROPS 0x6106 /* write-only */ #define LDAP_OPT_X_SASL_SSF_MIN 0x6107 #define LDAP_OPT_X_SASL_SSF_MAX 0x6108 #define LDAP_OPT_X_SASL_MAXBUFSIZE 0x6109 #define LDAP_OPT_X_SASL_MECHLIST 0x610a /* read-only */ #define LDAP_OPT_X_SASL_NOCANON 0x610b #define LDAP_OPT_X_SASL_USERNAME 0x610c /* read-only */ #define LDAP_OPT_X_SASL_GSS_CREDS 0x610d /* OpenLDAP GSSAPI options */ #define LDAP_OPT_X_GSSAPI_DO_NOT_FREE_CONTEXT 0x6200 #define LDAP_OPT_X_GSSAPI_ALLOW_REMOTE_PRINCIPAL 0x6201 /* * OpenLDAP per connection tcp-keepalive settings * (Linux only, ignored where unsupported) */ #define LDAP_OPT_X_KEEPALIVE_IDLE 0x6300 #define LDAP_OPT_X_KEEPALIVE_PROBES 0x6301 #define LDAP_OPT_X_KEEPALIVE_INTERVAL 0x6302 /* Private API Extensions -- reserved for application use */ #define LDAP_OPT_PRIVATE_EXTENSION_BASE 0x7000 /* Private API inclusive */ /* * ldap_get_option() and ldap_set_option() return values. * As later versions may return other values indicating * failure, current applications should only compare returned * value against LDAP_OPT_SUCCESS. */ #define LDAP_OPT_SUCCESS 0 #define LDAP_OPT_ERROR (-1) /* option on/off values */ #define LDAP_OPT_ON ((void *) &ber_pvt_opt_on) #define LDAP_OPT_OFF ((void *) 0) typedef struct ldapapiinfo { int ldapai_info_version; /* version of LDAPAPIInfo */ #define LDAP_API_INFO_VERSION (1) int ldapai_api_version; /* revision of API supported */ int ldapai_protocol_version; /* highest LDAP version supported */ char **ldapai_extensions; /* names of API extensions */ char *ldapai_vendor_name; /* name of supplier */ int ldapai_vendor_version; /* supplier-specific version * 100 */ } LDAPAPIInfo; typedef struct ldap_apifeature_info { int ldapaif_info_version; /* version of LDAPAPIFeatureInfo */ #define LDAP_FEATURE_INFO_VERSION (1) /* apifeature_info struct version */ char* ldapaif_name; /* LDAP_API_FEATURE_* (less prefix) */ int ldapaif_version; /* value of LDAP_API_FEATURE_... */ } LDAPAPIFeatureInfo; /* * LDAP Control structure */ typedef struct ldapcontrol { char * ldctl_oid; /* numericoid of control */ struct berval ldctl_value; /* encoded value of control */ char ldctl_iscritical; /* criticality */ } LDAPControl; /* LDAP Controls */ /* standard track controls */ #define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2" /* RFC 3296 */ #define LDAP_CONTROL_PROXY_AUTHZ "2.16.840.1.113730.3.4.18" /* RFC 4370 */ #define LDAP_CONTROL_SUBENTRIES "1.3.6.1.4.1.4203.1.10.1" /* RFC 3672 */ #define LDAP_CONTROL_VALUESRETURNFILTER "1.2.826.0.1.3344810.2.3"/* RFC 3876 */ #define LDAP_CONTROL_ASSERT "1.3.6.1.1.12" /* RFC 4528 */ #define LDAP_CONTROL_PRE_READ "1.3.6.1.1.13.1" /* RFC 4527 */ #define LDAP_CONTROL_POST_READ "1.3.6.1.1.13.2" /* RFC 4527 */ #define LDAP_CONTROL_SORTREQUEST "1.2.840.113556.1.4.473" /* RFC 2891 */ #define LDAP_CONTROL_SORTRESPONSE "1.2.840.113556.1.4.474" /* RFC 2891 */ /* non-standard track controls */ #define LDAP_CONTROL_PAGEDRESULTS "1.2.840.113556.1.4.319" /* RFC 2696 */ /* LDAP Content Synchronization Operation -- RFC 4533 */ #define LDAP_SYNC_OID "1.3.6.1.4.1.4203.1.9.1" #define LDAP_CONTROL_SYNC LDAP_SYNC_OID ".1" #define LDAP_CONTROL_SYNC_STATE LDAP_SYNC_OID ".2" #define LDAP_CONTROL_SYNC_DONE LDAP_SYNC_OID ".3" #define LDAP_SYNC_INFO LDAP_SYNC_OID ".4" #define LDAP_SYNC_NONE 0x00 #define LDAP_SYNC_REFRESH_ONLY 0x01 #define LDAP_SYNC_RESERVED 0x02 #define LDAP_SYNC_REFRESH_AND_PERSIST 0x03 #define LDAP_SYNC_REFRESH_PRESENTS 0 #define LDAP_SYNC_REFRESH_DELETES 1 #define LDAP_TAG_SYNC_NEW_COOKIE ((ber_tag_t) 0x80U) #define LDAP_TAG_SYNC_REFRESH_DELETE ((ber_tag_t) 0xa1U) #define LDAP_TAG_SYNC_REFRESH_PRESENT ((ber_tag_t) 0xa2U) #define LDAP_TAG_SYNC_ID_SET ((ber_tag_t) 0xa3U) #define LDAP_TAG_SYNC_COOKIE ((ber_tag_t) 0x04U) #define LDAP_TAG_REFRESHDELETES ((ber_tag_t) 0x01U) #define LDAP_TAG_REFRESHDONE ((ber_tag_t) 0x01U) #define LDAP_TAG_RELOAD_HINT ((ber_tag_t) 0x01U) #define LDAP_SYNC_PRESENT 0 #define LDAP_SYNC_ADD 1 #define LDAP_SYNC_MODIFY 2 #define LDAP_SYNC_DELETE 3 #define LDAP_SYNC_NEW_COOKIE 4 /* Password policy Controls *//* work in progress */ /* ITS#3458: released; disabled by default */ #define LDAP_CONTROL_PASSWORDPOLICYREQUEST "1.3.6.1.4.1.42.2.27.8.5.1" #define LDAP_CONTROL_PASSWORDPOLICYRESPONSE "1.3.6.1.4.1.42.2.27.8.5.1" /* various works in progress */ #define LDAP_CONTROL_NOOP "1.3.6.1.4.1.4203.666.5.2" #define LDAP_CONTROL_NO_SUBORDINATES "1.3.6.1.4.1.4203.666.5.11" #define LDAP_CONTROL_RELAX "1.3.6.1.4.1.4203.666.5.12" #define LDAP_CONTROL_MANAGEDIT LDAP_CONTROL_RELAX #define LDAP_CONTROL_SLURP "1.3.6.1.4.1.4203.666.5.13" #define LDAP_CONTROL_VALSORT "1.3.6.1.4.1.4203.666.5.14" #define LDAP_CONTROL_DONTUSECOPY "1.3.6.1.4.1.4203.666.5.15" #define LDAP_CONTROL_X_DEREF "1.3.6.1.4.1.4203.666.5.16" #define LDAP_CONTROL_X_WHATFAILED "1.3.6.1.4.1.4203.666.5.17" /* LDAP Chaining Behavior Control *//* work in progress */ /* ; * see also LDAP_NO_REFERRALS_FOUND, LDAP_CANNOT_CHAIN */ #define LDAP_CONTROL_X_CHAINING_BEHAVIOR "1.3.6.1.4.1.4203.666.11.3" #define LDAP_CHAINING_PREFERRED 0 #define LDAP_CHAINING_REQUIRED 1 #define LDAP_REFERRALS_PREFERRED 2 #define LDAP_REFERRALS_REQUIRED 3 /* MS Active Directory controls (for compatibility) */ #define LDAP_CONTROL_X_INCREMENTAL_VALUES "1.2.840.113556.1.4.802" #define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339" #define LDAP_CONTROL_X_PERMISSIVE_MODIFY "1.2.840.113556.1.4.1413" #define LDAP_CONTROL_X_SEARCH_OPTIONS "1.2.840.113556.1.4.1340" #define LDAP_SEARCH_FLAG_DOMAIN_SCOPE 1 /* do not generate referrals */ #define LDAP_SEARCH_FLAG_PHANTOM_ROOT 2 /* search all subordinate NCs */ #define LDAP_CONTROL_X_TREE_DELETE "1.2.840.113556.1.4.805" /* MS Active Directory controls - not implemented in slapd(8) */ #define LDAP_CONTROL_X_EXTENDED_DN "1.2.840.113556.1.4.529" /* */ #define LDAP_CONTROL_X_SESSION_TRACKING "1.3.6.1.4.1.21008.108.63.1" #define LDAP_CONTROL_X_SESSION_TRACKING_RADIUS_ACCT_SESSION_ID \ LDAP_CONTROL_X_SESSION_TRACKING ".1" #define LDAP_CONTROL_X_SESSION_TRACKING_RADIUS_ACCT_MULTI_SESSION_ID \ LDAP_CONTROL_X_SESSION_TRACKING ".2" #define LDAP_CONTROL_X_SESSION_TRACKING_USERNAME \ LDAP_CONTROL_X_SESSION_TRACKING ".3" /* various expired works */ /* LDAP Duplicated Entry Control Extension *//* not implemented in slapd(8) */ #define LDAP_CONTROL_DUPENT_REQUEST "2.16.840.1.113719.1.27.101.1" #define LDAP_CONTROL_DUPENT_RESPONSE "2.16.840.1.113719.1.27.101.2" #define LDAP_CONTROL_DUPENT_ENTRY "2.16.840.1.113719.1.27.101.3" #define LDAP_CONTROL_DUPENT LDAP_CONTROL_DUPENT_REQUEST /* LDAP Persistent Search Control *//* not implemented in slapd(8) */ #define LDAP_CONTROL_PERSIST_REQUEST "2.16.840.1.113730.3.4.3" #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE "2.16.840.1.113730.3.4.7" #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD 0x1 #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_DELETE 0x2 #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_MODIFY 0x4 #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_RENAME 0x8 /* LDAP VLV */ #define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9" #define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10" /* LDAP Unsolicited Notifications */ #define LDAP_NOTICE_OF_DISCONNECTION "1.3.6.1.4.1.1466.20036" /* RFC 4511 */ #define LDAP_NOTICE_DISCONNECT LDAP_NOTICE_OF_DISCONNECTION /* LDAP Extended Operations */ #define LDAP_EXOP_START_TLS "1.3.6.1.4.1.1466.20037" /* RFC 4511 */ #define LDAP_EXOP_MODIFY_PASSWD "1.3.6.1.4.1.4203.1.11.1" /* RFC 3062 */ #define LDAP_TAG_EXOP_MODIFY_PASSWD_ID ((ber_tag_t) 0x80U) #define LDAP_TAG_EXOP_MODIFY_PASSWD_OLD ((ber_tag_t) 0x81U) #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW ((ber_tag_t) 0x82U) #define LDAP_TAG_EXOP_MODIFY_PASSWD_GEN ((ber_tag_t) 0x80U) #define LDAP_EXOP_CANCEL "1.3.6.1.1.8" /* RFC 3909 */ #define LDAP_EXOP_X_CANCEL LDAP_EXOP_CANCEL #define LDAP_EXOP_REFRESH "1.3.6.1.4.1.1466.101.119.1" /* RFC 2589 */ #define LDAP_TAG_EXOP_REFRESH_REQ_DN ((ber_tag_t) 0x80U) #define LDAP_TAG_EXOP_REFRESH_REQ_TTL ((ber_tag_t) 0x81U) #define LDAP_TAG_EXOP_REFRESH_RES_TTL ((ber_tag_t) 0x81U) #define LDAP_EXOP_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3" /* RFC 4532 */ #define LDAP_EXOP_X_WHO_AM_I LDAP_EXOP_WHO_AM_I /* various works in progress */ #define LDAP_EXOP_TURN "1.3.6.1.1.19" /* RFC 4531 */ #define LDAP_EXOP_X_TURN LDAP_EXOP_TURN /* LDAP Distributed Procedures */ /* a work in progress */ #define LDAP_X_DISTPROC_BASE "1.3.6.1.4.1.4203.666.11.6" #define LDAP_EXOP_X_CHAINEDREQUEST LDAP_X_DISTPROC_BASE ".1" #define LDAP_FEATURE_X_CANCHAINOPS LDAP_X_DISTPROC_BASE ".2" #define LDAP_CONTROL_X_RETURNCONTREF LDAP_X_DISTPROC_BASE ".3" #define LDAP_URLEXT_X_LOCALREFOID LDAP_X_DISTPROC_BASE ".4" #define LDAP_URLEXT_X_REFTYPEOID LDAP_X_DISTPROC_BASE ".5" #define LDAP_URLEXT_X_SEARCHEDSUBTREEOID \ LDAP_X_DISTPROC_BASE ".6" #define LDAP_URLEXT_X_FAILEDNAMEOID LDAP_X_DISTPROC_BASE ".7" #define LDAP_URLEXT_X_LOCALREF "x-localReference" #define LDAP_URLEXT_X_REFTYPE "x-referenceType" #define LDAP_URLEXT_X_SEARCHEDSUBTREE "x-searchedSubtree" #define LDAP_URLEXT_X_FAILEDNAME "x-failedName" #ifdef LDAP_DEVEL #define LDAP_X_TXN "1.3.6.1.4.1.4203.666.11.7" /* tmp */ #define LDAP_EXOP_X_TXN_START LDAP_X_TXN ".1" #define LDAP_CONTROL_X_TXN_SPEC LDAP_X_TXN ".2" #define LDAP_EXOP_X_TXN_END LDAP_X_TXN ".3" #define LDAP_EXOP_X_TXN_ABORTED_NOTICE LDAP_X_TXN ".4" #endif /* LDAP Features */ #define LDAP_FEATURE_ALL_OP_ATTRS "1.3.6.1.4.1.4203.1.5.1" /* RFC 3673 */ #define LDAP_FEATURE_OBJECTCLASS_ATTRS \ "1.3.6.1.4.1.4203.1.5.2" /* @objectClass - new number to be assigned */ #define LDAP_FEATURE_ABSOLUTE_FILTERS "1.3.6.1.4.1.4203.1.5.3" /* (&) (|) */ #define LDAP_FEATURE_LANGUAGE_TAG_OPTIONS "1.3.6.1.4.1.4203.1.5.4" #define LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS "1.3.6.1.4.1.4203.1.5.5" #define LDAP_FEATURE_MODIFY_INCREMENT "1.3.6.1.1.14" /* LDAP Experimental (works in progress) Features */ #define LDAP_FEATURE_SUBORDINATE_SCOPE \ "1.3.6.1.4.1.4203.666.8.1" /* "children" */ #define LDAP_FEATURE_CHILDREN_SCOPE LDAP_FEATURE_SUBORDINATE_SCOPE /* * specific LDAP instantiations of BER types we know about */ /* Overview of LBER tag construction * * Bits * ______ * 8 7 | CLASS * 0 0 = UNIVERSAL * 0 1 = APPLICATION * 1 0 = CONTEXT-SPECIFIC * 1 1 = PRIVATE * _____ * | 6 | DATA-TYPE * 0 = PRIMITIVE * 1 = CONSTRUCTED * ___________ * | 5 ... 1 | TAG-NUMBER */ /* general stuff */ #define LDAP_TAG_MESSAGE ((ber_tag_t) 0x30U) /* constructed + 16 */ #define LDAP_TAG_MSGID ((ber_tag_t) 0x02U) /* integer */ #define LDAP_TAG_LDAPDN ((ber_tag_t) 0x04U) /* octet string */ #define LDAP_TAG_LDAPCRED ((ber_tag_t) 0x04U) /* octet string */ #define LDAP_TAG_CONTROLS ((ber_tag_t) 0xa0U) /* context specific + constructed + 0 */ #define LDAP_TAG_REFERRAL ((ber_tag_t) 0xa3U) /* context specific + constructed + 3 */ #define LDAP_TAG_NEWSUPERIOR ((ber_tag_t) 0x80U) /* context-specific + primitive + 0 */ #define LDAP_TAG_EXOP_REQ_OID ((ber_tag_t) 0x80U) /* context specific + primitive */ #define LDAP_TAG_EXOP_REQ_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */ #define LDAP_TAG_EXOP_RES_OID ((ber_tag_t) 0x8aU) /* context specific + primitive */ #define LDAP_TAG_EXOP_RES_VALUE ((ber_tag_t) 0x8bU) /* context specific + primitive */ #define LDAP_TAG_IM_RES_OID ((ber_tag_t) 0x80U) /* context specific + primitive */ #define LDAP_TAG_IM_RES_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */ #define LDAP_TAG_SASL_RES_CREDS ((ber_tag_t) 0x87U) /* context specific + primitive */ /* LDAP Request Messages */ #define LDAP_REQ_BIND ((ber_tag_t) 0x60U) /* application + constructed */ #define LDAP_REQ_UNBIND ((ber_tag_t) 0x42U) /* application + primitive */ #define LDAP_REQ_SEARCH ((ber_tag_t) 0x63U) /* application + constructed */ #define LDAP_REQ_MODIFY ((ber_tag_t) 0x66U) /* application + constructed */ #define LDAP_REQ_ADD ((ber_tag_t) 0x68U) /* application + constructed */ #define LDAP_REQ_DELETE ((ber_tag_t) 0x4aU) /* application + primitive */ #define LDAP_REQ_MODDN ((ber_tag_t) 0x6cU) /* application + constructed */ #define LDAP_REQ_MODRDN LDAP_REQ_MODDN #define LDAP_REQ_RENAME LDAP_REQ_MODDN #define LDAP_REQ_COMPARE ((ber_tag_t) 0x6eU) /* application + constructed */ #define LDAP_REQ_ABANDON ((ber_tag_t) 0x50U) /* application + primitive */ #define LDAP_REQ_EXTENDED ((ber_tag_t) 0x77U) /* application + constructed */ /* LDAP Response Messages */ #define LDAP_RES_BIND ((ber_tag_t) 0x61U) /* application + constructed */ #define LDAP_RES_SEARCH_ENTRY ((ber_tag_t) 0x64U) /* application + constructed */ #define LDAP_RES_SEARCH_REFERENCE ((ber_tag_t) 0x73U) /* V3: application + constructed */ #define LDAP_RES_SEARCH_RESULT ((ber_tag_t) 0x65U) /* application + constructed */ #define LDAP_RES_MODIFY ((ber_tag_t) 0x67U) /* application + constructed */ #define LDAP_RES_ADD ((ber_tag_t) 0x69U) /* application + constructed */ #define LDAP_RES_DELETE ((ber_tag_t) 0x6bU) /* application + constructed */ #define LDAP_RES_MODDN ((ber_tag_t) 0x6dU) /* application + constructed */ #define LDAP_RES_MODRDN LDAP_RES_MODDN /* application + constructed */ #define LDAP_RES_RENAME LDAP_RES_MODDN /* application + constructed */ #define LDAP_RES_COMPARE ((ber_tag_t) 0x6fU) /* application + constructed */ #define LDAP_RES_EXTENDED ((ber_tag_t) 0x78U) /* V3: application + constructed */ #define LDAP_RES_INTERMEDIATE ((ber_tag_t) 0x79U) /* V3+: application + constructed */ #define LDAP_RES_ANY (-1) #define LDAP_RES_UNSOLICITED (0) /* sasl methods */ #define LDAP_SASL_SIMPLE ((char*)0) #define LDAP_SASL_NULL ("") /* authentication methods available */ #define LDAP_AUTH_NONE ((ber_tag_t) 0x00U) /* no authentication */ #define LDAP_AUTH_SIMPLE ((ber_tag_t) 0x80U) /* context specific + primitive */ #define LDAP_AUTH_SASL ((ber_tag_t) 0xa3U) /* context specific + constructed */ #define LDAP_AUTH_KRBV4 ((ber_tag_t) 0xffU) /* means do both of the following */ #define LDAP_AUTH_KRBV41 ((ber_tag_t) 0x81U) /* context specific + primitive */ #define LDAP_AUTH_KRBV42 ((ber_tag_t) 0x82U) /* context specific + primitive */ /* used by the Windows API but not used on the wire */ #define LDAP_AUTH_NEGOTIATE ((ber_tag_t) 0x04FFU) /* filter types */ #define LDAP_FILTER_AND ((ber_tag_t) 0xa0U) /* context specific + constructed */ #define LDAP_FILTER_OR ((ber_tag_t) 0xa1U) /* context specific + constructed */ #define LDAP_FILTER_NOT ((ber_tag_t) 0xa2U) /* context specific + constructed */ #define LDAP_FILTER_EQUALITY ((ber_tag_t) 0xa3U) /* context specific + constructed */ #define LDAP_FILTER_SUBSTRINGS ((ber_tag_t) 0xa4U) /* context specific + constructed */ #define LDAP_FILTER_GE ((ber_tag_t) 0xa5U) /* context specific + constructed */ #define LDAP_FILTER_LE ((ber_tag_t) 0xa6U) /* context specific + constructed */ #define LDAP_FILTER_PRESENT ((ber_tag_t) 0x87U) /* context specific + primitive */ #define LDAP_FILTER_APPROX ((ber_tag_t) 0xa8U) /* context specific + constructed */ #define LDAP_FILTER_EXT ((ber_tag_t) 0xa9U) /* context specific + constructed */ /* extended filter component types */ #define LDAP_FILTER_EXT_OID ((ber_tag_t) 0x81U) /* context specific */ #define LDAP_FILTER_EXT_TYPE ((ber_tag_t) 0x82U) /* context specific */ #define LDAP_FILTER_EXT_VALUE ((ber_tag_t) 0x83U) /* context specific */ #define LDAP_FILTER_EXT_DNATTRS ((ber_tag_t) 0x84U) /* context specific */ /* substring filter component types */ #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ #define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */ #define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */ /* search scopes */ #define LDAP_SCOPE_BASE ((ber_int_t) 0x0000) #define LDAP_SCOPE_BASEOBJECT LDAP_SCOPE_BASE #define LDAP_SCOPE_ONELEVEL ((ber_int_t) 0x0001) #define LDAP_SCOPE_ONE LDAP_SCOPE_ONELEVEL #define LDAP_SCOPE_SUBTREE ((ber_int_t) 0x0002) #define LDAP_SCOPE_SUB LDAP_SCOPE_SUBTREE #define LDAP_SCOPE_SUBORDINATE ((ber_int_t) 0x0003) /* OpenLDAP extension */ #define LDAP_SCOPE_CHILDREN LDAP_SCOPE_SUBORDINATE #define LDAP_SCOPE_DEFAULT ((ber_int_t) -1) /* OpenLDAP extension */ /* substring filter component types */ #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ #define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */ #define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */ /* * LDAP Result Codes */ #define LDAP_SUCCESS 0x00 #define LDAP_RANGE(n,x,y) (((x) <= (n)) && ((n) <= (y))) #define LDAP_OPERATIONS_ERROR 0x01 #define LDAP_PROTOCOL_ERROR 0x02 #define LDAP_TIMELIMIT_EXCEEDED 0x03 #define LDAP_SIZELIMIT_EXCEEDED 0x04 #define LDAP_COMPARE_FALSE 0x05 #define LDAP_COMPARE_TRUE 0x06 #define LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07 #define LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_AUTH_METHOD_NOT_SUPPORTED #define LDAP_STRONG_AUTH_REQUIRED 0x08 #define LDAP_STRONGER_AUTH_REQUIRED LDAP_STRONG_AUTH_REQUIRED #define LDAP_PARTIAL_RESULTS 0x09 /* LDAPv2+ (not LDAPv3) */ #define LDAP_REFERRAL 0x0a /* LDAPv3 */ #define LDAP_ADMINLIMIT_EXCEEDED 0x0b /* LDAPv3 */ #define LDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c /* LDAPv3 */ #define LDAP_CONFIDENTIALITY_REQUIRED 0x0d /* LDAPv3 */ #define LDAP_SASL_BIND_IN_PROGRESS 0x0e /* LDAPv3 */ #define LDAP_ATTR_ERROR(n) LDAP_RANGE((n),0x10,0x15) /* 16-21 */ #define LDAP_NO_SUCH_ATTRIBUTE 0x10 #define LDAP_UNDEFINED_TYPE 0x11 #define LDAP_INAPPROPRIATE_MATCHING 0x12 #define LDAP_CONSTRAINT_VIOLATION 0x13 #define LDAP_TYPE_OR_VALUE_EXISTS 0x14 #define LDAP_INVALID_SYNTAX 0x15 #define LDAP_NAME_ERROR(n) LDAP_RANGE((n),0x20,0x24) /* 32-34,36 */ #define LDAP_NO_SUCH_OBJECT 0x20 #define LDAP_ALIAS_PROBLEM 0x21 #define LDAP_INVALID_DN_SYNTAX 0x22 #define LDAP_IS_LEAF 0x23 /* not LDAPv3 */ #define LDAP_ALIAS_DEREF_PROBLEM 0x24 #define LDAP_SECURITY_ERROR(n) LDAP_RANGE((n),0x2F,0x32) /* 47-50 */ #define LDAP_X_PROXY_AUTHZ_FAILURE 0x2F /* LDAPv3 proxy authorization */ #define LDAP_INAPPROPRIATE_AUTH 0x30 #define LDAP_INVALID_CREDENTIALS 0x31 #define LDAP_INSUFFICIENT_ACCESS 0x32 #define LDAP_SERVICE_ERROR(n) LDAP_RANGE((n),0x33,0x36) /* 51-54 */ #define LDAP_BUSY 0x33 #define LDAP_UNAVAILABLE 0x34 #define LDAP_UNWILLING_TO_PERFORM 0x35 #define LDAP_LOOP_DETECT 0x36 #define LDAP_UPDATE_ERROR(n) LDAP_RANGE((n),0x40,0x47) /* 64-69,71 */ #define LDAP_NAMING_VIOLATION 0x40 #define LDAP_OBJECT_CLASS_VIOLATION 0x41 #define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 #define LDAP_NOT_ALLOWED_ON_RDN 0x43 #define LDAP_ALREADY_EXISTS 0x44 #define LDAP_NO_OBJECT_CLASS_MODS 0x45 #define LDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */ #define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 #define LDAP_VLV_ERROR 0x4C #define LDAP_OTHER 0x50 /* LCUP operation codes (113-117) - not implemented */ #define LDAP_CUP_RESOURCES_EXHAUSTED 0x71 #define LDAP_CUP_SECURITY_VIOLATION 0x72 #define LDAP_CUP_INVALID_DATA 0x73 #define LDAP_CUP_UNSUPPORTED_SCHEME 0x74 #define LDAP_CUP_RELOAD_REQUIRED 0x75 /* Cancel operation codes (118-121) */ #define LDAP_CANCELLED 0x76 #define LDAP_NO_SUCH_OPERATION 0x77 #define LDAP_TOO_LATE 0x78 #define LDAP_CANNOT_CANCEL 0x79 /* Assertion control (122) */ #define LDAP_ASSERTION_FAILED 0x7A /* Proxied Authorization Denied (123) */ #define LDAP_PROXIED_AUTHORIZATION_DENIED 0x7B /* Experimental result codes */ #define LDAP_E_ERROR(n) LDAP_RANGE((n),0x1000,0x3FFF) /* LDAP Sync (4096) */ #define LDAP_SYNC_REFRESH_REQUIRED 0x1000 /* Private Use result codes */ #define LDAP_X_ERROR(n) LDAP_RANGE((n),0x4000,0xFFFF) #define LDAP_X_SYNC_REFRESH_REQUIRED 0x4100 /* defunct */ #define LDAP_X_ASSERTION_FAILED 0x410f /* defunct */ /* for the LDAP No-Op control */ #define LDAP_X_NO_OPERATION 0x410e /* for the Chaining Behavior control (consecutive result codes requested; * see ) */ #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR #define LDAP_X_NO_REFERRALS_FOUND 0x4110 #define LDAP_X_CANNOT_CHAIN 0x4111 #endif /* for Distributed Procedures (see ) */ #ifdef LDAP_X_DISTPROC_BASE #define LDAP_X_INVALIDREFERENCE 0x4112 #endif #ifdef LDAP_X_TXN #define LDAP_X_TXN_SPECIFY_OKAY 0x4120 #define LDAP_X_TXN_ID_INVALID 0x4121 #endif /* API Error Codes * * Based on draft-ietf-ldap-c-api-xx * but with new negative code values */ #define LDAP_API_ERROR(n) ((n)<0) #define LDAP_API_RESULT(n) ((n)<=0) #define LDAP_SERVER_DOWN (-1) #define LDAP_LOCAL_ERROR (-2) #define LDAP_ENCODING_ERROR (-3) #define LDAP_DECODING_ERROR (-4) #define LDAP_TIMEOUT (-5) #define LDAP_AUTH_UNKNOWN (-6) #define LDAP_FILTER_ERROR (-7) #define LDAP_USER_CANCELLED (-8) #define LDAP_PARAM_ERROR (-9) #define LDAP_NO_MEMORY (-10) #define LDAP_CONNECT_ERROR (-11) #define LDAP_NOT_SUPPORTED (-12) #define LDAP_CONTROL_NOT_FOUND (-13) #define LDAP_NO_RESULTS_RETURNED (-14) #define LDAP_MORE_RESULTS_TO_RETURN (-15) /* Obsolete */ #define LDAP_CLIENT_LOOP (-16) #define LDAP_REFERRAL_LIMIT_EXCEEDED (-17) #define LDAP_X_CONNECTING (-18) /* * This structure represents both ldap messages and ldap responses. * These are really the same, except in the case of search responses, * where a response has multiple messages. */ typedef struct ldapmsg LDAPMessage; /* for modifications */ typedef struct ldapmod { int mod_op; #define LDAP_MOD_OP (0x0007) #define LDAP_MOD_ADD (0x0000) #define LDAP_MOD_DELETE (0x0001) #define LDAP_MOD_REPLACE (0x0002) #define LDAP_MOD_INCREMENT (0x0003) /* OpenLDAP extension */ #define LDAP_MOD_BVALUES (0x0080) /* IMPORTANT: do not use code 0x1000 (or above), * it is used internally by the backends! * (see ldap/servers/slapd/slap.h) */ char *mod_type; union mod_vals_u { char **modv_strvals; struct berval **modv_bvals; } mod_vals; #define mod_values mod_vals.modv_strvals #define mod_bvalues mod_vals.modv_bvals } LDAPMod; /* * structure representing an ldap session which can * encompass connections to multiple servers (in the * face of referrals). */ typedef struct ldap LDAP; #define LDAP_DEREF_NEVER 0x00 #define LDAP_DEREF_SEARCHING 0x01 #define LDAP_DEREF_FINDING 0x02 #define LDAP_DEREF_ALWAYS 0x03 #define LDAP_NO_LIMIT 0 /* how many messages to retrieve results for */ #define LDAP_MSG_ONE 0x00 #define LDAP_MSG_ALL 0x01 #define LDAP_MSG_RECEIVED 0x02 /* * types for ldap URL handling */ typedef struct ldap_url_desc { struct ldap_url_desc *lud_next; char *lud_scheme; char *lud_host; int lud_port; char *lud_dn; char **lud_attrs; int lud_scope; char *lud_filter; char **lud_exts; int lud_crit_exts; } LDAPURLDesc; #define LDAP_URL_SUCCESS 0x00 /* Success */ #define LDAP_URL_ERR_MEM 0x01 /* can't allocate memory space */ #define LDAP_URL_ERR_PARAM 0x02 /* parameter is bad */ #define LDAP_URL_ERR_BADSCHEME 0x03 /* URL doesn't begin with "ldap[si]://" */ #define LDAP_URL_ERR_BADENCLOSURE 0x04 /* URL is missing trailing ">" */ #define LDAP_URL_ERR_BADURL 0x05 /* URL is bad */ #define LDAP_URL_ERR_BADHOST 0x06 /* host port is bad */ #define LDAP_URL_ERR_BADATTRS 0x07 /* bad (or missing) attributes */ #define LDAP_URL_ERR_BADSCOPE 0x08 /* scope string is invalid (or missing) */ #define LDAP_URL_ERR_BADFILTER 0x09 /* bad or missing filter */ #define LDAP_URL_ERR_BADEXTS 0x0a /* bad or missing extensions */ /* * LDAP sync (RFC4533) API */ typedef struct ldap_sync_t ldap_sync_t; typedef enum { /* these are private - the client should never see them */ LDAP_SYNC_CAPI_NONE = -1, LDAP_SYNC_CAPI_PHASE_FLAG = 0x10U, LDAP_SYNC_CAPI_IDSET_FLAG = 0x20U, LDAP_SYNC_CAPI_DONE_FLAG = 0x40U, /* these are passed to ls_search_entry() */ LDAP_SYNC_CAPI_PRESENT = LDAP_SYNC_PRESENT, LDAP_SYNC_CAPI_ADD = LDAP_SYNC_ADD, LDAP_SYNC_CAPI_MODIFY = LDAP_SYNC_MODIFY, LDAP_SYNC_CAPI_DELETE = LDAP_SYNC_DELETE, /* these are passed to ls_intermediate() */ LDAP_SYNC_CAPI_PRESENTS = ( LDAP_SYNC_CAPI_PHASE_FLAG | LDAP_SYNC_CAPI_PRESENT ), LDAP_SYNC_CAPI_DELETES = ( LDAP_SYNC_CAPI_PHASE_FLAG | LDAP_SYNC_CAPI_DELETE ), LDAP_SYNC_CAPI_PRESENTS_IDSET = ( LDAP_SYNC_CAPI_PRESENTS | LDAP_SYNC_CAPI_IDSET_FLAG ), LDAP_SYNC_CAPI_DELETES_IDSET = ( LDAP_SYNC_CAPI_DELETES | LDAP_SYNC_CAPI_IDSET_FLAG ), LDAP_SYNC_CAPI_DONE = ( LDAP_SYNC_CAPI_DONE_FLAG | LDAP_SYNC_CAPI_PRESENTS ) } ldap_sync_refresh_t; /* * Called when an entry is returned by ldap_result(). * If phase is LDAP_SYNC_CAPI_ADD or LDAP_SYNC_CAPI_MODIFY, * the entry has been either added or modified, and thus * the complete view of the entry should be in the LDAPMessage. * If phase is LDAP_SYNC_CAPI_PRESENT or LDAP_SYNC_CAPI_DELETE, * only the DN should be in the LDAPMessage. */ typedef int (*ldap_sync_search_entry_f) LDAP_P(( ldap_sync_t *ls, LDAPMessage *msg, struct berval *entryUUID, ldap_sync_refresh_t phase )); /* * Called when a reference is returned; the client should know * what to do with it. */ typedef int (*ldap_sync_search_reference_f) LDAP_P(( ldap_sync_t *ls, LDAPMessage *msg )); /* * Called when specific intermediate/final messages are returned. * If phase is LDAP_SYNC_CAPI_PRESENTS or LDAP_SYNC_CAPI_DELETES, * a "presents" or "deletes" phase begins. * If phase is LDAP_SYNC_CAPI_DONE, a special "presents" phase * with refreshDone set to "TRUE" has been returned, to indicate * that the refresh phase of a refreshAndPersist is complete. * In the above cases, syncUUIDs is NULL. * * If phase is LDAP_SYNC_CAPI_PRESENTS_IDSET or * LDAP_SYNC_CAPI_DELETES_IDSET, syncUUIDs is an array of UUIDs * that are either present or have been deleted. */ typedef int (*ldap_sync_intermediate_f) LDAP_P(( ldap_sync_t *ls, LDAPMessage *msg, BerVarray syncUUIDs, ldap_sync_refresh_t phase )); /* * Called when a searchResultDone is returned. In refreshAndPersist, * this can only occur if the search for any reason is being terminated * by the server. */ typedef int (*ldap_sync_search_result_f) LDAP_P(( ldap_sync_t *ls, LDAPMessage *msg, int refreshDeletes )); /* * This structure contains all information about the persistent search; * the caller is responsible for connecting, setting version, binding, tls... */ struct ldap_sync_t { /* conf search params */ char *ls_base; int ls_scope; char *ls_filter; char **ls_attrs; int ls_timelimit; int ls_sizelimit; /* poll timeout */ int ls_timeout; /* helpers - add as appropriate */ ldap_sync_search_entry_f ls_search_entry; ldap_sync_search_reference_f ls_search_reference; ldap_sync_intermediate_f ls_intermediate; ldap_sync_search_result_f ls_search_result; /* set by the caller as appropriate */ void *ls_private; /* conn stuff */ LDAP *ls_ld; /* --- the parameters below are private - do not modify --- */ /* FIXME: make the structure opaque, and provide an interface * to modify the public values? */ /* result stuff */ int ls_msgid; /* sync stuff */ /* needed by refreshOnly */ int ls_reloadHint; /* opaque - need to pass between sessions, updated by the API */ struct berval ls_cookie; /* state variable - do not modify */ ldap_sync_refresh_t ls_refreshPhase; }; /* * End of LDAP sync (RFC4533) API */ /* * Connection callbacks... */ struct ldap_conncb; struct sockaddr; /* Called after a connection is established */ typedef int (ldap_conn_add_f) LDAP_P(( LDAP *ld, Sockbuf *sb, LDAPURLDesc *srv, struct sockaddr *addr, struct ldap_conncb *ctx )); /* Called before a connection is closed */ typedef void (ldap_conn_del_f) LDAP_P(( LDAP *ld, Sockbuf *sb, struct ldap_conncb *ctx )); /* Callbacks are pushed on a stack. Last one pushed is first one executed. The * delete callback is called with a NULL Sockbuf just before freeing the LDAP handle. */ typedef struct ldap_conncb { ldap_conn_add_f *lc_add; ldap_conn_del_f *lc_del; void *lc_arg; } ldap_conncb; /* * The API draft spec says we should declare (or cause to be declared) * 'struct timeval'. We don't. See IETF LDAPext discussions. */ struct timeval; /* * in options.c: */ LDAP_F( int ) ldap_get_option LDAP_P(( LDAP *ld, int option, void *outvalue)); LDAP_F( int ) ldap_set_option LDAP_P(( LDAP *ld, int option, LDAP_CONST void *invalue)); /* V3 REBIND Function Callback Prototype */ typedef int (LDAP_REBIND_PROC) LDAP_P(( LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *params )); LDAP_F( int ) ldap_set_rebind_proc LDAP_P(( LDAP *ld, LDAP_REBIND_PROC *rebind_proc, void *params )); /* V3 referral selection Function Callback Prototype */ typedef int (LDAP_NEXTREF_PROC) LDAP_P(( LDAP *ld, char ***refsp, int *cntp, void *params )); LDAP_F( int ) ldap_set_nextref_proc LDAP_P(( LDAP *ld, LDAP_NEXTREF_PROC *nextref_proc, void *params )); /* V3 URLLIST Function Callback Prototype */ typedef int (LDAP_URLLIST_PROC) LDAP_P(( LDAP *ld, LDAPURLDesc **urllist, LDAPURLDesc **url, void *params )); LDAP_F( int ) ldap_set_urllist_proc LDAP_P(( LDAP *ld, LDAP_URLLIST_PROC *urllist_proc, void *params )); /* * in controls.c: */ #if LDAP_DEPRECATED LDAP_F( int ) ldap_create_control LDAP_P(( /* deprecated, use ldap_control_create */ LDAP_CONST char *requestOID, BerElement *ber, int iscritical, LDAPControl **ctrlp )); LDAP_F( LDAPControl * ) ldap_find_control LDAP_P(( /* deprecated, use ldap_control_find */ LDAP_CONST char *oid, LDAPControl **ctrls )); #endif LDAP_F( int ) ldap_control_create LDAP_P(( LDAP_CONST char *requestOID, int iscritical, struct berval *value, int dupval, LDAPControl **ctrlp )); LDAP_F( LDAPControl * ) ldap_control_find LDAP_P(( LDAP_CONST char *oid, LDAPControl **ctrls, LDAPControl ***nextctrlp )); LDAP_F( void ) ldap_control_free LDAP_P(( LDAPControl *ctrl )); LDAP_F( void ) ldap_controls_free LDAP_P(( LDAPControl **ctrls )); LDAP_F( LDAPControl ** ) ldap_controls_dup LDAP_P(( LDAPControl *LDAP_CONST *controls )); LDAP_F( LDAPControl * ) ldap_control_dup LDAP_P(( LDAP_CONST LDAPControl *c )); /* * in dnssrv.c: */ LDAP_F( int ) ldap_domain2dn LDAP_P(( LDAP_CONST char* domain, char** dn )); LDAP_F( int ) ldap_dn2domain LDAP_P(( LDAP_CONST char* dn, char** domain )); LDAP_F( int ) ldap_domain2hostlist LDAP_P(( LDAP_CONST char *domain, char** hostlist )); /* * in extended.c: */ LDAP_F( int ) ldap_extended_operation LDAP_P(( LDAP *ld, LDAP_CONST char *reqoid, struct berval *reqdata, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_extended_operation_s LDAP_P(( LDAP *ld, LDAP_CONST char *reqoid, struct berval *reqdata, LDAPControl **serverctrls, LDAPControl **clientctrls, char **retoidp, struct berval **retdatap )); LDAP_F( int ) ldap_parse_extended_result LDAP_P(( LDAP *ld, LDAPMessage *res, char **retoidp, struct berval **retdatap, int freeit )); LDAP_F( int ) ldap_parse_intermediate LDAP_P(( LDAP *ld, LDAPMessage *res, char **retoidp, struct berval **retdatap, LDAPControl ***serverctrls, int freeit )); /* * in abandon.c: */ LDAP_F( int ) ldap_abandon_ext LDAP_P(( LDAP *ld, int msgid, LDAPControl **serverctrls, LDAPControl **clientctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_abandon LDAP_P(( /* deprecated, use ldap_abandon_ext */ LDAP *ld, int msgid )); #endif /* * in add.c: */ LDAP_F( int ) ldap_add_ext LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_add_ext_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_add LDAP_P(( /* deprecated, use ldap_add_ext */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs )); LDAP_F( int ) ldap_add_s LDAP_P(( /* deprecated, use ldap_add_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs )); #endif /* * in sasl.c: */ LDAP_F( int ) ldap_sasl_bind LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *mechanism, struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); /* Interaction flags (should be passed about in a control) * Automatic (default): use defaults, prompt otherwise * Interactive: prompt always * Quiet: never prompt */ #define LDAP_SASL_AUTOMATIC 0U #define LDAP_SASL_INTERACTIVE 1U #define LDAP_SASL_QUIET 2U /* * V3 SASL Interaction Function Callback Prototype * when using Cyrus SASL, interact is pointer to sasl_interact_t * should likely passed in a control (and provided controls) */ typedef int (LDAP_SASL_INTERACT_PROC) LDAP_P(( LDAP *ld, unsigned flags, void* defaults, void *interact )); LDAP_F( int ) ldap_sasl_interactive_bind LDAP_P(( LDAP *ld, LDAP_CONST char *dn, /* usually NULL */ LDAP_CONST char *saslMechanism, LDAPControl **serverControls, LDAPControl **clientControls, /* should be client controls */ unsigned flags, LDAP_SASL_INTERACT_PROC *proc, void *defaults, /* as obtained from ldap_result() */ LDAPMessage *result, /* returned during bind processing */ const char **rmech, int *msgid )); LDAP_F( int ) ldap_sasl_interactive_bind_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, /* usually NULL */ LDAP_CONST char *saslMechanism, LDAPControl **serverControls, LDAPControl **clientControls, /* should be client controls */ unsigned flags, LDAP_SASL_INTERACT_PROC *proc, void *defaults )); LDAP_F( int ) ldap_sasl_bind_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *mechanism, struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, struct berval **servercredp )); LDAP_F( int ) ldap_parse_sasl_bind_result LDAP_P(( LDAP *ld, LDAPMessage *res, struct berval **servercredp, int freeit )); #if LDAP_DEPRECATED /* * in bind.c: * (deprecated) */ LDAP_F( int ) ldap_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd, int authmethod )); LDAP_F( int ) ldap_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *cred, int authmethod )); /* * in sbind.c: */ LDAP_F( int ) ldap_simple_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd )); LDAP_F( int ) ldap_simple_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd )); #endif /* * in compare.c: */ LDAP_F( int ) ldap_compare_ext LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, struct berval *bvalue, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_compare_ext_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, struct berval *bvalue, LDAPControl **serverctrls, LDAPControl **clientctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_compare LDAP_P(( /* deprecated, use ldap_compare_ext */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, LDAP_CONST char *value )); LDAP_F( int ) ldap_compare_s LDAP_P(( /* deprecated, use ldap_compare_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, LDAP_CONST char *value )); #endif /* * in delete.c: */ LDAP_F( int ) ldap_delete_ext LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_delete_ext_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPControl **serverctrls, LDAPControl **clientctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_delete LDAP_P(( /* deprecated, use ldap_delete_ext */ LDAP *ld, LDAP_CONST char *dn )); LDAP_F( int ) ldap_delete_s LDAP_P(( /* deprecated, use ldap_delete_ext_s */ LDAP *ld, LDAP_CONST char *dn )); #endif /* * in error.c: */ LDAP_F( int ) ldap_parse_result LDAP_P(( LDAP *ld, LDAPMessage *res, int *errcodep, char **matcheddnp, char **errmsgp, char ***referralsp, LDAPControl ***serverctrls, int freeit )); LDAP_F( char * ) ldap_err2string LDAP_P(( int err )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_result2error LDAP_P(( /* deprecated, use ldap_parse_result */ LDAP *ld, LDAPMessage *r, int freeit )); LDAP_F( void ) ldap_perror LDAP_P(( /* deprecated, use ldap_err2string */ LDAP *ld, LDAP_CONST char *s )); #endif /* * gssapi.c: */ LDAP_F( int ) ldap_gssapi_bind LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *creds )); LDAP_F( int ) ldap_gssapi_bind_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *creds )); /* * in modify.c: */ LDAP_F( int ) ldap_modify_ext LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_modify_ext_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_modify LDAP_P(( /* deprecated, use ldap_modify_ext */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods )); LDAP_F( int ) ldap_modify_s LDAP_P(( /* deprecated, use ldap_modify_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods )); #endif /* * in modrdn.c: */ LDAP_F( int ) ldap_rename LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, LDAP_CONST char *newSuperior, int deleteoldrdn, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_rename_s LDAP_P(( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, LDAP_CONST char *newSuperior, int deleteoldrdn, LDAPControl **sctrls, LDAPControl **cctrls )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_rename2 LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, LDAP_CONST char *newSuperior, int deleteoldrdn )); LDAP_F( int ) ldap_rename2_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, LDAP_CONST char *newSuperior, int deleteoldrdn )); LDAP_F( int ) ldap_modrdn LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn )); LDAP_F( int ) ldap_modrdn_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn )); LDAP_F( int ) ldap_modrdn2 LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, int deleteoldrdn )); LDAP_F( int ) ldap_modrdn2_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, int deleteoldrdn)); #endif /* * in open.c: */ #if LDAP_DEPRECATED LDAP_F( LDAP * ) ldap_init LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ LDAP_CONST char *host, int port )); LDAP_F( LDAP * ) ldap_open LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ LDAP_CONST char *host, int port )); #endif LDAP_F( int ) ldap_create LDAP_P(( LDAP **ldp )); LDAP_F( int ) ldap_initialize LDAP_P(( LDAP **ldp, LDAP_CONST char *url )); LDAP_F( LDAP * ) ldap_dup LDAP_P(( LDAP *old )); /* * in tls.c */ LDAP_F( int ) ldap_tls_inplace LDAP_P(( LDAP *ld )); LDAP_F( int ) ldap_start_tls LDAP_P(( LDAP *ld, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); LDAP_F( int ) ldap_install_tls LDAP_P(( LDAP *ld )); LDAP_F( int ) ldap_start_tls_s LDAP_P(( LDAP *ld, LDAPControl **serverctrls, LDAPControl **clientctrls )); /* * in messages.c: */ LDAP_F( LDAPMessage * ) ldap_first_message LDAP_P(( LDAP *ld, LDAPMessage *chain )); LDAP_F( LDAPMessage * ) ldap_next_message LDAP_P(( LDAP *ld, LDAPMessage *msg )); LDAP_F( int ) ldap_count_messages LDAP_P(( LDAP *ld, LDAPMessage *chain )); /* * in references.c: */ LDAP_F( LDAPMessage * ) ldap_first_reference LDAP_P(( LDAP *ld, LDAPMessage *chain )); LDAP_F( LDAPMessage * ) ldap_next_reference LDAP_P(( LDAP *ld, LDAPMessage *ref )); LDAP_F( int ) ldap_count_references LDAP_P(( LDAP *ld, LDAPMessage *chain )); LDAP_F( int ) ldap_parse_reference LDAP_P(( LDAP *ld, LDAPMessage *ref, char ***referralsp, LDAPControl ***serverctrls, int freeit)); /* * in getentry.c: */ LDAP_F( LDAPMessage * ) ldap_first_entry LDAP_P(( LDAP *ld, LDAPMessage *chain )); LDAP_F( LDAPMessage * ) ldap_next_entry LDAP_P(( LDAP *ld, LDAPMessage *entry )); LDAP_F( int ) ldap_count_entries LDAP_P(( LDAP *ld, LDAPMessage *chain )); LDAP_F( int ) ldap_get_entry_controls LDAP_P(( LDAP *ld, LDAPMessage *entry, LDAPControl ***serverctrls)); /* * in addentry.c */ LDAP_F( LDAPMessage * ) ldap_delete_result_entry LDAP_P(( LDAPMessage **list, LDAPMessage *e )); LDAP_F( void ) ldap_add_result_entry LDAP_P(( LDAPMessage **list, LDAPMessage *e )); /* * in getdn.c */ LDAP_F( char * ) ldap_get_dn LDAP_P(( LDAP *ld, LDAPMessage *entry )); typedef struct ldap_ava { struct berval la_attr; struct berval la_value; unsigned la_flags; #define LDAP_AVA_NULL 0x0000U #define LDAP_AVA_STRING 0x0001U #define LDAP_AVA_BINARY 0x0002U #define LDAP_AVA_NONPRINTABLE 0x0004U #define LDAP_AVA_FREE_ATTR 0x0010U #define LDAP_AVA_FREE_VALUE 0x0020U void *la_private; } LDAPAVA; typedef LDAPAVA** LDAPRDN; typedef LDAPRDN* LDAPDN; /* DN formats */ #define LDAP_DN_FORMAT_LDAP 0x0000U #define LDAP_DN_FORMAT_LDAPV3 0x0010U #define LDAP_DN_FORMAT_LDAPV2 0x0020U #define LDAP_DN_FORMAT_DCE 0x0030U #define LDAP_DN_FORMAT_UFN 0x0040U /* dn2str only */ #define LDAP_DN_FORMAT_AD_CANONICAL 0x0050U /* dn2str only */ #define LDAP_DN_FORMAT_LBER 0x00F0U /* for testing only */ #define LDAP_DN_FORMAT_MASK 0x00F0U /* DN flags */ #define LDAP_DN_PRETTY 0x0100U #define LDAP_DN_SKIP 0x0200U #define LDAP_DN_P_NOLEADTRAILSPACES 0x1000U #define LDAP_DN_P_NOSPACEAFTERRDN 0x2000U #define LDAP_DN_PEDANTIC 0xF000U LDAP_F( void ) ldap_rdnfree LDAP_P(( LDAPRDN rdn )); LDAP_F( void ) ldap_dnfree LDAP_P(( LDAPDN dn )); LDAP_F( int ) ldap_bv2dn LDAP_P(( struct berval *bv, LDAPDN *dn, unsigned flags )); LDAP_F( int ) ldap_str2dn LDAP_P(( LDAP_CONST char *str, LDAPDN *dn, unsigned flags )); LDAP_F( int ) ldap_dn2bv LDAP_P(( LDAPDN dn, struct berval *bv, unsigned flags )); LDAP_F( int ) ldap_dn2str LDAP_P(( LDAPDN dn, char **str, unsigned flags )); LDAP_F( int ) ldap_bv2rdn LDAP_P(( struct berval *bv, LDAPRDN *rdn, char **next, unsigned flags )); LDAP_F( int ) ldap_str2rdn LDAP_P(( LDAP_CONST char *str, LDAPRDN *rdn, char **next, unsigned flags )); LDAP_F( int ) ldap_rdn2bv LDAP_P(( LDAPRDN rdn, struct berval *bv, unsigned flags )); LDAP_F( int ) ldap_rdn2str LDAP_P(( LDAPRDN rdn, char **str, unsigned flags )); LDAP_F( int ) ldap_dn_normalize LDAP_P(( LDAP_CONST char *in, unsigned iflags, char **out, unsigned oflags )); LDAP_F( char * ) ldap_dn2ufn LDAP_P(( /* deprecated, use ldap_str2dn/dn2str */ LDAP_CONST char *dn )); LDAP_F( char ** ) ldap_explode_dn LDAP_P(( /* deprecated, ldap_str2dn */ LDAP_CONST char *dn, int notypes )); LDAP_F( char ** ) ldap_explode_rdn LDAP_P(( /* deprecated, ldap_str2rdn */ LDAP_CONST char *rdn, int notypes )); typedef int LDAPDN_rewrite_func LDAP_P(( LDAPDN dn, unsigned flags, void *ctx )); LDAP_F( int ) ldap_X509dn2bv LDAP_P(( void *x509_name, struct berval *dn, LDAPDN_rewrite_func *func, unsigned flags )); LDAP_F( char * ) ldap_dn2dcedn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ LDAP_CONST char *dn )); LDAP_F( char * ) ldap_dcedn2dn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ LDAP_CONST char *dce )); LDAP_F( char * ) ldap_dn2ad_canonical LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ LDAP_CONST char *dn )); LDAP_F( int ) ldap_get_dn_ber LDAP_P(( LDAP *ld, LDAPMessage *e, BerElement **berout, struct berval *dn )); LDAP_F( int ) ldap_get_attribute_ber LDAP_P(( LDAP *ld, LDAPMessage *e, BerElement *ber, struct berval *attr, struct berval **vals )); /* * in getattr.c */ LDAP_F( char * ) ldap_first_attribute LDAP_P(( LDAP *ld, LDAPMessage *entry, BerElement **ber )); LDAP_F( char * ) ldap_next_attribute LDAP_P(( LDAP *ld, LDAPMessage *entry, BerElement *ber )); /* * in getvalues.c */ LDAP_F( struct berval ** ) ldap_get_values_len LDAP_P(( LDAP *ld, LDAPMessage *entry, LDAP_CONST char *target )); LDAP_F( int ) ldap_count_values_len LDAP_P(( struct berval **vals )); LDAP_F( void ) ldap_value_free_len LDAP_P(( struct berval **vals )); #if LDAP_DEPRECATED LDAP_F( char ** ) ldap_get_values LDAP_P(( /* deprecated, use ldap_get_values_len */ LDAP *ld, LDAPMessage *entry, LDAP_CONST char *target )); LDAP_F( int ) ldap_count_values LDAP_P(( /* deprecated, use ldap_count_values_len */ char **vals )); LDAP_F( void ) ldap_value_free LDAP_P(( /* deprecated, use ldap_value_free_len */ char **vals )); #endif /* * in result.c: */ LDAP_F( int ) ldap_result LDAP_P(( LDAP *ld, int msgid, int all, struct timeval *timeout, LDAPMessage **result )); LDAP_F( int ) ldap_msgtype LDAP_P(( LDAPMessage *lm )); LDAP_F( int ) ldap_msgid LDAP_P(( LDAPMessage *lm )); LDAP_F( int ) ldap_msgfree LDAP_P(( LDAPMessage *lm )); LDAP_F( int ) ldap_msgdelete LDAP_P(( LDAP *ld, int msgid )); /* * in search.c: */ LDAP_F( int ) ldap_bv2escaped_filter_value LDAP_P(( struct berval *in, struct berval *out )); LDAP_F( int ) ldap_search_ext LDAP_P(( LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly, LDAPControl **serverctrls, LDAPControl **clientctrls, struct timeval *timeout, int sizelimit, int *msgidp )); LDAP_F( int ) ldap_search_ext_s LDAP_P(( LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly, LDAPControl **serverctrls, LDAPControl **clientctrls, struct timeval *timeout, int sizelimit, LDAPMessage **res )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_search LDAP_P(( /* deprecated, use ldap_search_ext */ LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly )); LDAP_F( int ) ldap_search_s LDAP_P(( /* deprecated, use ldap_search_ext_s */ LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly, LDAPMessage **res )); LDAP_F( int ) ldap_search_st LDAP_P(( /* deprecated, use ldap_search_ext_s */ LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly, struct timeval *timeout, LDAPMessage **res )); #endif /* * in unbind.c */ LDAP_F( int ) ldap_unbind_ext LDAP_P(( LDAP *ld, LDAPControl **serverctrls, LDAPControl **clientctrls)); LDAP_F( int ) ldap_unbind_ext_s LDAP_P(( LDAP *ld, LDAPControl **serverctrls, LDAPControl **clientctrls)); LDAP_F( int ) ldap_destroy LDAP_P(( LDAP *ld)); #if LDAP_DEPRECATED LDAP_F( int ) ldap_unbind LDAP_P(( /* deprecated, use ldap_unbind_ext */ LDAP *ld )); LDAP_F( int ) ldap_unbind_s LDAP_P(( /* deprecated, use ldap_unbind_ext_s */ LDAP *ld )); #endif /* * in filter.c */ LDAP_F( int ) ldap_put_vrFilter LDAP_P(( BerElement *ber, const char *vrf )); /* * in free.c */ LDAP_F( void * ) ldap_memalloc LDAP_P(( ber_len_t s )); LDAP_F( void * ) ldap_memrealloc LDAP_P(( void* p, ber_len_t s )); LDAP_F( void * ) ldap_memcalloc LDAP_P(( ber_len_t n, ber_len_t s )); LDAP_F( void ) ldap_memfree LDAP_P(( void* p )); LDAP_F( void ) ldap_memvfree LDAP_P(( void** v )); LDAP_F( char * ) ldap_strdup LDAP_P(( LDAP_CONST char * )); LDAP_F( void ) ldap_mods_free LDAP_P(( LDAPMod **mods, int freemods )); #if LDAP_DEPRECATED /* * in sort.c (deprecated, use custom code instead) */ typedef int (LDAP_SORT_AD_CMP_PROC) LDAP_P(( /* deprecated */ LDAP_CONST char *left, LDAP_CONST char *right )); typedef int (LDAP_SORT_AV_CMP_PROC) LDAP_P(( /* deprecated */ LDAP_CONST void *left, LDAP_CONST void *right )); LDAP_F( int ) /* deprecated */ ldap_sort_entries LDAP_P(( LDAP *ld, LDAPMessage **chain, LDAP_CONST char *attr, LDAP_SORT_AD_CMP_PROC *cmp )); LDAP_F( int ) /* deprecated */ ldap_sort_values LDAP_P(( LDAP *ld, char **vals, LDAP_SORT_AV_CMP_PROC *cmp )); LDAP_F( int ) /* deprecated */ ldap_sort_strcasecmp LDAP_P(( LDAP_CONST void *a, LDAP_CONST void *b )); #endif /* * in url.c */ LDAP_F( int ) ldap_is_ldap_url LDAP_P(( LDAP_CONST char *url )); LDAP_F( int ) ldap_is_ldaps_url LDAP_P(( LDAP_CONST char *url )); LDAP_F( int ) ldap_is_ldapi_url LDAP_P(( LDAP_CONST char *url )); LDAP_F( int ) ldap_url_parse LDAP_P(( LDAP_CONST char *url, LDAPURLDesc **ludpp )); LDAP_F( char * ) ldap_url_desc2str LDAP_P(( LDAPURLDesc *ludp )); LDAP_F( void ) ldap_free_urldesc LDAP_P(( LDAPURLDesc *ludp )); /* * LDAP Cancel Extended Operation * in cancel.c */ #define LDAP_API_FEATURE_CANCEL 1000 LDAP_F( int ) ldap_cancel LDAP_P(( LDAP *ld, int cancelid, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_cancel_s LDAP_P(( LDAP *ld, int cancelid, LDAPControl **sctrl, LDAPControl **cctrl )); /* * LDAP Turn Extended Operation * in turn.c */ #define LDAP_API_FEATURE_TURN 1000 LDAP_F( int ) ldap_turn LDAP_P(( LDAP *ld, int mutual, LDAP_CONST char* identifier, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_turn_s LDAP_P(( LDAP *ld, int mutual, LDAP_CONST char* identifier, LDAPControl **sctrl, LDAPControl **cctrl )); /* * LDAP Paged Results * in pagectrl.c */ #define LDAP_API_FEATURE_PAGED_RESULTS 2000 LDAP_F( int ) ldap_create_page_control_value LDAP_P(( LDAP *ld, ber_int_t pagesize, struct berval *cookie, struct berval *value )); LDAP_F( int ) ldap_create_page_control LDAP_P(( LDAP *ld, ber_int_t pagesize, struct berval *cookie, int iscritical, LDAPControl **ctrlp )); #if LDAP_DEPRECATED LDAP_F( int ) ldap_parse_page_control LDAP_P(( /* deprecated, use ldap_parse_pageresponse_control */ LDAP *ld, LDAPControl **ctrls, ber_int_t *count, struct berval **cookie )); #endif LDAP_F( int ) ldap_parse_pageresponse_control LDAP_P(( LDAP *ld, LDAPControl *ctrl, ber_int_t *count, struct berval *cookie )); /* * LDAP Server Side Sort * in sortctrl.c */ #define LDAP_API_FEATURE_SERVER_SIDE_SORT 2000 /* structure for a sort-key */ typedef struct ldapsortkey { char *attributeType; char *orderingRule; int reverseOrder; } LDAPSortKey; LDAP_F( int ) ldap_create_sort_keylist LDAP_P(( LDAPSortKey ***sortKeyList, char *keyString )); LDAP_F( void ) ldap_free_sort_keylist LDAP_P(( LDAPSortKey **sortkeylist )); LDAP_F( int ) ldap_create_sort_control_value LDAP_P(( LDAP *ld, LDAPSortKey **keyList, struct berval *value )); LDAP_F( int ) ldap_create_sort_control LDAP_P(( LDAP *ld, LDAPSortKey **keyList, int iscritical, LDAPControl **ctrlp )); LDAP_F( int ) ldap_parse_sortresponse_control LDAP_P(( LDAP *ld, LDAPControl *ctrl, ber_int_t *result, char **attribute )); /* * LDAP Virtual List View * in vlvctrl.c */ #define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 2000 /* structure for virtual list */ typedef struct ldapvlvinfo { ber_int_t ldvlv_version; ber_int_t ldvlv_before_count; ber_int_t ldvlv_after_count; ber_int_t ldvlv_offset; ber_int_t ldvlv_count; struct berval * ldvlv_attrvalue; struct berval * ldvlv_context; void * ldvlv_extradata; } LDAPVLVInfo; LDAP_F( int ) ldap_create_vlv_control_value LDAP_P(( LDAP *ld, LDAPVLVInfo *ldvlistp, struct berval *value)); LDAP_F( int ) ldap_create_vlv_control LDAP_P(( LDAP *ld, LDAPVLVInfo *ldvlistp, LDAPControl **ctrlp )); LDAP_F( int ) ldap_parse_vlvresponse_control LDAP_P(( LDAP *ld, LDAPControl *ctrls, ber_int_t *target_posp, ber_int_t *list_countp, struct berval **contextp, int *errcodep )); /* * LDAP Who Am I? * in whoami.c */ #define LDAP_API_FEATURE_WHOAMI 1000 LDAP_F( int ) ldap_parse_whoami LDAP_P(( LDAP *ld, LDAPMessage *res, struct berval **authzid )); LDAP_F( int ) ldap_whoami LDAP_P(( LDAP *ld, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_whoami_s LDAP_P(( LDAP *ld, struct berval **authzid, LDAPControl **sctrls, LDAPControl **cctrls )); /* * LDAP Password Modify * in passwd.c */ #define LDAP_API_FEATURE_PASSWD_MODIFY 1000 LDAP_F( int ) ldap_parse_passwd LDAP_P(( LDAP *ld, LDAPMessage *res, struct berval *newpasswd )); LDAP_F( int ) ldap_passwd LDAP_P(( LDAP *ld, struct berval *user, struct berval *oldpw, struct berval *newpw, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_passwd_s LDAP_P(( LDAP *ld, struct berval *user, struct berval *oldpw, struct berval *newpw, struct berval *newpasswd, LDAPControl **sctrls, LDAPControl **cctrls )); #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST /* * LDAP Password Policy controls * in ppolicy.c */ #define LDAP_API_FEATURE_PASSWORD_POLICY 1000 typedef enum passpolicyerror_enum { PP_passwordExpired = 0, PP_accountLocked = 1, PP_changeAfterReset = 2, PP_passwordModNotAllowed = 3, PP_mustSupplyOldPassword = 4, PP_insufficientPasswordQuality = 5, PP_passwordTooShort = 6, PP_passwordTooYoung = 7, PP_passwordInHistory = 8, PP_noError = 65535 } LDAPPasswordPolicyError; LDAP_F( int ) ldap_create_passwordpolicy_control LDAP_P(( LDAP *ld, LDAPControl **ctrlp )); LDAP_F( int ) ldap_parse_passwordpolicy_control LDAP_P(( LDAP *ld, LDAPControl *ctrl, ber_int_t *expirep, ber_int_t *gracep, LDAPPasswordPolicyError *errorp )); LDAP_F( const char * ) ldap_passwordpolicy_err2txt LDAP_P(( LDAPPasswordPolicyError )); #endif /* LDAP_CONTROL_PASSWORDPOLICYREQUEST */ /* * LDAP Dynamic Directory Services Refresh -- RFC 2589 * in dds.c */ #define LDAP_API_FEATURE_REFRESH 1000 LDAP_F( int ) ldap_parse_refresh LDAP_P(( LDAP *ld, LDAPMessage *res, ber_int_t *newttl )); LDAP_F( int ) ldap_refresh LDAP_P(( LDAP *ld, struct berval *dn, ber_int_t ttl, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_refresh_s LDAP_P(( LDAP *ld, struct berval *dn, ber_int_t ttl, ber_int_t *newttl, LDAPControl **sctrls, LDAPControl **cctrls )); /* * LDAP Transactions */ #ifdef LDAP_X_TXN LDAP_F( int ) ldap_txn_start LDAP_P(( LDAP *ld, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_txn_start_s LDAP_P(( LDAP *ld, LDAPControl **sctrl, LDAPControl **cctrl, struct berval **rettxnid )); LDAP_F( int ) ldap_txn_end LDAP_P(( LDAP *ld, int commit, struct berval *txnid, LDAPControl **sctrls, LDAPControl **cctrls, int *msgidp )); LDAP_F( int ) ldap_txn_end_s LDAP_P(( LDAP *ld, int commit, struct berval *txnid, LDAPControl **sctrl, LDAPControl **cctrl, int *retidp )); #endif /* * in ldap_sync.c */ /* * initialize the persistent search structure */ LDAP_F( ldap_sync_t * ) ldap_sync_initialize LDAP_P(( ldap_sync_t *ls )); /* * destroy the persistent search structure */ LDAP_F( void ) ldap_sync_destroy LDAP_P(( ldap_sync_t *ls, int freeit )); /* * initialize a refreshOnly sync */ LDAP_F( int ) ldap_sync_init LDAP_P(( ldap_sync_t *ls, int mode )); /* * initialize a refreshOnly sync */ LDAP_F( int ) ldap_sync_init_refresh_only LDAP_P(( ldap_sync_t *ls )); /* * initialize a refreshAndPersist sync */ LDAP_F( int ) ldap_sync_init_refresh_and_persist LDAP_P(( ldap_sync_t *ls )); /* * poll for new responses */ LDAP_F( int ) ldap_sync_poll LDAP_P(( ldap_sync_t *ls )); #ifdef LDAP_CONTROL_X_SESSION_TRACKING /* * in stctrl.c */ LDAP_F( int ) ldap_create_session_tracking_value LDAP_P(( LDAP *ld, char *sessionSourceIp, char *sessionSourceName, char *formatOID, struct berval *sessionTrackingIdentifier, struct berval *value )); LDAP_F( int ) ldap_create_session_tracking_control LDAP_P(( LDAP *ld, char *sessionSourceIp, char *sessionSourceName, char *formatOID, struct berval *sessionTrackingIdentifier, LDAPControl **ctrlp )); LDAP_F( int ) ldap_parse_session_tracking_control LDAP_P(( LDAP *ld, LDAPControl *ctrl, struct berval *ip, struct berval *name, struct berval *oid, struct berval *id )); #endif /* LDAP_CONTROL_X_SESSION_TRACKING */ /* * in assertion.c */ LDAP_F (int) ldap_create_assertion_control_value LDAP_P(( LDAP *ld, char *assertion, struct berval *value )); LDAP_F( int ) ldap_create_assertion_control LDAP_P(( LDAP *ld, char *filter, int iscritical, LDAPControl **ctrlp )); /* * in deref.c */ typedef struct LDAPDerefSpec { char *derefAttr; char **attributes; } LDAPDerefSpec; typedef struct LDAPDerefVal { char *type; BerVarray vals; struct LDAPDerefVal *next; } LDAPDerefVal; typedef struct LDAPDerefRes { char *derefAttr; struct berval derefVal; LDAPDerefVal *attrVals; struct LDAPDerefRes *next; } LDAPDerefRes; LDAP_F( int ) ldap_create_deref_control_value LDAP_P(( LDAP *ld, LDAPDerefSpec *ds, struct berval *value )); LDAP_F( int ) ldap_create_deref_control LDAP_P(( LDAP *ld, LDAPDerefSpec *ds, int iscritical, LDAPControl **ctrlp )); LDAP_F( void ) ldap_derefresponse_free LDAP_P(( LDAPDerefRes *dr )); LDAP_F( int ) ldap_parse_derefresponse_control LDAP_P(( LDAP *ld, LDAPControl *ctrl, LDAPDerefRes **drp )); LDAP_F( int ) ldap_parse_deref_control LDAP_P(( LDAP *ld, LDAPControl **ctrls, LDAPDerefRes **drp )); LDAP_END_DECL #endif /* _LDAP_H */ 07070100031aa5000081a400000000000000000000000151244f4700000716000000b600010002ffffffffffffffff0000002700000000root/usr/local/include/ldap_features.h/* include/ldap_features.h. Generated from ldap_features.hin by configure. */ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* * LDAP Features */ #ifndef _LDAP_FEATURES_H #define _LDAP_FEATURES_H 1 /* OpenLDAP API version macros */ #define LDAP_VENDOR_VERSION 20433 #define LDAP_VENDOR_VERSION_MAJOR 2 #define LDAP_VENDOR_VERSION_MINOR 4 #define LDAP_VENDOR_VERSION_PATCH 33 /* ** WORK IN PROGRESS! ** ** OpenLDAP reentrancy/thread-safeness should be dynamically ** checked using ldap_get_option(). ** ** The -lldap implementation is not thread-safe. ** ** The -lldap_r implementation is: ** LDAP_API_FEATURE_THREAD_SAFE (basic thread safety) ** but also be: ** LDAP_API_FEATURE_SESSION_THREAD_SAFE ** LDAP_API_FEATURE_OPERATION_THREAD_SAFE ** ** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ** can be used to determine if -lldap_r is available at compile ** time. You must define LDAP_THREAD_SAFE if and only if you ** link with -lldap_r. ** ** If you fail to define LDAP_THREAD_SAFE when linking with ** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap, ** provided header definations and declarations may be incorrect. ** */ /* is -lldap_r available or not */ #define LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE 1 /* LDAP v2 Referrals */ /* #undef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ #endif /* LDAP_FEATURES */ 07070100031aa9000081a400000000000000000000000151244f47000095cf000000b600010002ffffffffffffffff0000002600000000root/usr/local/include/slapi-plugin.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * Portions Copyright 1997,2002,2003 IBM Corporation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* * This header is used in development of SLAPI plugins for * OpenLDAP slapd(8) and other directory servers supporting * this interface. Your portability mileage may vary. */ #ifndef _SLAPI_PLUGIN_H #define _SLAPI_PLUGIN_H #include typedef struct slapi_pblock Slapi_PBlock; typedef struct slapi_entry Slapi_Entry; typedef struct slapi_attr Slapi_Attr; typedef struct slapi_value Slapi_Value; typedef struct slapi_valueset Slapi_ValueSet; typedef struct slapi_filter Slapi_Filter; typedef struct BackendDB Slapi_Backend; typedef struct Operation Slapi_Operation; typedef struct Connection Slapi_Connection; typedef struct slapi_dn Slapi_DN; typedef struct slapi_rdn Slapi_RDN; typedef struct slapi_mod Slapi_Mod; typedef struct slapi_mods Slapi_Mods; typedef struct slapi_componentid Slapi_ComponentId; #define SLAPI_ATTR_UNIQUEID "entryUUID" #define SLAPI_ATTR_OBJECTCLASS "objectClass" /* pblock routines */ int slapi_pblock_get( Slapi_PBlock *pb, int arg, void *value ); int slapi_pblock_set( Slapi_PBlock *pb, int arg, void *value ); Slapi_PBlock *slapi_pblock_new( void ); void slapi_pblock_destroy( Slapi_PBlock *pb ); /* entry/attr/dn routines */ Slapi_Entry *slapi_str2entry( char *s, int flags ); #define SLAPI_STR2ENTRY_REMOVEDUPVALS 1 #define SLAPI_STR2ENTRY_ADDRDNVALS 2 #define SLAPI_STR2ENTRY_BIGENTRY 4 #define SLAPI_STR2ENTRY_TOMBSTONE_CHECK 8 #define SLAPI_STR2ENTRY_IGNORE_STATE 16 #define SLAPI_STR2ENTRY_INCLUDE_VERSION_STR 32 #define SLAPI_STR2ENTRY_EXPAND_OBJECTCLASSES 64 #define SLAPI_STR2ENTRY_NOT_WELL_FORMED_LDIF 128 char *slapi_entry2str( Slapi_Entry *e, int *len ); char *slapi_entry_get_dn( Slapi_Entry *e ); int slapi_x_entry_get_id( Slapi_Entry *e ); void slapi_entry_set_dn( Slapi_Entry *e, char *dn ); Slapi_Entry *slapi_entry_dup( Slapi_Entry *e ); int slapi_entry_attr_delete( Slapi_Entry *e, char *type ); Slapi_Entry *slapi_entry_alloc(); void slapi_entry_free( Slapi_Entry *e ); int slapi_entry_attr_merge( Slapi_Entry *e, char *type, struct berval **vals ); int slapi_entry_attr_find( Slapi_Entry *e, char *type, Slapi_Attr **attr ); char *slapi_entry_attr_get_charptr( const Slapi_Entry *e, const char *type ); int slapi_entry_attr_get_int( const Slapi_Entry *e, const char *type ); long slapi_entry_attr_get_long( const Slapi_Entry *e, const char *type ); unsigned int slapi_entry_attr_get_uint( const Slapi_Entry *e, const char *type ); unsigned long slapi_entry_attr_get_ulong( const Slapi_Entry *e, const char *type ); int slapi_attr_get_values( Slapi_Attr *attr, struct berval ***vals ); char *slapi_dn_normalize( char *dn ); char *slapi_dn_normalize_case( char *dn ); int slapi_dn_issuffix( char *dn, char *suffix ); char *slapi_dn_beparent( Slapi_PBlock *pb, const char *dn ); int slapi_dn_isbesuffix( Slapi_PBlock *pb, char *dn ); char *slapi_dn_parent( const char *dn ); int slapi_dn_isparent( const char *parentdn, const char *childdn ); char *slapi_dn_ignore_case( char *dn ); int slapi_rdn2typeval( char *rdn, char **type, struct berval *bv ); char *slapi_dn_plus_rdn(const char *dn, const char *rdn); /* DS 5.x SLAPI */ int slapi_access_allowed( Slapi_PBlock *pb, Slapi_Entry *e, char *attr, struct berval *val, int access ); int slapi_acl_check_mods( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod **mods, char **errbuf ); Slapi_Attr *slapi_attr_new( void ); Slapi_Attr *slapi_attr_init( Slapi_Attr *a, const char *type ); void slapi_attr_free( Slapi_Attr **a ); Slapi_Attr *slapi_attr_dup( const Slapi_Attr *attr ); int slapi_attr_add_value( Slapi_Attr *a, const Slapi_Value *v ); int slapi_attr_type2plugin( const char *type, void **pi ); int slapi_attr_get_type( const Slapi_Attr *attr, char **type ); int slapi_attr_get_oid_copy( const Slapi_Attr *attr, char **oidp ); int slapi_attr_get_flags( const Slapi_Attr *attr, unsigned long *flags ); int slapi_attr_flag_is_set( const Slapi_Attr *attr, unsigned long flag ); int slapi_attr_value_cmp( const Slapi_Attr *attr, const struct berval *v1, const struct berval *v2 ); int slapi_attr_value_find( const Slapi_Attr *a, struct berval *v ); #define SLAPI_TYPE_CMP_EXACT 0 #define SLAPI_TYPE_CMP_BASE 1 #define SLAPI_TYPE_CMP_SUBTYPE 2 int slapi_attr_type_cmp( const char *t1, const char *t2, int opt ); int slapi_attr_types_equivalent( const char *t1, const char *t2 ); int slapi_attr_first_value( Slapi_Attr *a, Slapi_Value **v ); int slapi_attr_next_value( Slapi_Attr *a, int hint, Slapi_Value **v ); int slapi_attr_get_numvalues( const Slapi_Attr *a, int *numValues ); int slapi_attr_get_valueset( const Slapi_Attr *a, Slapi_ValueSet **vs ); int slapi_attr_get_bervals_copy( Slapi_Attr *a, struct berval ***vals ); int slapi_entry_attr_hasvalue( Slapi_Entry *e, const char *type, const char *value ); int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); void slapi_entry_attr_set_charptr(Slapi_Entry* e, const char *type, const char *value); void slapi_entry_attr_set_int( Slapi_Entry* e, const char *type, int l); void slapi_entry_attr_set_uint( Slapi_Entry* e, const char *type, unsigned int l); void slapi_entry_attr_set_long(Slapi_Entry* e, const char *type, long l); void slapi_entry_attr_set_ulong(Slapi_Entry* e, const char *type, unsigned long l); int slapi_entry_has_children(const Slapi_Entry *e); size_t slapi_entry_size(Slapi_Entry *e); int slapi_is_rootdse( const char *dn ); int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); int slapi_entry_add_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); int slapi_entry_add_valueset(Slapi_Entry *e, const char *type, Slapi_ValueSet *vs); int slapi_entry_delete_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); int slapi_entry_merge_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); int slapi_entry_attr_replace_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals ); int slapi_entry_add_value(Slapi_Entry *e, const char *type, const Slapi_Value *value); int slapi_entry_add_string(Slapi_Entry *e, const char *type, const char *value); int slapi_entry_delete_string(Slapi_Entry *e, const char *type, const char *value); int slapi_entry_first_attr( const Slapi_Entry *e, Slapi_Attr **attr ); int slapi_entry_next_attr( const Slapi_Entry *e, Slapi_Attr *prevattr, Slapi_Attr **attr ); const char *slapi_entry_get_uniqueid( const Slapi_Entry *e ); void slapi_entry_set_uniqueid( Slapi_Entry *e, char *uniqueid ); int slapi_entry_schema_check( Slapi_PBlock *pb, Slapi_Entry *e ); int slapi_entry_rdn_values_present( const Slapi_Entry *e ); int slapi_entry_add_rdn_values( Slapi_Entry *e ); char *slapi_attr_syntax_normalize( const char *s ); Slapi_Value *slapi_value_new( void ); Slapi_Value *slapi_value_new_berval(const struct berval *bval); Slapi_Value *slapi_value_new_value(const Slapi_Value *v); Slapi_Value *slapi_value_new_string(const char *s); Slapi_Value *slapi_value_init(Slapi_Value *v); Slapi_Value *slapi_value_init_berval(Slapi_Value *v, struct berval *bval); Slapi_Value *slapi_value_init_string(Slapi_Value *v, const char *s); Slapi_Value *slapi_value_dup(const Slapi_Value *v); void slapi_value_free(Slapi_Value **value); const struct berval *slapi_value_get_berval( const Slapi_Value *value ); Slapi_Value *slapi_value_set_berval( Slapi_Value *value, const struct berval *bval ); Slapi_Value *slapi_value_set_value( Slapi_Value *value, const Slapi_Value *vfrom); Slapi_Value *slapi_value_set( Slapi_Value *value, void *val, unsigned long len); int slapi_value_set_string(Slapi_Value *value, const char *strVal); int slapi_value_set_int(Slapi_Value *value, int intVal); const char*slapi_value_get_string(const Slapi_Value *value); int slapi_value_get_int(const Slapi_Value *value); unsigned int slapi_value_get_uint(const Slapi_Value *value); long slapi_value_get_long(const Slapi_Value *value); unsigned long slapi_value_get_ulong(const Slapi_Value *value); size_t slapi_value_get_length(const Slapi_Value *value); int slapi_value_compare(const Slapi_Attr *a, const Slapi_Value *v1, const Slapi_Value *v2); Slapi_ValueSet *slapi_valueset_new( void ); void slapi_valueset_free(Slapi_ValueSet *vs); void slapi_valueset_init(Slapi_ValueSet *vs); void slapi_valueset_done(Slapi_ValueSet *vs); void slapi_valueset_add_value(Slapi_ValueSet *vs, const Slapi_Value *addval); int slapi_valueset_first_value( Slapi_ValueSet *vs, Slapi_Value **v ); int slapi_valueset_next_value( Slapi_ValueSet *vs, int index, Slapi_Value **v); int slapi_valueset_count( const Slapi_ValueSet *vs); void slapi_valueset_set_valueset(Slapi_ValueSet *vs1, const Slapi_ValueSet *vs2); /* DNs */ Slapi_DN *slapi_sdn_new( void ); Slapi_DN *slapi_sdn_new_dn_byval( const char *dn ); Slapi_DN *slapi_sdn_new_ndn_byval( const char *ndn ); Slapi_DN *slapi_sdn_new_dn_byref( const char *dn ); Slapi_DN *slapi_sdn_new_ndn_byref( const char *ndn ); Slapi_DN *slapi_sdn_new_dn_passin( const char *dn ); Slapi_DN *slapi_sdn_set_dn_byval( Slapi_DN *sdn, const char *dn ); Slapi_DN *slapi_sdn_set_dn_byref( Slapi_DN *sdn, const char *dn ); Slapi_DN *slapi_sdn_set_dn_passin( Slapi_DN *sdn, const char *dn ); Slapi_DN *slapi_sdn_set_ndn_byval( Slapi_DN *sdn, const char *ndn ); Slapi_DN *slapi_sdn_set_ndn_byref( Slapi_DN *sdn, const char *ndn ); void slapi_sdn_done( Slapi_DN *sdn ); void slapi_sdn_free( Slapi_DN **sdn ); const char * slapi_sdn_get_dn( const Slapi_DN *sdn ); const char * slapi_sdn_get_ndn( const Slapi_DN *sdn ); void slapi_sdn_get_parent( const Slapi_DN *sdn,Slapi_DN *sdn_parent ); void slapi_sdn_get_backend_parent( const Slapi_DN *sdn, Slapi_DN *sdn_parent, const Slapi_Backend *backend ); Slapi_DN * slapi_sdn_dup( const Slapi_DN *sdn ); void slapi_sdn_copy( const Slapi_DN *from, Slapi_DN *to ); int slapi_sdn_compare( const Slapi_DN *sdn1, const Slapi_DN *sdn2 ); int slapi_sdn_isempty( const Slapi_DN *sdn ); int slapi_sdn_issuffix(const Slapi_DN *sdn, const Slapi_DN *suffixsdn ); int slapi_sdn_isparent( const Slapi_DN *parent, const Slapi_DN *child ); int slapi_sdn_isgrandparent( const Slapi_DN *parent, const Slapi_DN *child ); int slapi_sdn_get_ndn_len( const Slapi_DN *sdn ); int slapi_sdn_scope_test( const Slapi_DN *dn, const Slapi_DN *base, int scope ); void slapi_sdn_get_rdn( const Slapi_DN *sdn,Slapi_RDN *rdn ); Slapi_DN *slapi_sdn_set_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn ); Slapi_DN *slapi_sdn_set_parent( Slapi_DN *sdn, const Slapi_DN *parentdn ); int slapi_sdn_is_rdn_component( const Slapi_DN *rdn, const Slapi_Attr *a, const Slapi_Value *v ); char * slapi_moddn_get_newdn( Slapi_DN *dn_olddn, char *newrdn, char *newsuperiordn ); /* RDNs */ Slapi_RDN *slapi_rdn_new( void ); Slapi_RDN *slapi_rdn_new_dn( const char *dn ); Slapi_RDN *slapi_rdn_new_sdn( const Slapi_DN *sdn ); Slapi_RDN *slapi_rdn_new_rdn( const Slapi_RDN *fromrdn ); void slapi_rdn_init( Slapi_RDN *rdn ); void slapi_rdn_init_dn( Slapi_RDN *rdn, const char *dn ); void slapi_rdn_init_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn ); void slapi_rdn_init_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn ); void slapi_rdn_set_dn( Slapi_RDN *rdn, const char *dn ); void slapi_rdn_set_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn ); void slapi_rdn_set_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn ); void slapi_rdn_free( Slapi_RDN **rdn ); void slapi_rdn_done( Slapi_RDN *rdn ); int slapi_rdn_get_first( Slapi_RDN *rdn, char **type, char **value ); int slapi_rdn_get_next( Slapi_RDN *rdn, int index, char **type, char **value ); int slapi_rdn_get_index( Slapi_RDN *rdn, const char *type, const char *value, size_t length ); int slapi_rdn_get_index_attr( Slapi_RDN *rdn, const char *type, char **value ); int slapi_rdn_contains( Slapi_RDN *rdn, const char *type, const char *value,size_t length ); int slapi_rdn_contains_attr( Slapi_RDN *rdn, const char *type, char **value ); int slapi_rdn_add( Slapi_RDN *rdn, const char *type, const char *value ); int slapi_rdn_remove_index( Slapi_RDN *rdn, int atindex ); int slapi_rdn_remove( Slapi_RDN *rdn, const char *type, const char *value, size_t length ); int slapi_rdn_remove_attr( Slapi_RDN *rdn, const char *type ); int slapi_rdn_isempty( const Slapi_RDN *rdn ); int slapi_rdn_get_num_components( Slapi_RDN *rdn ); int slapi_rdn_compare( Slapi_RDN *rdn1, Slapi_RDN *rdn2 ); const char *slapi_rdn_get_rdn( const Slapi_RDN *rdn ); const char *slapi_rdn_get_nrdn( const Slapi_RDN *rdn ); Slapi_DN *slapi_sdn_add_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn ); /* locks and synchronization */ typedef struct slapi_mutex Slapi_Mutex; typedef struct slapi_condvar Slapi_CondVar; Slapi_Mutex *slapi_new_mutex( void ); void slapi_destroy_mutex( Slapi_Mutex *mutex ); void slapi_lock_mutex( Slapi_Mutex *mutex ); int slapi_unlock_mutex( Slapi_Mutex *mutex ); Slapi_CondVar *slapi_new_condvar( Slapi_Mutex *mutex ); void slapi_destroy_condvar( Slapi_CondVar *cvar ); int slapi_wait_condvar( Slapi_CondVar *cvar, struct timeval *timeout ); int slapi_notify_condvar( Slapi_CondVar *cvar, int notify_all ); /* thread-safe LDAP connections */ LDAP *slapi_ldap_init( char *ldaphost, int ldapport, int secure, int shared ); void slapi_ldap_unbind( LDAP *ld ); char *slapi_ch_malloc( unsigned long size ); void slapi_ch_free( void **ptr ); void slapi_ch_free_string( char **ptr ); char *slapi_ch_calloc( unsigned long nelem, unsigned long size ); char *slapi_ch_realloc( char *block, unsigned long size ); char *slapi_ch_strdup( const char *s ); void slapi_ch_array_free( char **arrayp ); struct berval *slapi_ch_bvdup(const struct berval *v); struct berval **slapi_ch_bvecdup(const struct berval **v); /* LDAP V3 routines */ int slapi_control_present( LDAPControl **controls, char *oid, struct berval **val, int *iscritical); void slapi_register_supported_control(char *controloid, unsigned long controlops); #define SLAPI_OPERATION_BIND 0x00000001L #define SLAPI_OPERATION_UNBIND 0x00000002L #define SLAPI_OPERATION_SEARCH 0x00000004L #define SLAPI_OPERATION_MODIFY 0x00000008L #define SLAPI_OPERATION_ADD 0x00000010L #define SLAPI_OPERATION_DELETE 0x00000020L #define SLAPI_OPERATION_MODDN 0x00000040L #define SLAPI_OPERATION_MODRDN SLAPI_OPERATION_MODDN #define SLAPI_OPERATION_COMPARE 0x00000080L #define SLAPI_OPERATION_ABANDON 0x00000100L #define SLAPI_OPERATION_EXTENDED 0x00000200L #define SLAPI_OPERATION_ANY 0xFFFFFFFFL #define SLAPI_OPERATION_NONE 0x00000000L int slapi_get_supported_controls(char ***ctrloidsp, unsigned long **ctrlopsp); LDAPControl *slapi_dup_control(LDAPControl *ctrl); void slapi_register_supported_saslmechanism(char *mechanism); char **slapi_get_supported_saslmechanisms(); char **slapi_get_supported_extended_ops(void); /* operation */ int slapi_op_abandoned( Slapi_PBlock *pb ); unsigned long slapi_op_get_type(Slapi_Operation * op); void slapi_operation_set_flag(Slapi_Operation *op, unsigned long flag); void slapi_operation_clear_flag(Slapi_Operation *op, unsigned long flag); int slapi_operation_is_flag_set(Slapi_Operation *op, unsigned long flag); char *slapi_op_type_to_string(unsigned long type); /* send ldap result back */ void slapi_send_ldap_result( Slapi_PBlock *pb, int err, char *matched, char *text, int nentries, struct berval **urls ); int slapi_send_ldap_search_entry( Slapi_PBlock *pb, Slapi_Entry *e, LDAPControl **ectrls, char **attrs, int attrsonly ); int slapi_send_ldap_search_reference( Slapi_PBlock *pb, Slapi_Entry *e, struct berval **urls, LDAPControl **ectrls, struct berval **v2refs ); /* filter routines */ Slapi_Filter *slapi_str2filter( char *str ); Slapi_Filter *slapi_filter_dup( Slapi_Filter *f ); void slapi_filter_free( Slapi_Filter *f, int recurse ); int slapi_filter_get_choice( Slapi_Filter *f); int slapi_filter_get_ava( Slapi_Filter *f, char **type, struct berval **bval ); Slapi_Filter *slapi_filter_list_first( Slapi_Filter *f ); Slapi_Filter *slapi_filter_list_next( Slapi_Filter *f, Slapi_Filter *fprev ); int slapi_filter_get_attribute_type( Slapi_Filter *f, char **type ); int slapi_x_filter_set_attribute_type( Slapi_Filter *f, const char *type ); int slapi_filter_get_subfilt( Slapi_Filter *f, char **type, char **initial, char ***any, char **final ); Slapi_Filter *slapi_filter_join( int ftype, Slapi_Filter *f1, Slapi_Filter *f2); int slapi_x_filter_append( int choice, Slapi_Filter **pContainingFilter, Slapi_Filter **pNextFilter, Slapi_Filter *filterToAppend ); int slapi_filter_test( Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Filter *f, int verify_access ); int slapi_filter_test_simple( Slapi_Entry *e, Slapi_Filter *f ); typedef int (*FILTER_APPLY_FN)( Slapi_Filter *f, void *arg ); int slapi_filter_apply( Slapi_Filter *f, FILTER_APPLY_FN fn, void *arg, int *error_code ); #define SLAPI_FILTER_SCAN_STOP -1 /* set by callback */ #define SLAPI_FILTER_SCAN_ERROR -2 /* set by callback */ #define SLAPI_FILTER_SCAN_NOMORE 0 /* set by callback */ #define SLAPI_FILTER_SCAN_CONTINUE 1 /* set by callback */ #define SLAPI_FILTER_UNKNOWN_FILTER_TYPE 2 /* set by slapi_filter_apply() */ /* internal add/delete/search/modify routines */ Slapi_PBlock *slapi_search_internal( char *base, int scope, char *filter, LDAPControl **controls, char **attrs, int attrsonly ); Slapi_PBlock *slapi_modify_internal( char *dn, LDAPMod **mods, LDAPControl **controls, int log_change ); Slapi_PBlock *slapi_add_internal( char * dn, LDAPMod **attrs, LDAPControl **controls, int log_changes ); Slapi_PBlock *slapi_add_entry_internal( Slapi_Entry * e, LDAPControl **controls, int log_change ); Slapi_PBlock *slapi_delete_internal( char * dn, LDAPControl **controls, int log_change ); Slapi_PBlock *slapi_modrdn_internal( char * olddn, char * newrdn, int deloldrdn, LDAPControl **controls, int log_change ); Slapi_PBlock *slapi_rename_internal( const char * olddn, const char *newrdn, const char *newsuperior, int delolrdn, LDAPControl **controls, int log_change ); void slapi_free_search_results_internal(Slapi_PBlock *pb); /* new internal add/delete/search/modify routines */ typedef void (*plugin_result_callback)( int rc, void *callback_data ); typedef int (*plugin_referral_entry_callback)( char * referral, void *callback_data ); typedef int (*plugin_search_entry_callback)( Slapi_Entry *e, void *callback_data ); void slapi_free_search_results_internal( Slapi_PBlock *pb ); #define SLAPI_OP_FLAG_NEVER_CHAIN 0x0800 int slapi_search_internal_pb( Slapi_PBlock *pb ); int slapi_search_internal_callback_pb( Slapi_PBlock *pb, void *callback_data, plugin_result_callback prc, plugin_search_entry_callback psec, plugin_referral_entry_callback prec ); int slapi_add_internal_pb( Slapi_PBlock *pb ); int slapi_modify_internal_pb( Slapi_PBlock *pb ); int slapi_modrdn_internal_pb( Slapi_PBlock *pb ); int slapi_delete_internal_pb( Slapi_PBlock *pb ); int slapi_seq_internal_callback_pb(Slapi_PBlock *pb, void *callback_data, plugin_result_callback res_callback, plugin_search_entry_callback srch_callback, plugin_referral_entry_callback ref_callback); void slapi_search_internal_set_pb( Slapi_PBlock *pb, const char *base, int scope, const char *filter, char **attrs, int attrsonly, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags ); void slapi_add_entry_internal_set_pb( Slapi_PBlock *pb, Slapi_Entry *e, LDAPControl **controls, Slapi_ComponentId *plugin_identity, int operation_flags ); int slapi_add_internal_set_pb( Slapi_PBlock *pb, const char *dn, LDAPMod **attrs, LDAPControl **controls, Slapi_ComponentId *plugin_identity, int operation_flags ); void slapi_modify_internal_set_pb( Slapi_PBlock *pb, const char *dn, LDAPMod **mods, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags ); void slapi_rename_internal_set_pb( Slapi_PBlock *pb, const char *olddn, const char *newrdn, const char *newsuperior, int deloldrdn, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags ); void slapi_delete_internal_set_pb( Slapi_PBlock *pb, const char *dn, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags ); void slapi_seq_internal_set_pb( Slapi_PBlock *pb, char *ibase, int type, char *attrname, char *val, char **attrs, int attrsonly, LDAPControl **controls, Slapi_ComponentId *plugin_identity, int operation_flags ); /* connection related routines */ int slapi_is_connection_ssl(Slapi_PBlock *pPB, int *isSSL); int slapi_get_client_port(Slapi_PBlock *pPB, int *fromPort); int slapi_get_client_ip(Slapi_PBlock *pb, char **clientIP); void slapi_free_client_ip(char **clientIP); /* computed attributes */ typedef struct _computed_attr_context computed_attr_context; typedef int (*slapi_compute_output_t)(computed_attr_context *c, Slapi_Attr *a, Slapi_Entry *e); typedef int (*slapi_compute_callback_t)(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn); typedef int (*slapi_search_rewrite_callback_t)(Slapi_PBlock *pb); int slapi_compute_add_evaluator(slapi_compute_callback_t function); int slapi_compute_add_search_rewriter(slapi_search_rewrite_callback_t function); int compute_rewrite_search_filter(Slapi_PBlock *pb); int compute_evaluator(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn); int slapi_x_compute_get_pblock(computed_attr_context *c, Slapi_PBlock **pb); /* backend routines */ void slapi_be_set_readonly( Slapi_Backend *be, int readonly ); int slapi_be_get_readonly( Slapi_Backend *be ); const char *slapi_x_be_get_updatedn( Slapi_Backend *be ); Slapi_Backend *slapi_be_select( const Slapi_DN *sdn ); /* ACL plugins; only SLAPI_PLUGIN_ACL_ALLOW_ACCESS supported now */ typedef int (*slapi_acl_callback_t)(Slapi_PBlock *pb, Slapi_Entry *e, const char *attr, struct berval *berval, int access, void *state); /* object extensions */ typedef void *(*slapi_extension_constructor_fnptr)(void *object, void *parent); typedef void (*slapi_extension_destructor_fnptr)(void *extension, void *object, void *parent); int slapi_register_object_extension( const char *pluginname, const char *objectname, slapi_extension_constructor_fnptr constructor, slapi_extension_destructor_fnptr destructor, int *objecttype, int *extensionhandle); #define SLAPI_EXT_CONNECTION "Connection" #define SLAPI_EXT_OPERATION "Operation" #define SLAPI_EXT_ENTRY "Entry" #define SLAPI_EXT_MTNODE "Mapping Tree Node" void *slapi_get_object_extension(int objecttype, void *object, int extensionhandle); void slapi_set_object_extension(int objecttype, void *object, int extensionhandle, void *extension); int slapi_x_backend_get_flags( const Slapi_Backend *be, unsigned long *flags ); /* parameters currently supported */ /* * Attribute flags returned by slapi_attr_get_flags() */ #define SLAPI_ATTR_FLAG_SINGLE 0x0001 #define SLAPI_ATTR_FLAG_OPATTR 0x0002 #define SLAPI_ATTR_FLAG_READONLY 0x0004 #define SLAPI_ATTR_FLAG_STD_ATTR SLAPI_ATTR_FLAG_READONLY #define SLAPI_ATTR_FLAG_OBSOLETE 0x0040 #define SLAPI_ATTR_FLAG_COLLECTIVE 0x0080 #define SLAPI_ATTR_FLAG_NOUSERMOD 0x0100 /* * Backend flags returned by slapi_x_backend_get_flags() */ #define SLAPI_BACKEND_FLAG_NOLASTMOD 0x0001U #define SLAPI_BACKEND_FLAG_NO_SCHEMA_CHECK 0x0002U #define SLAPI_BACKEND_FLAG_GLUE_INSTANCE 0x0010U /* a glue backend */ #define SLAPI_BACKEND_FLAG_GLUE_SUBORDINATE 0x0020U /* child of a glue hierarchy */ #define SLAPI_BACKEND_FLAG_GLUE_LINKED 0x0040U /* child is connected to parent */ #define SLAPI_BACKEND_FLAG_OVERLAY 0x0080U /* this db struct is an overlay */ #define SLAPI_BACKEND_FLAG_GLOBAL_OVERLAY 0x0100U /* this db struct is a global overlay */ #define SLAPI_BACKEND_FLAG_SHADOW 0x8000U /* a shadow */ #define SLAPI_BACKEND_FLAG_SYNC_SHADOW 0x1000U /* a sync shadow */ #define SLAPI_BACKEND_FLAG_SLURP_SHADOW 0x2000U /* a slurp shadow */ /* * ACL levels */ #define SLAPI_ACL_COMPARE 0x01 #define SLAPI_ACL_SEARCH 0x02 #define SLAPI_ACL_READ 0x04 #define SLAPI_ACL_WRITE 0x08 #define SLAPI_ACL_DELETE 0x10 #define SLAPI_ACL_ADD 0x20 #define SLAPI_ACL_SELF 0x40 #define SLAPI_ACL_PROXY 0x80 #define SLAPI_ACL_ALL 0x7f /* plugin types supported */ #define SLAPI_PLUGIN_DATABASE 1 #define SLAPI_PLUGIN_EXTENDEDOP 2 #define SLAPI_PLUGIN_PREOPERATION 3 #define SLAPI_PLUGIN_POSTOPERATION 4 #define SLAPI_PLUGIN_MATCHINGRULE 5 #define SLAPI_PLUGIN_SYNTAX 6 #define SLAPI_PLUGIN_AUDIT 7 /* misc params */ #define SLAPI_BACKEND 130 #define SLAPI_CONNECTION 131 #define SLAPI_OPERATION 132 #define SLAPI_REQUESTOR_ISROOT 133 #define SLAPI_BE_MONITORDN 134 #define SLAPI_BE_TYPE 135 #define SLAPI_BE_READONLY 136 #define SLAPI_BE_LASTMOD 137 #define SLAPI_CONN_ID 139 /* operation params */ #define SLAPI_OPINITIATED_TIME 140 #define SLAPI_REQUESTOR_DN 141 #define SLAPI_IS_REPLICATED_OPERATION 142 #define SLAPI_REQUESTOR_ISUPDATEDN SLAPI_IS_REPLICATED_OPERATION /* connection structure params*/ #define SLAPI_CONN_DN 143 #define SLAPI_CONN_AUTHTYPE 144 #define SLAPI_CONN_CLIENTIP 145 #define SLAPI_CONN_SERVERIP 146 /* OpenLDAP extensions */ #define SLAPI_X_CONN_CLIENTPATH 1300 #define SLAPI_X_CONN_SERVERPATH 1301 #define SLAPI_X_CONN_IS_UDP 1302 #define SLAPI_X_CONN_SSF 1303 #define SLAPI_X_CONN_SASL_CONTEXT 1304 #define SLAPI_X_OPERATION_DELETE_GLUE_PARENT 1305 #define SLAPI_X_RELAX 1306 #define SLAPI_X_MANAGEDIT SLAPI_X_RELAX #define SLAPI_X_OPERATION_NO_SCHEMA_CHECK 1307 #define SLAPI_X_ADD_STRUCTURAL_CLASS 1308 #define SLAPI_X_OPERATION_NO_SUBORDINATE_GLUE 1309 /* Authentication types */ #define SLAPD_AUTH_NONE "none" #define SLAPD_AUTH_SIMPLE "simple" #define SLAPD_AUTH_SSL "SSL" #define SLAPD_AUTH_SASL "SASL " /* plugin configuration parmams */ #define SLAPI_PLUGIN 3 #define SLAPI_PLUGIN_PRIVATE 4 #define SLAPI_PLUGIN_TYPE 5 #define SLAPI_PLUGIN_ARGV 6 #define SLAPI_PLUGIN_ARGC 7 #define SLAPI_PLUGIN_VERSION 8 #define SLAPI_PLUGIN_OPRETURN 9 #define SLAPI_PLUGIN_OBJECT 10 #define SLAPI_PLUGIN_DESTROY_FN 11 #define SLAPI_PLUGIN_DESCRIPTION 12 #define SLAPI_PLUGIN_IDENTITY 13 /* internal opreations params */ #define SLAPI_PLUGIN_INTOP_RESULT 15 #define SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES 16 #define SLAPI_PLUGIN_INTOP_SEARCH_REFERRALS 17 /* transaction arguments */ #define SLAPI_PARENT_TXN 190 #define SLAPI_TXN 191 /* function pointer params for backends */ #define SLAPI_PLUGIN_DB_BIND_FN 200 #define SLAPI_PLUGIN_DB_UNBIND_FN 201 #define SLAPI_PLUGIN_DB_SEARCH_FN 202 #define SLAPI_PLUGIN_DB_COMPARE_FN 203 #define SLAPI_PLUGIN_DB_MODIFY_FN 204 #define SLAPI_PLUGIN_DB_MODRDN_FN 205 #define SLAPI_PLUGIN_DB_ADD_FN 206 #define SLAPI_PLUGIN_DB_DELETE_FN 207 #define SLAPI_PLUGIN_DB_ABANDON_FN 208 #define SLAPI_PLUGIN_DB_CONFIG_FN 209 #define SLAPI_PLUGIN_CLOSE_FN 210 #define SLAPI_PLUGIN_DB_FLUSH_FN 211 #define SLAPI_PLUGIN_START_FN 212 #define SLAPI_PLUGIN_DB_SEQ_FN 213 #define SLAPI_PLUGIN_DB_ENTRY_FN 214 #define SLAPI_PLUGIN_DB_REFERRAL_FN 215 #define SLAPI_PLUGIN_DB_RESULT_FN 216 #define SLAPI_PLUGIN_DB_LDIF2DB_FN 217 #define SLAPI_PLUGIN_DB_DB2LDIF_FN 218 #define SLAPI_PLUGIN_DB_BEGIN_FN 219 #define SLAPI_PLUGIN_DB_COMMIT_FN 220 #define SLAPI_PLUGIN_DB_ABORT_FN 221 #define SLAPI_PLUGIN_DB_ARCHIVE2DB_FN 222 #define SLAPI_PLUGIN_DB_DB2ARCHIVE_FN 223 #define SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN 224 #define SLAPI_PLUGIN_DB_FREE_RESULT_SET_FN 225 #define SLAPI_PLUGIN_DB_SIZE_FN 226 #define SLAPI_PLUGIN_DB_TEST_FN 227 /* functions pointers for LDAP V3 extended ops */ #define SLAPI_PLUGIN_EXT_OP_FN 300 #define SLAPI_PLUGIN_EXT_OP_OIDLIST 301 /* preoperation */ #define SLAPI_PLUGIN_PRE_BIND_FN 401 #define SLAPI_PLUGIN_PRE_UNBIND_FN 402 #define SLAPI_PLUGIN_PRE_SEARCH_FN 403 #define SLAPI_PLUGIN_PRE_COMPARE_FN 404 #define SLAPI_PLUGIN_PRE_MODIFY_FN 405 #define SLAPI_PLUGIN_PRE_MODRDN_FN 406 #define SLAPI_PLUGIN_PRE_ADD_FN 407 #define SLAPI_PLUGIN_PRE_DELETE_FN 408 #define SLAPI_PLUGIN_PRE_ABANDON_FN 409 #define SLAPI_PLUGIN_PRE_ENTRY_FN 410 #define SLAPI_PLUGIN_PRE_REFERRAL_FN 411 #define SLAPI_PLUGIN_PRE_RESULT_FN 412 /* internal preoperation */ #define SLAPI_PLUGIN_INTERNAL_PRE_ADD_FN 420 #define SLAPI_PLUGIN_INTERNAL_PRE_MODIFY_FN 421 #define SLAPI_PLUGIN_INTERNAL_PRE_MODRDN_FN 422 #define SLAPI_PLUGIN_INTERNAL_PRE_DELETE_FN 423 /* backend preoperation */ #define SLAPI_PLUGIN_BE_PRE_ADD_FN 450 #define SLAPI_PLUGIN_BE_PRE_MODIFY_FN 451 #define SLAPI_PLUGIN_BE_PRE_MODRDN_FN 452 #define SLAPI_PLUGIN_BE_PRE_DELETE_FN 453 /* postoperation */ #define SLAPI_PLUGIN_POST_BIND_FN 501 #define SLAPI_PLUGIN_POST_UNBIND_FN 502 #define SLAPI_PLUGIN_POST_SEARCH_FN 503 #define SLAPI_PLUGIN_POST_COMPARE_FN 504 #define SLAPI_PLUGIN_POST_MODIFY_FN 505 #define SLAPI_PLUGIN_POST_MODRDN_FN 506 #define SLAPI_PLUGIN_POST_ADD_FN 507 #define SLAPI_PLUGIN_POST_DELETE_FN 508 #define SLAPI_PLUGIN_POST_ABANDON_FN 509 #define SLAPI_PLUGIN_POST_ENTRY_FN 510 #define SLAPI_PLUGIN_POST_REFERRAL_FN 511 #define SLAPI_PLUGIN_POST_RESULT_FN 512 /* internal postoperation */ #define SLAPI_PLUGIN_INTERNAL_POST_ADD_FN 520 #define SLAPI_PLUGIN_INTERNAL_POST_MODIFY_FN 521 #define SLAPI_PLUGIN_INTERNAL_POST_MODRDN_FN 522 #define SLAPI_PLUGIN_INTERNAL_POST_DELETE_FN 523 /* backend postoperation */ #define SLAPI_PLUGIN_BE_POST_ADD_FN 550 #define SLAPI_PLUGIN_BE_POST_MODIFY_FN 551 #define SLAPI_PLUGIN_BE_POST_MODRDN_FN 552 #define SLAPI_PLUGIN_BE_POST_DELETE_FN 553 #define SLAPI_OPERATION_TYPE 590 #define SLAPI_OPERATION_MSGID 591 #define SLAPI_PLUGIN_MR_FILTER_CREATE_FN 600 #define SLAPI_PLUGIN_MR_INDEXER_CREATE_FN 601 #define SLAPI_PLUGIN_MR_FILTER_MATCH_FN 602 #define SLAPI_PLUGIN_MR_FILTER_INDEX_FN 603 #define SLAPI_PLUGIN_MR_FILTER_RESET_FN 604 #define SLAPI_PLUGIN_MR_INDEX_FN 605 #define SLAPI_PLUGIN_MR_OID 610 #define SLAPI_PLUGIN_MR_TYPE 611 #define SLAPI_PLUGIN_MR_VALUE 612 #define SLAPI_PLUGIN_MR_VALUES 613 #define SLAPI_PLUGIN_MR_KEYS 614 #define SLAPI_PLUGIN_MR_FILTER_REUSABLE 615 #define SLAPI_PLUGIN_MR_QUERY_OPERATOR 616 #define SLAPI_PLUGIN_MR_USAGE 617 #define SLAPI_MATCHINGRULE_NAME 1 #define SLAPI_MATCHINGRULE_OID 2 #define SLAPI_MATCHINGRULE_DESC 3 #define SLAPI_MATCHINGRULE_SYNTAX 4 #define SLAPI_MATCHINGRULE_OBSOLETE 5 #define SLAPI_OP_LESS 1 #define SLAPI_OP_LESS_OR_EQUAL 2 #define SLAPI_OP_EQUAL 3 #define SLAPI_OP_GREATER_OR_EQUAL 4 #define SLAPI_OP_GREATER 5 #define SLAPI_OP_SUBSTRING 6 #define SLAPI_PLUGIN_MR_USAGE_INDEX 0 #define SLAPI_PLUGIN_MR_USAGE_SORT 1 #define SLAPI_PLUGIN_SYNTAX_FILTER_AVA 700 #define SLAPI_PLUGIN_SYNTAX_FILTER_SUB 701 #define SLAPI_PLUGIN_SYNTAX_VALUES2KEYS 702 #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_AVA 703 #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_SUB 704 #define SLAPI_PLUGIN_SYNTAX_NAMES 705 #define SLAPI_PLUGIN_SYNTAX_OID 706 #define SLAPI_PLUGIN_SYNTAX_FLAGS 707 #define SLAPI_PLUGIN_SYNTAX_COMPARE 708 #define SLAPI_PLUGIN_SYNTAX_FLAG_ORKEYS 1 #define SLAPI_PLUGIN_SYNTAX_FLAG_ORDERING 2 #define SLAPI_PLUGIN_ACL_INIT 730 #define SLAPI_PLUGIN_ACL_SYNTAX_CHECK 731 #define SLAPI_PLUGIN_ACL_ALLOW_ACCESS 732 #define SLAPI_PLUGIN_ACL_MODS_ALLOWED 733 #define SLAPI_PLUGIN_ACL_MODS_UPDATE 734 #define SLAPI_OPERATION_AUTHTYPE 741 #define SLAPI_OPERATION_ID 742 #define SLAPI_CONN_CERT 743 #define SLAPI_CONN_AUTHMETHOD 746 #define SLAPI_IS_INTERNAL_OPERATION 748 #define SLAPI_RESULT_CODE 881 #define SLAPI_RESULT_TEXT 882 #define SLAPI_RESULT_MATCHED 883 /* managedsait control */ #define SLAPI_MANAGEDSAIT 1000 /* audit plugin defines */ #define SLAPI_PLUGIN_AUDIT_DATA 1100 #define SLAPI_PLUGIN_AUDIT_FN 1101 /* backend_group extension */ #define SLAPI_X_PLUGIN_PRE_GROUP_FN 1202 #define SLAPI_X_PLUGIN_POST_GROUP_FN 1203 #define SLAPI_X_GROUP_ENTRY 1250 /* group entry */ #define SLAPI_X_GROUP_ATTRIBUTE 1251 /* member attribute */ #define SLAPI_X_GROUP_OPERATION_DN 1252 /* asserted value */ #define SLAPI_X_GROUP_TARGET_ENTRY 1253 /* target entry */ /* internal preoperation extensions */ #define SLAPI_PLUGIN_INTERNAL_PRE_BIND_FN 1260 #define SLAPI_PLUGIN_INTERNAL_PRE_UNBIND_FN 1261 #define SLAPI_PLUGIN_INTERNAL_PRE_SEARCH_FN 1262 #define SLAPI_PLUGIN_INTERNAL_PRE_COMPARE_FN 1263 #define SLAPI_PLUGIN_INTERNAL_PRE_ABANDON_FN 1264 /* internal postoperation extensions */ #define SLAPI_PLUGIN_INTERNAL_POST_BIND_FN 1270 #define SLAPI_PLUGIN_INTERNAL_POST_UNBIND_FN 1271 #define SLAPI_PLUGIN_INTERNAL_POST_SEARCH_FN 1272 #define SLAPI_PLUGIN_INTERNAL_POST_COMPARE_FN 1273 #define SLAPI_PLUGIN_INTERNAL_POST_ABANDON_FN 1274 /* config stuff */ #define SLAPI_CONFIG_FILENAME 40 #define SLAPI_CONFIG_LINENO 41 #define SLAPI_CONFIG_ARGC 42 #define SLAPI_CONFIG_ARGV 43 /* operational params */ #define SLAPI_TARGET_ADDRESS 48 #define SLAPI_TARGET_UNIQUEID 49 #define SLAPI_TARGET_DN 50 /* server LDAPv3 controls */ #define SLAPI_REQCONTROLS 51 #define SLAPI_RESCONTROLS 55 #define SLAPI_ADD_RESCONTROL 56 #define SLAPI_CONTROLS_ARG 58 /* add params */ #define SLAPI_ADD_TARGET SLAPI_TARGET_DN #define SLAPI_ADD_ENTRY 60 #define SLAPI_ADD_EXISTING_DN_ENTRY 61 #define SLAPI_ADD_PARENT_ENTRY 62 #define SLAPI_ADD_PARENT_UNIQUEID 63 #define SLAPI_ADD_EXISTING_UNIQUEID_ENTRY 64 /* bind params */ #define SLAPI_BIND_TARGET SLAPI_TARGET_DN #define SLAPI_BIND_METHOD 70 #define SLAPI_BIND_CREDENTIALS 71 #define SLAPI_BIND_SASLMECHANISM 72 #define SLAPI_BIND_RET_SASLCREDS 73 /* compare params */ #define SLAPI_COMPARE_TARGET SLAPI_TARGET_DN #define SLAPI_COMPARE_TYPE 80 #define SLAPI_COMPARE_VALUE 81 /* delete params */ #define SLAPI_DELETE_TARGET SLAPI_TARGET_DN #define SLAPI_DELETE_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY /* modify params */ #define SLAPI_MODIFY_TARGET SLAPI_TARGET_DN #define SLAPI_MODIFY_MODS 90 #define SLAPI_MODIFY_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY /* modrdn params */ #define SLAPI_MODRDN_TARGET SLAPI_TARGET_DN #define SLAPI_MODRDN_NEWRDN 100 #define SLAPI_MODRDN_DELOLDRDN 101 #define SLAPI_MODRDN_NEWSUPERIOR 102 /* v3 only */ #define SLAPI_MODRDN_EXISTING_ENTRY SLAPI_ADD_EXISTING_DN_ENTRY #define SLAPI_MODRDN_PARENT_ENTRY 104 #define SLAPI_MODRDN_NEWPARENT_ENTRY 105 #define SLAPI_MODRDN_TARGET_ENTRY 106 #define SLAPI_MODRDN_NEWSUPERIOR_ADDRESS 107 /* search params */ #define SLAPI_SEARCH_TARGET SLAPI_TARGET_DN #define SLAPI_SEARCH_SCOPE 110 #define SLAPI_SEARCH_DEREF 111 #define SLAPI_SEARCH_SIZELIMIT 112 #define SLAPI_SEARCH_TIMELIMIT 113 #define SLAPI_SEARCH_FILTER 114 #define SLAPI_SEARCH_STRFILTER 115 #define SLAPI_SEARCH_ATTRS 116 #define SLAPI_SEARCH_ATTRSONLY 117 /* abandon params */ #define SLAPI_ABANDON_MSGID 120 /* extended operation params */ #define SLAPI_EXT_OP_REQ_OID 160 #define SLAPI_EXT_OP_REQ_VALUE 161 /* extended operation return codes */ #define SLAPI_EXT_OP_RET_OID 162 #define SLAPI_EXT_OP_RET_VALUE 163 #define SLAPI_PLUGIN_EXTENDED_SENT_RESULT -1 #define SLAPI_FAIL_DISKFULL -2 #define SLAPI_FAIL_GENERAL -1 #define SLAPI_PLUGIN_EXTENDED_NOT_HANDLED -2 #define SLAPI_BIND_SUCCESS 0 #define SLAPI_BIND_FAIL 2 #define SLAPI_BIND_ANONYMOUS 3 /* Search result params */ #define SLAPI_SEARCH_RESULT_SET 193 #define SLAPI_SEARCH_RESULT_ENTRY 194 #define SLAPI_NENTRIES 195 #define SLAPI_SEARCH_REFERRALS 196 /* filter types */ #ifndef LDAP_FILTER_AND #define LDAP_FILTER_AND 0xa0L #endif #ifndef LDAP_FILTER_OR #define LDAP_FILTER_OR 0xa1L #endif #ifndef LDAP_FILTER_NOT #define LDAP_FILTER_NOT 0xa2L #endif #ifndef LDAP_FILTER_EQUALITY #define LDAP_FILTER_EQUALITY 0xa3L #endif #ifndef LDAP_FILTER_SUBSTRINGS #define LDAP_FILTER_SUBSTRINGS 0xa4L #endif #ifndef LDAP_FILTER_GE #define LDAP_FILTER_GE 0xa5L #endif #ifndef LDAP_FILTER_LE #define LDAP_FILTER_LE 0xa6L #endif #ifndef LDAP_FILTER_PRESENT #define LDAP_FILTER_PRESENT 0x87L #endif #ifndef LDAP_FILTER_APPROX #define LDAP_FILTER_APPROX 0xa8L #endif #ifndef LDAP_FILTER_EXT_MATCH #define LDAP_FILTER_EXT_MATCH 0xa9L #endif int slapi_log_error( int severity, char *subsystem, char *fmt, ... ); #define SLAPI_LOG_FATAL 0 #define SLAPI_LOG_TRACE 1 #define SLAPI_LOG_PACKETS 2 #define SLAPI_LOG_ARGS 3 #define SLAPI_LOG_CONNS 4 #define SLAPI_LOG_BER 5 #define SLAPI_LOG_FILTER 6 #define SLAPI_LOG_CONFIG 7 #define SLAPI_LOG_ACL 8 #define SLAPI_LOG_SHELL 9 #define SLAPI_LOG_PARSE 10 #define SLAPI_LOG_HOUSE 11 #define SLAPI_LOG_REPL 12 #define SLAPI_LOG_CACHE 13 #define SLAPI_LOG_PLUGIN 14 #define SLAPI_LOG_TIMING 15 #define SLAPI_PLUGIN_DESCRIPTION 12 typedef struct slapi_plugindesc { char *spd_id; char *spd_vendor; char *spd_version; char *spd_description; } Slapi_PluginDesc; #define SLAPI_PLUGIN_VERSION_01 "01" #define SLAPI_PLUGIN_VERSION_02 "02" #define SLAPI_PLUGIN_VERSION_03 "03" #define SLAPI_PLUGIN_CURRENT_VERSION SLAPI_PLUGIN_VERSION_03 #endif /* _SLAPI_PLUGIN_H */ 07070100031aa2000081a400000000000000000000000151244f47000005bc000000b600010002ffffffffffffffff0000002400000000root/usr/local/include/lber_types.h/* include/lber_types.h. Generated from lber_types.hin by configure. */ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* * LBER types */ #ifndef _LBER_TYPES_H #define _LBER_TYPES_H #include LDAP_BEGIN_DECL /* LBER boolean, enum, integers (32 bits or larger) */ #define LBER_INT_T int /* LBER tags (32 bits or larger) */ #define LBER_TAG_T long /* LBER socket descriptor */ #define LBER_SOCKET_T int /* LBER lengths (32 bits or larger) */ #define LBER_LEN_T long /* ------------------------------------------------------------ */ /* booleans, enumerations, and integers */ typedef LBER_INT_T ber_int_t; /* signed and unsigned versions */ typedef signed LBER_INT_T ber_sint_t; typedef unsigned LBER_INT_T ber_uint_t; /* tags */ typedef unsigned LBER_TAG_T ber_tag_t; /* "socket" descriptors */ typedef LBER_SOCKET_T ber_socket_t; /* lengths */ typedef unsigned LBER_LEN_T ber_len_t; /* signed lengths */ typedef signed LBER_LEN_T ber_slen_t; LDAP_END_DECL #endif /* _LBER_TYPES_H */ 07070100031aa1000081a400000000000000000000000151244f4700003bcf000000b600010002ffffffffffffffff0000001e00000000root/usr/local/include/lber.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* Portions Copyright (c) 1990 Regents of the University of Michigan. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that this notice is preserved and that due credit is given * to the University of Michigan at Ann Arbor. The name of the University * may not be used to endorse or promote products derived from this * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. */ #ifndef _LBER_H #define _LBER_H #include #include LDAP_BEGIN_DECL /* * ber_tag_t represents the identifier octets at the beginning of BER * elements. OpenLDAP treats them as mere big-endian unsigned integers. * * Actually the BER identifier octets look like this: * * Bits of 1st octet: * ______ * 8 7 | CLASS * 0 0 = UNIVERSAL * 0 1 = APPLICATION * 1 0 = CONTEXT-SPECIFIC * 1 1 = PRIVATE * _____ * | 6 | DATA-TYPE * 0 = PRIMITIVE * 1 = CONSTRUCTED * ___________ * | 5 ... 1 | TAG-NUMBER * * For ASN.1 tag numbers >= 0x1F, TAG-NUMBER above is 0x1F and the next * BER octets contain the actual ASN.1 tag number: Big-endian, base * 128, 8.bit = 1 in all but the last octet, minimum number of octets. */ /* BER classes and mask (in 1st identifier octet) */ #define LBER_CLASS_UNIVERSAL ((ber_tag_t) 0x00U) #define LBER_CLASS_APPLICATION ((ber_tag_t) 0x40U) #define LBER_CLASS_CONTEXT ((ber_tag_t) 0x80U) #define LBER_CLASS_PRIVATE ((ber_tag_t) 0xc0U) #define LBER_CLASS_MASK ((ber_tag_t) 0xc0U) /* BER encoding type and mask (in 1st identifier octet) */ #define LBER_PRIMITIVE ((ber_tag_t) 0x00U) #define LBER_CONSTRUCTED ((ber_tag_t) 0x20U) #define LBER_ENCODING_MASK ((ber_tag_t) 0x20U) #define LBER_BIG_TAG_MASK ((ber_tag_t) 0x1fU) #define LBER_MORE_TAG_MASK ((ber_tag_t) 0x80U) /* * LBER_ERROR and LBER_DEFAULT are values that can never appear * as valid BER tags, so it is safe to use them to report errors. * Valid tags have (tag & (ber_tag_t) 0xFF) != 0xFF. */ #define LBER_ERROR ((ber_tag_t) -1) #define LBER_DEFAULT ((ber_tag_t) -1) /* general BER types we know about */ #define LBER_BOOLEAN ((ber_tag_t) 0x01UL) #define LBER_INTEGER ((ber_tag_t) 0x02UL) #define LBER_BITSTRING ((ber_tag_t) 0x03UL) #define LBER_OCTETSTRING ((ber_tag_t) 0x04UL) #define LBER_NULL ((ber_tag_t) 0x05UL) #define LBER_ENUMERATED ((ber_tag_t) 0x0aUL) #define LBER_SEQUENCE ((ber_tag_t) 0x30UL) /* constructed */ #define LBER_SET ((ber_tag_t) 0x31UL) /* constructed */ /* LBER BerElement options */ #define LBER_USE_DER 0x01 /* get/set options for BerElement */ #define LBER_OPT_BER_OPTIONS 0x01 #define LBER_OPT_BER_DEBUG 0x02 #define LBER_OPT_BER_REMAINING_BYTES 0x03 #define LBER_OPT_BER_TOTAL_BYTES 0x04 #define LBER_OPT_BER_BYTES_TO_WRITE 0x05 #define LBER_OPT_BER_MEMCTX 0x06 #define LBER_OPT_DEBUG_LEVEL LBER_OPT_BER_DEBUG #define LBER_OPT_REMAINING_BYTES LBER_OPT_BER_REMAINING_BYTES #define LBER_OPT_TOTAL_BYTES LBER_OPT_BER_TOTAL_BYTES #define LBER_OPT_BYTES_TO_WRITE LBER_OPT_BER_BYTES_TO_WRITE #define LBER_OPT_LOG_PRINT_FN 0x8001 #define LBER_OPT_MEMORY_FNS 0x8002 #define LBER_OPT_ERROR_FN 0x8003 #define LBER_OPT_LOG_PRINT_FILE 0x8004 /* get/set Memory Debug options */ #define LBER_OPT_MEMORY_INUSE 0x8005 /* for memory debugging */ #define LBER_OPT_LOG_PROC 0x8006 /* for external logging function */ typedef int* (*BER_ERRNO_FN) LDAP_P(( void )); typedef void (*BER_LOG_PRINT_FN) LDAP_P(( LDAP_CONST char *buf )); typedef void* (BER_MEMALLOC_FN) LDAP_P(( ber_len_t size, void *ctx )); typedef void* (BER_MEMCALLOC_FN) LDAP_P(( ber_len_t n, ber_len_t size, void *ctx )); typedef void* (BER_MEMREALLOC_FN) LDAP_P(( void *p, ber_len_t size, void *ctx )); typedef void (BER_MEMFREE_FN) LDAP_P(( void *p, void *ctx )); typedef struct lber_memory_fns { BER_MEMALLOC_FN *bmf_malloc; BER_MEMCALLOC_FN *bmf_calloc; BER_MEMREALLOC_FN *bmf_realloc; BER_MEMFREE_FN *bmf_free; } BerMemoryFunctions; /* LBER Sockbuf_IO options */ #define LBER_SB_OPT_GET_FD 1 #define LBER_SB_OPT_SET_FD 2 #define LBER_SB_OPT_HAS_IO 3 #define LBER_SB_OPT_SET_NONBLOCK 4 #define LBER_SB_OPT_GET_SSL 7 #define LBER_SB_OPT_DATA_READY 8 #define LBER_SB_OPT_SET_READAHEAD 9 #define LBER_SB_OPT_DRAIN 10 #define LBER_SB_OPT_NEEDS_READ 11 #define LBER_SB_OPT_NEEDS_WRITE 12 #define LBER_SB_OPT_GET_MAX_INCOMING 13 #define LBER_SB_OPT_SET_MAX_INCOMING 14 /* Only meaningful ifdef LDAP_PF_LOCAL_SENDMSG */ #define LBER_SB_OPT_UNGET_BUF 15 /* Largest option used by the library */ #define LBER_SB_OPT_OPT_MAX 15 /* LBER IO operations stacking levels */ #define LBER_SBIOD_LEVEL_PROVIDER 10 #define LBER_SBIOD_LEVEL_TRANSPORT 20 #define LBER_SBIOD_LEVEL_APPLICATION 30 /* get/set options for Sockbuf */ #define LBER_OPT_SOCKBUF_DESC 0x1000 #define LBER_OPT_SOCKBUF_OPTIONS 0x1001 #define LBER_OPT_SOCKBUF_DEBUG 0x1002 /* on/off values */ LBER_V( char ) ber_pvt_opt_on; #define LBER_OPT_ON ((void *) &ber_pvt_opt_on) #define LBER_OPT_OFF ((void *) 0) #define LBER_OPT_SUCCESS (0) #define LBER_OPT_ERROR (-1) typedef struct berelement BerElement; typedef struct sockbuf Sockbuf; typedef struct sockbuf_io Sockbuf_IO; /* Structure for LBER IO operarion descriptor */ typedef struct sockbuf_io_desc { int sbiod_level; Sockbuf *sbiod_sb; Sockbuf_IO *sbiod_io; void *sbiod_pvt; struct sockbuf_io_desc *sbiod_next; } Sockbuf_IO_Desc; /* Structure for LBER IO operation functions */ struct sockbuf_io { int (*sbi_setup)( Sockbuf_IO_Desc *sbiod, void *arg ); int (*sbi_remove)( Sockbuf_IO_Desc *sbiod ); int (*sbi_ctrl)( Sockbuf_IO_Desc *sbiod, int opt, void *arg); ber_slen_t (*sbi_read)( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len ); ber_slen_t (*sbi_write)( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len ); int (*sbi_close)( Sockbuf_IO_Desc *sbiod ); }; /* Helper macros for LBER IO functions */ #define LBER_SBIOD_READ_NEXT( sbiod, buf, len ) \ ( (sbiod)->sbiod_next->sbiod_io->sbi_read( (sbiod)->sbiod_next, \ buf, len ) ) #define LBER_SBIOD_WRITE_NEXT( sbiod, buf, len ) \ ( (sbiod)->sbiod_next->sbiod_io->sbi_write( (sbiod)->sbiod_next, \ buf, len ) ) #define LBER_SBIOD_CTRL_NEXT( sbiod, opt, arg ) \ ( (sbiod)->sbiod_next ? \ ( (sbiod)->sbiod_next->sbiod_io->sbi_ctrl( \ (sbiod)->sbiod_next, opt, arg ) ) : 0 ) /* structure for returning a sequence of octet strings + length */ typedef struct berval { ber_len_t bv_len; char *bv_val; } BerValue; typedef BerValue *BerVarray; /* To distinguish from a single bv */ /* this should be moved to lber-int.h */ /* * in bprint.c: */ LBER_F( void ) ber_error_print LDAP_P(( LDAP_CONST char *data )); LBER_F( void ) ber_bprint LDAP_P(( LDAP_CONST char *data, ber_len_t len )); LBER_F( void ) ber_dump LDAP_P(( BerElement *ber, int inout )); /* * in decode.c: */ typedef int (*BERDecodeCallback) LDAP_P(( BerElement *ber, void *data, int mode )); LBER_F( ber_tag_t ) ber_get_tag LDAP_P(( BerElement *ber )); LBER_F( ber_tag_t ) ber_skip_tag LDAP_P(( BerElement *ber, ber_len_t *len )); LBER_F( ber_tag_t ) ber_peek_tag LDAP_P(( BerElement *ber, ber_len_t *len )); LBER_F( ber_tag_t ) ber_skip_element LDAP_P(( BerElement *ber, struct berval *bv )); LBER_F( ber_tag_t ) ber_peek_element LDAP_P(( LDAP_CONST BerElement *ber, struct berval *bv )); LBER_F( ber_tag_t ) ber_get_int LDAP_P(( BerElement *ber, ber_int_t *num )); LBER_F( ber_tag_t ) ber_get_enum LDAP_P(( BerElement *ber, ber_int_t *num )); LBER_F( ber_tag_t ) ber_get_stringb LDAP_P(( BerElement *ber, char *buf, ber_len_t *len )); #define LBER_BV_ALLOC 0x01 /* allocate/copy result, otherwise in-place */ #define LBER_BV_NOTERM 0x02 /* omit NUL-terminator if parsing in-place */ #define LBER_BV_STRING 0x04 /* fail if berval contains embedded \0 */ /* LBER_BV_STRING currently accepts a terminating \0 in the berval, because * Active Directory sends that in at least the diagonsticMessage field. */ LBER_F( ber_tag_t ) ber_get_stringbv LDAP_P(( BerElement *ber, struct berval *bv, int options )); LBER_F( ber_tag_t ) ber_get_stringa LDAP_P(( BerElement *ber, char **buf )); LBER_F( ber_tag_t ) ber_get_stringal LDAP_P(( BerElement *ber, struct berval **bv )); LBER_F( ber_tag_t ) ber_get_bitstringa LDAP_P(( BerElement *ber, char **buf, ber_len_t *len )); LBER_F( ber_tag_t ) ber_get_null LDAP_P(( BerElement *ber )); LBER_F( ber_tag_t ) ber_get_boolean LDAP_P(( BerElement *ber, ber_int_t *boolval )); LBER_F( ber_tag_t ) ber_first_element LDAP_P(( BerElement *ber, ber_len_t *len, char **last )); LBER_F( ber_tag_t ) ber_next_element LDAP_P(( BerElement *ber, ber_len_t *len, LDAP_CONST char *last )); LBER_F( ber_tag_t ) ber_scanf LDAP_P(( BerElement *ber, LDAP_CONST char *fmt, ... )); LBER_F( int ) ber_decode_oid LDAP_P(( struct berval *in, struct berval *out )); /* * in encode.c */ LBER_F( int ) ber_encode_oid LDAP_P(( struct berval *in, struct berval *out )); typedef int (*BEREncodeCallback) LDAP_P(( BerElement *ber, void *data )); LBER_F( int ) ber_put_enum LDAP_P(( BerElement *ber, ber_int_t num, ber_tag_t tag )); LBER_F( int ) ber_put_int LDAP_P(( BerElement *ber, ber_int_t num, ber_tag_t tag )); LBER_F( int ) ber_put_ostring LDAP_P(( BerElement *ber, LDAP_CONST char *str, ber_len_t len, ber_tag_t tag )); LBER_F( int ) ber_put_berval LDAP_P(( BerElement *ber, struct berval *bv, ber_tag_t tag )); LBER_F( int ) ber_put_string LDAP_P(( BerElement *ber, LDAP_CONST char *str, ber_tag_t tag )); LBER_F( int ) ber_put_bitstring LDAP_P(( BerElement *ber, LDAP_CONST char *str, ber_len_t bitlen, ber_tag_t tag )); LBER_F( int ) ber_put_null LDAP_P(( BerElement *ber, ber_tag_t tag )); LBER_F( int ) ber_put_boolean LDAP_P(( BerElement *ber, ber_int_t boolval, ber_tag_t tag )); LBER_F( int ) ber_start_seq LDAP_P(( BerElement *ber, ber_tag_t tag )); LBER_F( int ) ber_start_set LDAP_P(( BerElement *ber, ber_tag_t tag )); LBER_F( int ) ber_put_seq LDAP_P(( BerElement *ber )); LBER_F( int ) ber_put_set LDAP_P(( BerElement *ber )); LBER_F( int ) ber_printf LDAP_P(( BerElement *ber, LDAP_CONST char *fmt, ... )); /* * in io.c: */ LBER_F( ber_slen_t ) ber_skip_data LDAP_P(( BerElement *ber, ber_len_t len )); LBER_F( ber_slen_t ) ber_read LDAP_P(( BerElement *ber, char *buf, ber_len_t len )); LBER_F( ber_slen_t ) ber_write LDAP_P(( BerElement *ber, LDAP_CONST char *buf, ber_len_t len, int zero )); /* nonzero is unsupported from OpenLDAP 2.4.18 */ LBER_F( void ) ber_free LDAP_P(( BerElement *ber, int freebuf )); LBER_F( void ) ber_free_buf LDAP_P(( BerElement *ber )); LBER_F( int ) ber_flush2 LDAP_P(( Sockbuf *sb, BerElement *ber, int freeit )); #define LBER_FLUSH_FREE_NEVER (0x0) /* traditional behavior */ #define LBER_FLUSH_FREE_ON_SUCCESS (0x1) /* traditional behavior */ #define LBER_FLUSH_FREE_ON_ERROR (0x2) #define LBER_FLUSH_FREE_ALWAYS (LBER_FLUSH_FREE_ON_SUCCESS|LBER_FLUSH_FREE_ON_ERROR) LBER_F( int ) ber_flush LDAP_P(( Sockbuf *sb, BerElement *ber, int freeit )); /* DEPRECATED */ LBER_F( BerElement * ) ber_alloc LDAP_P(( void )); /* DEPRECATED */ LBER_F( BerElement * ) der_alloc LDAP_P(( void )); /* DEPRECATED */ LBER_F( BerElement * ) ber_alloc_t LDAP_P(( int beroptions )); LBER_F( BerElement * ) ber_dup LDAP_P(( BerElement *ber )); LBER_F( ber_tag_t ) ber_get_next LDAP_P(( Sockbuf *sb, ber_len_t *len, BerElement *ber )); LBER_F( void ) ber_init2 LDAP_P(( BerElement *ber, struct berval *bv, int options )); LBER_F( void ) ber_init_w_nullc LDAP_P(( /* DEPRECATED */ BerElement *ber, int options )); LBER_F( void ) ber_reset LDAP_P(( BerElement *ber, int was_writing )); LBER_F( BerElement * ) ber_init LDAP_P(( struct berval *bv )); LBER_F( int ) ber_flatten LDAP_P(( BerElement *ber, struct berval **bvPtr )); LBER_F( int ) ber_flatten2 LDAP_P(( BerElement *ber, struct berval *bv, int alloc )); LBER_F( int ) ber_remaining LDAP_P(( BerElement *ber )); /* * LBER ber accessor functions */ LBER_F( int ) ber_get_option LDAP_P(( void *item, int option, void *outvalue)); LBER_F( int ) ber_set_option LDAP_P(( void *item, int option, LDAP_CONST void *invalue)); /* * LBER sockbuf.c */ LBER_F( Sockbuf * ) ber_sockbuf_alloc LDAP_P(( void )); LBER_F( void ) ber_sockbuf_free LDAP_P(( Sockbuf *sb )); LBER_F( int ) ber_sockbuf_add_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *sbio, int layer, void *arg )); LBER_F( int ) ber_sockbuf_remove_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *sbio, int layer )); LBER_F( int ) ber_sockbuf_ctrl LDAP_P(( Sockbuf *sb, int opt, void *arg )); LBER_V( Sockbuf_IO ) ber_sockbuf_io_tcp; LBER_V( Sockbuf_IO ) ber_sockbuf_io_readahead; LBER_V( Sockbuf_IO ) ber_sockbuf_io_fd; LBER_V( Sockbuf_IO ) ber_sockbuf_io_debug; LBER_V( Sockbuf_IO ) ber_sockbuf_io_udp; /* * LBER memory.c */ LBER_F( void * ) ber_memalloc LDAP_P(( ber_len_t s )); LBER_F( void * ) ber_memrealloc LDAP_P(( void* p, ber_len_t s )); LBER_F( void * ) ber_memcalloc LDAP_P(( ber_len_t n, ber_len_t s )); LBER_F( void ) ber_memfree LDAP_P(( void* p )); LBER_F( void ) ber_memvfree LDAP_P(( void** vector )); LBER_F( void ) ber_bvfree LDAP_P(( struct berval *bv )); LBER_F( void ) ber_bvecfree LDAP_P(( struct berval **bv )); LBER_F( int ) ber_bvecadd LDAP_P(( struct berval ***bvec, struct berval *bv )); LBER_F( struct berval * ) ber_dupbv LDAP_P(( struct berval *dst, struct berval *src )); LBER_F( struct berval * ) ber_bvdup LDAP_P(( struct berval *src )); LBER_F( struct berval * ) ber_mem2bv LDAP_P(( LDAP_CONST char *, ber_len_t len, int duplicate, struct berval *bv)); LBER_F( struct berval * ) ber_str2bv LDAP_P(( LDAP_CONST char *, ber_len_t len, int duplicate, struct berval *bv)); #define ber_bvstr(a) ((ber_str2bv)((a), 0, 0, NULL)) #define ber_bvstrdup(a) ((ber_str2bv)((a), 0, 1, NULL)) LBER_F( char * ) ber_strdup LDAP_P(( LDAP_CONST char * )); LBER_F( ber_len_t ) ber_strnlen LDAP_P(( LDAP_CONST char *s, ber_len_t len )); LBER_F( char * ) ber_strndup LDAP_P(( LDAP_CONST char *s, ber_len_t l )); LBER_F( struct berval * ) ber_bvreplace LDAP_P(( struct berval *dst, LDAP_CONST struct berval *src )); LBER_F( void ) ber_bvarray_free LDAP_P(( BerVarray p )); LBER_F( int ) ber_bvarray_add LDAP_P(( BerVarray *p, BerValue *bv )); #define ber_bvcmp(v1,v2) \ ((v1)->bv_len < (v2)->bv_len \ ? -1 : ((v1)->bv_len > (v2)->bv_len \ ? 1 : memcmp((v1)->bv_val, (v2)->bv_val, (v1)->bv_len) )) /* * error.c */ LBER_F( int * ) ber_errno_addr LDAP_P((void)); #define ber_errno (*(ber_errno_addr)()) #define LBER_ERROR_NONE 0 #define LBER_ERROR_PARAM 0x1 #define LBER_ERROR_MEMORY 0x2 LDAP_END_DECL #endif /* _LBER_H */ 07070100031aa8000081a400000000000000000000000151244f4700001242000000b600010002ffffffffffffffff0000001e00000000root/usr/local/include/ldif.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* Portions Copyright (c) 1996 Regents of the University of Michigan. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that this notice is preserved and that due credit is given * to the University of Michigan at Ann Arbor. The name of the University * may not be used to endorse or promote products derived from this * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. */ #ifndef _LDIF_H #define _LDIF_H #include LDAP_BEGIN_DECL /* This is NOT a bogus extern declaration (unlike ldap_debug) */ LDAP_LDIF_V (int) ldif_debug; #define LDIF_LINE_WIDTH 76 /* default maximum length of LDIF lines */ #define LDIF_LINE_WIDTH_MAX ((ber_len_t)-1) /* maximum length of LDIF lines */ #define LDIF_LINE_WIDTH_WRAP(wrap) ((wrap) == 0 ? LDIF_LINE_WIDTH : (wrap)) /* * Macro to calculate maximum number of bytes that the base64 equivalent * of an item that is "len" bytes long will take up. Base64 encoding * uses one byte for every six bits in the value plus up to two pad bytes. */ #define LDIF_BASE64_LEN(len) (((len) * 4 / 3 ) + 3) /* * Macro to calculate maximum size that an LDIF-encoded type (length * tlen) and value (length vlen) will take up: room for type + ":: " + * first newline + base64 value + continued lines. Each continued line * needs room for a newline and a leading space character. */ #define LDIF_SIZE_NEEDED(nlen,vlen) \ ((nlen) + 4 + LDIF_BASE64_LEN(vlen) \ + ((LDIF_BASE64_LEN(vlen) + (nlen) + 3) / LDIF_LINE_WIDTH * 2 )) #define LDIF_SIZE_NEEDED_WRAP(nlen,vlen,wrap) \ ((nlen) + 4 + LDIF_BASE64_LEN(vlen) \ + ((wrap) == 0 ? ((LDIF_BASE64_LEN(vlen) + (nlen) + 3) / ( LDIF_LINE_WIDTH ) * 2 ) : \ ((wrap) == LDIF_LINE_WIDTH_MAX ? 0 : ((LDIF_BASE64_LEN(vlen) + (nlen) + 3) / (wrap) * 2 )))) LDAP_LDIF_F( int ) ldif_parse_line LDAP_P(( LDAP_CONST char *line, char **name, char **value, ber_len_t *vlen )); LDAP_LDIF_F( int ) ldif_parse_line2 LDAP_P(( char *line, struct berval *type, struct berval *value, int *freeval )); LDAP_LDIF_F( FILE * ) ldif_open_url LDAP_P(( LDAP_CONST char *urlstr )); LDAP_LDIF_F( int ) ldif_fetch_url LDAP_P(( LDAP_CONST char *line, char **value, ber_len_t *vlen )); LDAP_LDIF_F( char * ) ldif_getline LDAP_P(( char **next )); LDAP_LDIF_F( int ) ldif_countlines LDAP_P(( LDAP_CONST char *line )); /* ldif_ropen, rclose, read_record - just for reading LDIF files, * no special open/close needed to write LDIF files. */ typedef struct LDIFFP { FILE *fp; struct LDIFFP *prev; } LDIFFP; LDAP_LDIF_F( LDIFFP * ) ldif_open LDAP_P(( LDAP_CONST char *file, LDAP_CONST char *mode )); LDAP_LDIF_F( void ) ldif_close LDAP_P(( LDIFFP * )); LDAP_LDIF_F( int ) ldif_read_record LDAP_P(( LDIFFP *fp, int *lineno, char **bufp, int *buflen )); LDAP_LDIF_F( int ) ldif_must_b64_encode_register LDAP_P(( LDAP_CONST char *name, LDAP_CONST char *oid )); LDAP_LDIF_F( void ) ldif_must_b64_encode_release LDAP_P(( void )); #define LDIF_PUT_NOVALUE 0x0000 /* no value */ #define LDIF_PUT_VALUE 0x0001 /* value w/ auto detection */ #define LDIF_PUT_TEXT 0x0002 /* assume text */ #define LDIF_PUT_BINARY 0x0004 /* assume binary (convert to base64) */ #define LDIF_PUT_B64 0x0008 /* pre-converted base64 value */ #define LDIF_PUT_COMMENT 0x0010 /* comment */ #define LDIF_PUT_URL 0x0020 /* url */ #define LDIF_PUT_SEP 0x0040 /* separator */ LDAP_LDIF_F( void ) ldif_sput LDAP_P(( char **out, int type, LDAP_CONST char *name, LDAP_CONST char *val, ber_len_t vlen )); LDAP_LDIF_F( void ) ldif_sput_wrap LDAP_P(( char **out, int type, LDAP_CONST char *name, LDAP_CONST char *val, ber_len_t vlen, ber_len_t wrap )); LDAP_LDIF_F( char * ) ldif_put LDAP_P(( int type, LDAP_CONST char *name, LDAP_CONST char *val, ber_len_t vlen )); LDAP_LDIF_F( char * ) ldif_put_wrap LDAP_P(( int type, LDAP_CONST char *name, LDAP_CONST char *val, ber_len_t vlen, ber_len_t wrap )); LDAP_LDIF_F( int ) ldif_is_not_printable LDAP_P(( LDAP_CONST char *val, ber_len_t vlen )); LDAP_END_DECL #endif /* _LDIF_H */ 07070100031aa7000081a400000000000000000000000151244f4700000d8c000000b600010002ffffffffffffffff0000002300000000root/usr/local/include/ldap_utf8.h/* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * * Copyright 1998-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * . */ /* This notice applies to changes, created by or for Novell, Inc., * to preexisting works for which notices appear elsewhere in this file. * * Copyright (C) 2000 Novell, Inc. All Rights Reserved. * * THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES. * USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO VERSION * 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS AVAILABLE AT * HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE" IN THE * TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION OF THIS * WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP PUBLIC * LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT THE * PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY. */ /* Note: A verbatim copy of version 2.0.1 of the OpenLDAP Public License * can be found in the file "build/LICENSE-2.0.1" in this distribution * of OpenLDAP Software. */ #ifndef _LDAP_UTF8_H #define _LDAP_UTF8_H #include /* get ber_*_t */ /* * UTF-8 Utility Routines */ LDAP_BEGIN_DECL #define LDAP_UCS4_INVALID (0x80000000U) typedef ber_int_t ldap_ucs4_t; /* LDAP_MAX_UTF8_LEN is 3 or 6 depending on size of wchar_t */ #define LDAP_MAX_UTF8_LEN ( sizeof(wchar_t) * 3/2 ) /* Unicode conversion routines */ LDAP_F( ldap_ucs4_t ) ldap_x_utf8_to_ucs4( LDAP_CONST char * p ); LDAP_F( int ) ldap_x_ucs4_to_utf8( ldap_ucs4_t c, char *buf ); /* * Wide Char / UTF-8 Conversion Routines */ /* UTF-8 character to Wide Char */ LDAP_F(int) ldap_x_utf8_to_wc LDAP_P(( wchar_t *wchar, LDAP_CONST char *utf8char )); /* UTF-8 string to Wide Char string */ LDAP_F(int) ldap_x_utf8s_to_wcs LDAP_P(( wchar_t *wcstr, LDAP_CONST char *utf8str, size_t count )); /* Wide Char to UTF-8 character */ LDAP_F(int) ldap_x_wc_to_utf8 LDAP_P(( char *utf8char, wchar_t wchar, size_t count )); /* Wide Char string to UTF-8 string */ LDAP_F(int) ldap_x_wcs_to_utf8s LDAP_P(( char *utf8str, LDAP_CONST wchar_t *wcstr, size_t count )); /* * MultiByte Char / UTF-8 Conversion Routines */ /* UTF-8 character to MultiByte character */ LDAP_F(int) ldap_x_utf8_to_mb LDAP_P(( char *mbchar, LDAP_CONST char *utf8char, int (*ldap_f_wctomb)( char *mbchar, wchar_t wchar ))); /* UTF-8 string to MultiByte string */ LDAP_F(int) ldap_x_utf8s_to_mbs LDAP_P(( char *mbstr, LDAP_CONST char *utf8str, size_t count, size_t (*ldap_f_wcstombs)( char *mbstr, LDAP_CONST wchar_t *wcstr, size_t count) )); /* MultiByte character to UTF-8 character */ LDAP_F(int) ldap_x_mb_to_utf8 LDAP_P(( char *utf8char, LDAP_CONST char *mbchar, size_t mbsize, int (*ldap_f_mbtowc)( wchar_t *wchar, LDAP_CONST char *mbchar, size_t count) )); /* MultiByte string to UTF-8 string */ LDAP_F(int) ldap_x_mbs_to_utf8s LDAP_P(( char *utf8str, LDAP_CONST char *mbstr, size_t count, size_t (*ldap_f_mbstowcs)( wchar_t *wcstr, LDAP_CONST char *mbstr, size_t count) )); LDAP_END_DECL #endif /* _LDAP_UTF8_H */ 07070100031ab6000041ed0000000000000000000000035124535600000000000000b600010002ffffffffffffffff0000001500000000root/usr/local/share07070100031ab7000041ed0000000000000000000000065124535600000000000000b600010002ffffffffffffffff0000001900000000root/usr/local/share/man07070100031ac2000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man307070100031ae6000081a400000000000000000000000151244f53000025fe000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ldap_sync.3.TH LDAP_SYNC 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 2006-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_sync_init, ldap_sync_init_refresh_only, ldap_sync_init_refresh_and_persist, ldap_sync_poll \- LDAP sync routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .B #include .LP .BI "int ldap_sync_init(ldap_sync_t *" ls ", int " mode ");" .LP .BI "int ldap_sync_init_refresh_only(ldap_sync_t *" ls ");" .LP .BI "int ldap_sync_init_refresh_and_persist(ldap_sync_t *" ls ");" .LP .BI "int ldap_sync_poll(ldap_sync_t *" ls ");" .LP .BI "ldap_sync_t * ldap_sync_initialize(ldap_sync_t *" ls ");" .LP .BI "void ldap_sync_destroy(ldap_sync_t *" ls ", int " freeit ");" .LP .BI "typedef int (*" ldap_sync_search_entry_f ")(ldap_sync_t *" ls "," .RS .BI "LDAPMessage *" msg ", struct berval *" entryUUID "," .BI "ldap_sync_refresh_t " phase ");" .RE .LP .BI "typedef int (*" ldap_sync_search_reference_f ")(ldap_sync_t *" ls "," .RS .BI "LDAPMessage *" msg ");" .RE .LP .BI "typedef int (*" ldap_sync_intermediate_f ")(ldap_sync_t *" ls "," .RS .BI "LDAPMessage *" msg ", BerVarray " syncUUIDs "," .BI "ldap_sync_refresh_t " phase ");" .RE .LP .BI "typedef int (*" ldap_sync_search_result_f ")(ldap_sync_t *" ls "," .RS .BI "LDAPMessage *" msg ", int " refreshDeletes ");" .RE .SH DESCRIPTION .LP These routines provide an interface to the LDAP Content Synchronization operation (RFC 4533). They require an .BR ldap_sync_t structure to be set up with parameters required for various phases of the operation; this includes setting some handlers for special events. All handlers take a pointer to the \fBldap_sync_t\fP structure as the first argument, and a pointer to the \fBLDAPMessage\fP structure as received from the server by the client library, plus, occasionally, other specific arguments. The members of the \fBldap_sync_t\fP structure are: .TP .BI "char *" ls_base The search base; by default, the .B BASE option in .BR ldap.conf (5). .TP .BI "int " ls_scope The search scope (one of .BR LDAP_SCOPE_BASE , .BR LDAP_SCOPE_ONELEVEL , .BR LDAP_SCOPE_SUBORDINATE or .BR LDAP_SCOPE_SUBTREE ; see .B ldap.h for details). .TP .BI "char *" ls_filter The filter (RFC 4515); by default, .BR (objectClass=*) . .TP .BI "char **" ls_attrs The requested attributes; by default .BR NULL , indicating all user attributes. .TP .BI "int " ls_timelimit The requested time limit (in seconds); by default .BR 0 , to indicate no limit. .TP .BI "int " ls_sizelimit The requested size limit (in entries); by default .BR 0 , to indicate no limit. .TP .BI "int " ls_timeout The desired timeout during polling with .BR ldap_sync_poll (3). A value of .BR \-1 means that polling is blocking, so .BR ldap_sync_poll (3) will not return until a message is received; a value of .BR 0 means that polling returns immediately, no matter if any response is available or not; a positive value represents the timeout the .BR ldap_sync_poll (3) function will wait for response before returning, unless a message is received; in that case, .BR ldap_sync_poll (3) returns as soon as the message is available. .TP .BI "ldap_sync_search_entry_f " ls_search_entry A function that is called whenever an entry is returned. The .BR msg argument is the .BR LDAPMessage that contains the searchResultEntry; it can be parsed using the regular client API routines, like .BR ldap_get_dn (3), .BR ldap_first_attribute (3), and so on. The .BR entryUUID argument contains the entryUUID of the entry. The .BR phase argument indicates the type of operation: one of .BR LDAP_SYNC_CAPI_PRESENT , .BR LDAP_SYNC_CAPI_ADD , .BR LDAP_SYNC_CAPI_MODIFY , .BR LDAP_SYNC_CAPI_DELETE ; in case of .BR LDAP_SYNC_CAPI_PRESENT or .BR LDAP_SYNC_CAPI_DELETE , only the DN is contained in the .IR LDAPMessage ; in case of .BR LDAP_SYNC_CAPI_MODIFY , the whole entry is contained in the .IR LDAPMessage , and the application is responsible of determining the differences between the new view of the entry provided by the caller and the data already known. .TP .BI "ldap_sync_search_reference_f " ls_search_reference A function that is called whenever a search reference is returned. The .BR msg argument is the .BR LDAPMessage that contains the searchResultReference; it can be parsed using the regular client API routines, like .BR ldap_parse_reference (3). .TP .BI "ldap_sync_intermediate_f " ls_intermediate A function that is called whenever something relevant occurs during the refresh phase of the search, which is marked by an \fIintermediateResponse\fP message type. The .BR msg argument is the .BR LDAPMessage that contains the intermediate response; it can be parsed using the regular client API routines, like .BR ldap_parse_intermediate (3). The .BR syncUUIDs argument contains an array of UUIDs of the entries that depends on the value of the .BR phase argument. In case of .BR LDAP_SYNC_CAPI_PRESENTS , the "present" phase is being entered; this means that the following sequence of results will consist in entries in "present" sync state. In case of .BR LDAP_SYNC_CAPI_DELETES , the "deletes" phase is being entered; this means that the following sequence of results will consist in entries in "delete" sync state. In case of .BR LDAP_SYNC_CAPI_PRESENTS_IDSET , the message contains a set of UUIDs of entries that are present; it replaces a "presents" phase. In case of .BR LDAP_SYNC_CAPI_DELETES_IDSET , the message contains a set of UUIDs of entries that have been deleted; it replaces a "deletes" phase. In case of .BR LDAP_SYNC_CAPI_DONE, a "presents" phase with "refreshDone" set to "TRUE" has been returned to indicate that the refresh phase of refreshAndPersist is over, and the client should start polling. Except for the .BR LDAP_SYNC_CAPI_PRESENTS_IDSET and .BR LDAP_SYNC_CAPI_DELETES_IDSET cases, .BR syncUUIDs is NULL. .BR .TP .BI "ldap_sync_search_result_f " ls_search_result A function that is called whenever a searchResultDone is returned. In refreshAndPersist this can only occur when the server decides that the search must be interrupted. The .BR msg argument is the .BR LDAPMessage that contains the response; it can be parsed using the regular client API routines, like .BR ldap_parse_result (3). The .BR refreshDeletes argument is not relevant in this case; it should always be \-1. .TP .BI "void *" ls_private A pointer to private data. The client may register here a pointer to data the handlers above may need. .TP .BI "LDAP *" ls_ld A pointer to a LDAP structure that is used to connect to the server. It is the responsibility of the client to initialize the structure and to provide appropriate authentication and security in place. .SH "GENERAL USE" A .B ldap_sync_t structure is initialized by calling .BR ldap_sync_initialize(3). This simply clears out the contents of an already existing .B ldap_sync_t structure, and sets appropriate values for some members. After that, the caller is responsible for setting up the connection (member .BR ls_ld ), eventually setting up transport security (TLS), for binding and any other initialization. The caller must also fill all the documented search-related fields of the .B ldap_sync_t structure. At the end of a session, the structure can be cleaned up by calling .BR ldap_sync_destroy (3), which takes care of freeing all data assuming it was allocated by .BR ldap_mem* (3) routines. Otherwise, the caller should take care of destroying and zeroing out the documented search-related fields, and call .BR ldap_sync_destroy (3) to free undocumented members set by the API. .SH "REFRESH ONLY" The .BR refreshOnly functionality is obtained by periodically calling .BR ldap_sync_init (3) with mode set to .BR LDAP_SYNC_REFRESH_ONLY , or, which is equivalent, by directly calling .BR ldap_sync_init_refresh_only (3). The state of the search, and the consistency of the search parameters, is preserved across calls by passing the .B ldap_sync_t structure as left by the previous call. .SH "REFRESH AND PERSIST" The .BR refreshAndPersist functionality is obtained by calling .BR ldap_sync_init (3) with mode set to .BR LDAP_SYNC_REFRESH_AND_PERSIST , or, which is equivalent, by directly calling .BR ldap_sync_init_refresh_and_persist (3) and, after a successful return, by repeatedly polling with .BR ldap_sync_poll (3) according to the desired pattern. A client may insert a call to .BR ldap_sync_poll (3) into an external loop to check if any modification was returned; in this case, it might be appropriate to set .BR ls_timeout to 0, or to set it to a finite, small value. Otherwise, if the client's main purpose consists in waiting for responses, a timeout of \-1 is most suitable, so that the function only returns after some data has been received and handled. .SH ERRORS All routines return any LDAP error resulting from a lower-level error in the API calls they are based on, or LDAP_SUCCESS in case of success. .BR ldap_sync_poll (3) may return .BR LDAP_SYNC_REFRESH_REQUIRED if a full refresh is requested by the server. In this case, it is appropriate to call .BR ldap_sync_init (3) again, passing the same .B ldap_sync_t structure as resulted from any previous call. .SH NOTES .SH SEE ALSO .BR ldap (3), .BR ldap_search_ext (3), .BR ldap_result (3) ; .B RFC 4533 (http://www.rfc-editor.org), .SH AUTHOR Designed and implemented by Pierangelo Masarati, based on RFC 4533 and loosely inspired by syncrepl code in .BR slapd (8). .SH ACKNOWLEDGEMENTS Initially developed by .BR "SysNet s.n.c." .B OpenLDAP is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). .B OpenLDAP is derived from University of Michigan LDAP 3.3 Release. 07070100031adc000081a400000000000000000000000151244f51000017a6000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ldap_open.3.TH LDAP_OPEN 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_init, ldap_initialize, ldap_open \- Initialize the LDAP library and open a connection to an LDAP server .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B LDAP *ldap_open(host, port) .ft char *host; int port; .LP .ft B LDAP *ldap_init(host, port) .ft char *host; int port; .LP .ft B int ldap_initialize(ldp, uri) .ft LDAP **ldp; char *uri; .LP .ft B int ldap_set_urllist_proc(ld, proc, params) .ft LDAP *ld; LDAP_URLLIST_PROC *proc; void *params; .LP .ft B int (LDAP_URLLIST_PROC)(ld, urllist, url, params); .ft LDAP *ld; LDAPURLDesc **urllist; LDAPURLDesc **url; void *params; .LP .ft B #include .LP .ft B int ldap_init_fd(fd, proto, uri, ldp) .ft ber_socket_t fd; int proto; char *uri; LDAP **ldp; .SH DESCRIPTION .LP .B ldap_open() opens a connection to an LDAP server and allocates an LDAP structure which is used to identify the connection and to maintain per-connection information. .B ldap_init() allocates an LDAP structure but does not open an initial connection. .B ldap_initialize() allocates an LDAP structure but does not open an initial connection. .B ldap_init_fd() allocates an LDAP structure using an existing connection on the provided socket. One of these routines must be called before any operations are attempted. .LP .B ldap_open() takes \fIhost\fP, the hostname on which the LDAP server is running, and \fIport\fP, the port number to which to connect. If the default IANA-assigned port of 389 is desired, LDAP_PORT should be specified for \fIport\fP. The \fIhost\fP parameter may contain a blank-separated list of hosts to try to connect to, and each host may optionally by of the form \fIhost:port\fP. If present, the \fI:port\fP overrides the \fIport\fP parameter to .BR ldap_open() . Upon successfully making a connection to an LDAP server, .B ldap_open() returns a pointer to an opaque LDAP structure, which should be passed to subsequent calls to .BR ldap_bind() , .BR ldap_search() , etc. Certain fields in the LDAP structure can be set to indicate size limit, time limit, and how aliases are handled during operations; read and write access to those fields must occur by calling .BR ldap_get_option (3) and .BR ldap_set_option (3) respectively, whenever possible. .LP .B ldap_init() acts just like .BR ldap_open() , but does not open a connection to the LDAP server. The actual connection open will occur when the first operation is attempted. .LP .B ldap_initialize() acts like .BR ldap_init() , but it returns an integer indicating either success or the failure reason, and it allows to specify details for the connection in the schema portion of the URI. The .I uri parameter may be a comma- or whitespace-separated list of URIs containing only the .IR schema , the .IR host , and the .I port fields. Apart from .BR ldap , other (non-standard) recognized values of the .I schema field are .B ldaps (LDAP over TLS), .B ldapi (LDAP over IPC), and .B cldap (connectionless LDAP). If other fields are present, the behavior is undefined. .LP At this time, .B ldap_open() and .B ldap_init() are deprecated in favor of .BR ldap_initialize() , essentially because the latter allows to specify a schema in the URI and it explicitly returns an error code. .LP .B ldap_init_fd() allows an LDAP structure to be initialized using an already-opened connection. The .I proto parameter should be one of LDAP_PROTO_TCP, LDAP_PROTO_UDP, or LDAP_PROTO_IPC for a connection using TCP, UDP, or IPC, respectively. The value LDAP_PROTO_EXT may also be specified if user-supplied sockbuf handlers are going to be used. Note that support for UDP is not implemented unless libldap was built with LDAP_CONNECTIONLESS defined. The .I uri parameter may optionally be provided for informational purposes. .LP .B ldap_set_urllist_proc() allows to set a function .I proc of type .I LDAP_URLLIST_PROC that is called when a successful connection can be established. This function receives the list of URIs parsed from the .I uri string originally passed to .BR ldap_initialize() , and the one that successfully connected. The function may manipulate the URI list; the typical use consists in moving the successful URI to the head of the list, so that subsequent attempts to connect to one of the URIs using the same LDAP handle will try it first. If .I ld is null, .I proc is set as a global parameter that is inherited by all handlers within the process that are created after the call to .BR ldap_set_urllist_proc() . By default, no .I LDAP_URLLIST_PROC is set. In a multithreaded environment, .B ldap_set_urllist_proc() must be called before any concurrent operation using the LDAP handle is started. Note: the first call into the LDAP library also initializes the global options for the library. As such the first call should be single-threaded or otherwise protected to insure that only one call is active. It is recommended that .BR ldap_get_option () or .BR ldap_set_option () be used in the program's main thread before any additional threads are created. See .BR ldap_get_option (3). .SH ERRORS If an error occurs, .B ldap_open() and .B ldap_init() will return NULL and .I errno should be set appropriately. .B ldap_initialize() and .B ldap_init_fd() will directly return the LDAP code associated to the error (or .I LDAP_SUCCESS in case of success); .I errno should be set as well whenever appropriate. .B ldap_set_urllist_proc() returns LDAP_OPT_ERROR on error, and LDAP_OPT_SUCCESS on success. .SH SEE ALSO .BR ldap (3), .BR ldap_bind (3), .BR ldap_get_option (3), .BR ldap_set_option (3), .BR lber-sockbuf (3), .BR errno (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae8000081a400000000000000000000000151244f5300000be9000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ldap_url.3.TH LDAP_URL 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_is_ldap_url, ldap_url_parse, ldap_free_urldesc \- LDAP Uniform Resource Locator routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_is_ldap_url( const char *url ) .LP .ft B int ldap_url_parse( const char *url, LDAPURLDesc **ludpp ) .LP typedef struct ldap_url_desc { char * lud_scheme; /* URI scheme */ char * lud_host; /* LDAP host to contact */ int lud_port; /* port on host */ char * lud_dn; /* base for search */ char ** lud_attrs; /* list of attributes */ int lud_scope; /* a LDAP_SCOPE_... value */ char * lud_filter; /* LDAP search filter */ char ** lud_exts; /* LDAP extensions */ int lud_crit_exts; /* true if any extension is critical */ /* may contain additional fields for internal use */ } LDAPURLDesc; .LP .ft B void ldap_free_urldesc( LDAPURLDesc *ludp ); .SH DESCRIPTION These routines support the use of LDAP URLs (Uniform Resource Locators) as detailed in RFC 4516. LDAP URLs look like this: .nf \fBldap://\fP\fIhostport\fP\fB/\fP\fIdn\fP[\fB?\fP\fIattrs\fP[\fB?\fP\fIscope\fP[\fB?\fP\fIfilter\fP[\fB?\fP\fIexts\fP]]]] where: \fIhostport\fP is a host name with an optional ":portnumber" \fIdn\fP is the search base \fIattrs\fP is a comma separated list of attributes to request \fIscope\fP is one of these three strings: base one sub (default=base) \fIfilter\fP is filter \fIexts\fP are recognized set of LDAP and/or API extensions. Example: ldap://ldap.example.net/dc=example,dc=net?cn,sn?sub?(cn=*) .fi .LP URLs that are wrapped in angle-brackets and/or preceded by "URL:" are also tolerated. Alternative LDAP schemes such as ldaps:// and ldapi:// may be parsed using the below routines as well. .LP .B ldap_is_ldap_url() returns a non-zero value if \fIurl\fP looks like an LDAP URL (as opposed to some other kind of URL). It can be used as a quick check for an LDAP URL; the .B ldap_url_parse() routine should be used if a more thorough check is needed. .LP .B ldap_url_parse() breaks down an LDAP URL passed in \fIurl\fP into its component pieces. If successful, zero is returned, an LDAP URL description is allocated, filled in, and \fIludpp\fP is set to point to it. If an error occurs, a non-zero URL error code is returned. .LP .B ldap_free_urldesc() should be called to free an LDAP URL description that was obtained from a call to .B ldap_url_parse(). .SH SEE ALSO .nf .BR ldap (3) .BR "RFC 4516" " " .SH ACKNOWLEDGEMENTS .fi .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad5000081a400000000000000000000000151244f50000008fd000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ldap_first_reference.3.TH LDAP_FIRST_REFERENCE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_first_reference, ldap_next_reference, ldap_count_references \- Stepping through continuation references in a result chain .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_count_references( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_first_reference( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_next_reference( LDAP *ld, LDAPMessage *reference ) .SH DESCRIPTION .LP These routines are used to step through the continuation references in a result chain received from .BR ldap_result (3) or the synchronous LDAP search operation routines. .LP The .B ldap_first_reference() routine is used to retrieve the first reference message in a result chain. It takes the \fIresult\fP as returned by a call to .BR ldap_result (3) , .BR ldap_search_s (3) or .BR ldap_search_st (3) and returns a pointer to the first reference message in the result chain. .LP This pointer should be supplied on a subsequent call to .B ldap_next_reference() to get the next reference message, the result of which should be supplied to the next call to .BR ldap_next_reference() , etc. .B ldap_next_reference() will return NULL when there are no more reference messages. The reference messages returned from these calls are used by .BR ldap_parse_reference (3) to extract referrals and controls. .LP A count of the number of reference messages in the search result can be obtained by calling .BR ldap_count_references() . It can also be used to count the number of reference messages remaining in a result chain. .SH ERRORS If an error occurs in .B ldap_first_reference() or .BR ldap_next_reference() , NULL is returned. If an error occurs in .BR ldap_count_references() , -1 is returned. .SH SEE ALSO .BR ldap (3), .BR ldap_result (3), .BR ldap_search (3), .BR ldap_parse_reference (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae4000081a400000000000000000000000151244f5200001423000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_search.3.TH LDAP_SEARCH 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_search, ldap_search_s, ldap_search_st, ldap_search_ext, ldap_search_ext_s \- Perform an LDAP search operation .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include #include .LP .ft B int ldap_search_ext( .RS LDAP *\fIld\fB, char *\fIbase\fB, int \fIscope\fB, char *\fIfilter\fB, char *\fIattrs\fB[], int \fIattrsonly\fB, LDAPControl **\fIserverctrls\fB, LDAPControl **\fIclientctrls\fB, struct timeval *\fItimeout\fB, int \fIsizelimit\fB, int *\fImsgidp\fB ); .RE .LP .ft B int ldap_search_ext_s( .RS LDAP *\fIld\fB, char *\fIbase\fB, int \fIscope\fB, char *\fIfilter\fB, char *\fIattrs\fB[], int \fIattrsonly\fB, LDAPControl **\fIserverctrls\fB, LDAPControl **\fIclientctrls\fB, struct timeval *\fItimeout\fB, int \fIsizelimit\fB, LDAPMessage **\fIres\fB ); .RE .SH DESCRIPTION These routines are used to perform LDAP search operations. The .B ldap_search_ext_s() routine does the search synchronously (i.e., not returning until the operation completes), providing a pointer to the resulting LDAP messages at the location pointed to by the \fIres\fP parameter. .LP The .B ldap_search_ext() routine is the asynchronous version, initiating the search and returning the message id of the operation it initiated in the integer pointed to by the \fImsgidp\fP parameter. .LP The \fIbase\fP parameter is the DN of the entry at which to start the search. .LP The \fIscope\fP parameter is the scope of the search and should be one of LDAP_SCOPE_BASE, to search the object itself, LDAP_SCOPE_ONELEVEL, to search the object's immediate children, LDAP_SCOPE_SUBTREE, to search the object and all its descendants, or LDAP_SCOPE_CHILDREN, to search all of the descendants. Note that the latter requires the server support the LDAP Subordinates Search Scope extension. .LP The \fIfilter\fP is a string representation of the filter to apply in the search. The string should conform to the format specified in RFC 4515 as extended by RFC 4526. For instance, "(cn=Jane Doe)". Note that use of the extension requires the server to support the LDAP Absolute True/False Filter extension. NULL may be specified to indicate the library should send the filter (objectClass=*). .LP The \fIattrs\fP parameter is a null-terminated array of attribute descriptions to return from matching entries. If NULL is specified, the return of all user attributes is requested. The description "*" (LDAP_ALL_USER_ATTRIBUTES) may be used to request all user attributes to be returned. The description "+"(LDAP_ALL_OPERATIONAL_ATTRIBUTES) may be used to request all operational attributes to be returned. Note that this requires the server to support the LDAP All Operational Attribute extension. To request no attributes, the description "1.1" (LDAP_NO_ATTRS) should be listed by itself. .LP The \fIattrsonly\fP parameter should be set to a non-zero value if only attribute descriptions are wanted. It should be set to zero (0) if both attributes descriptions and attribute values are wanted. .LP The \fIserverctrls\fP and \fIclientctrls\fP parameters may be used to specify server and client controls, respectively. .LP The .B ldap_search_ext_s() routine is the synchronous version of .BR ldap_search_ext(). .LP It also returns a code indicating success or, in the case of failure, indicating the nature of the failure of the operation. See .BR ldap_error (3) for details. .SH NOTES Note that both read and list functionality are subsumed by these routines, by using a filter like "(objectclass=*)" and a scope of LDAP_SCOPE_BASE (to emulate read) or LDAP_SCOPE_ONELEVEL (to emulate list). .LP These routines may dynamically allocate memory. The caller is responsible for freeing such memory using supplied deallocation routines. Return values are contained in . .LP Note that \fIres\fR parameter of .B ldap_search_ext_s() and .B ldap_search_s() should be freed with .B ldap_msgfree() regardless of return value of these functions. .SH DEPRECATED INTERFACES The .B ldap_search() routine is deprecated in favor of the .B ldap_search_ext() routine. The .B ldap_search_s() and .B ldap_search_st() routines are deprecated in favor of the .B ldap_search_ext_s() routine. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .BR ldap_result (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae1000081a400000000000000000000000151244f5100000a59000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_rename.3.TH LDAP_RENAME 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_rename, ldap_rename_s \- Renames the specified entry. .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_rename( ld, dn, newrdn, newparent, deleteoldrdn, sctrls[], cctrls[], msgidp ); .ft LDAP *ld; const char *dn, *newrdn, *newparent; int deleteoldrdn; LDAPControl *sctrls[], *cctrls[]; int *msgidp); .LP .ft B int ldap_rename_s( ld, dn, newrdn, newparent, deleteoldrdn, sctrls[], cctrls[] ); .ft LDAP *ld; const char *dn, *newrdn, *newparent; int deleteoldrdn; LDAPControl *sctrls[], *cctrls[]; .SH DESCRIPTION These routines are used to perform a LDAP rename operation. The function changes the leaf component of an entry's distinguished name and optionally moves the entry to a new parent container. The .B ldap_rename_s performs a rename operation synchronously. The method takes \fIdn\fP, which points to the distinguished name of the entry whose attribute is being compared, \fInewparent\fP,the distinguished name of the entry's new parent. If this parameter is NULL, only the RDN is changed. The root DN is specified by passing a zero length string, "". \fIdeleteoldrdn\fP specifies whether the old RDN should be retained or deleted. Zero indicates that the old RDN should be retained. If you choose this option, the attribute will contain both names (the old and the new). Non-zero indicates that the old RDN should be deleted. \fIserverctrls\fP points to an array of LDAPControl structures that list the client controls to use with this extended operation. Use NULL to specify no client controls. \fIclientctrls\fP points to an array of LDAPControl structures that list the client controls to use with the search. .LP .B ldap_rename works just like .B ldap_rename_s, but the operation is asynchronous. It returns the message id of the request it initiated. The result of this operation can be obtained by calling .BR ldap_result(3). .SH ERRORS .B ldap_rename() returns \-1 in case of error initiating the request, and will set the \fIld_errno\fP field in the \fIld\fP parameter to indicate the error. .BR ldap_rename_s() returns the LDAP error code resulting from the rename operation. .SH SEE ALSO .BR ldap (3), .BR ldap_modify (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031acb000081a400000000000000000000000151244f4e00002e2c000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ldap_bind.3.TH LDAP_BIND 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_bind, ldap_bind_s, ldap_simple_bind, ldap_simple_bind_s, ldap_sasl_bind, ldap_sasl_bind_s, ldap_sasl_interactive_bind_s, ldap_parse_sasl_bind_result, ldap_unbind, ldap_unbind_s, ldap_unbind_ext, ldap_unbind_ext_s, ldap_set_rebind_proc \- LDAP bind routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .B #include .LP .BI "int ldap_bind(LDAP *" ld ", const char *" who ", const char *" cred "," .RS .BI "int " method ");" .RE .LP .BI "int ldap_bind_s(LDAP *" ld ", const char *" who ", const char *" cred "," .RS .BI "int " method ");" .RE .LP .BI "int ldap_simple_bind(LDAP *" ld ", const char *" who ", const char *" passwd ");" .LP .BI "int ldap_simple_bind_s(LDAP *" ld ", const char *" who ", const char *" passwd ");" .LP .BI "int ldap_sasl_bind(LDAP *" ld ", const char *" dn ", const char *" mechanism "," .RS .BI "struct berval *" cred ", LDAPControl *" sctrls "[]," .BI "LDAPControl *" cctrls "[], int *" msgidp ");" .RE .LP .BI "int ldap_sasl_bind_s(LDAP *" ld ", const char *" dn ", const char *" mechanism "," .RS .BI "struct berval *" cred ", LDAPControl *" sctrls "[]," .BI "LDAPControl *" cctrls "[], struct berval **" servercredp ");" .RE .LP .BI "int ldap_parse_sasl_bind_result(LDAP *" ld ", LDAPMessage *" res "," .RS .BI "struct berval **" servercredp ", int " freeit ");" .RE .LP .BI "int ldap_sasl_interactive_bind_s(LDAP *" ld ", const char *" dn "," .RS .BI "const char *" mechs "," .BI "LDAPControl *" sctrls "[], LDAPControl *" cctrls "[]," .BI "unsigned " flags ", LDAP_SASL_INTERACT_PROC *" interact "," .BI "void *" defaults ");" .RE .LP .BI "int ldap_sasl_interactive_bind(LDAP *" ld ", const char *" dn "," .RS .BI "const char *" mechs "," .BI "LDAPControl *" sctrls "[], LDAPControl *" cctrls "[]," .BI "unsigned " flags ", LDAP_SASL_INTERACT_PROC *" interact "," .BI "void *" defaults ", LDAPMessage *" result "," .BI "const char **" rmechp ", int *" msgidp ");" .RE .LP .BI "int (LDAP_SASL_INTERACT_PROC)(LDAP *" ld ", unsigned " flags ", void *" defaults ", void *" sasl_interact ");" .LP .BI "int ldap_unbind(LDAP *" ld ");" .LP .BI "int ldap_unbind_s(LDAP *" ld ");" .LP .BI "int ldap_unbind_ext(LDAP *" ld ", LDAPControl *" sctrls "[]," .RS .BI "LDAPControl *" cctrls "[]);" .RE .LP .BI "int ldap_unbind_ext_s(LDAP *" ld ", LDAPControl *" sctrls "[]," .RS .BI "LDAPControl *" cctrls "[]);" .RE .LP .BI "int ldap_set_rebind_proc (LDAP *" ld ", LDAP_REBIND_PROC *" ldap_proc ", void *" params ");" .LP .BI "int (LDAP_REBIND_PROC)(LDAP *" ld ", LDAP_CONST char *" url ", ber_tag_t " request ", ber_int_t " msgid ", void *" params ");" .SH DESCRIPTION .LP These routines provide various interfaces to the LDAP bind operation. After an association with an LDAP server is made using .BR ldap_init (3), an LDAP bind operation should be performed before other operations are attempted over the connection. An LDAP bind is required when using Version 2 of the LDAP protocol; it is optional for Version 3 but is usually needed due to security considerations. .LP There are three types of bind calls, ones providing simple authentication, ones providing SASL authentication, and general routines capable of doing either simple or SASL authentication. .LP .B SASL (Simple Authentication and Security Layer) can negotiate one of many different kinds of authentication. Both synchronous and asynchronous versions of each variant of the bind call are provided. All routines take \fIld\fP as their first parameter, as returned from .BR ldap_init (3). .SH SIMPLE AUTHENTICATION The simplest form of the bind call is .BR ldap_simple_bind_s() . It takes the DN to bind as in \fIwho\fP, and the userPassword associated with the entry in \fIpasswd\fP. It returns an LDAP error indication (see .BR ldap_error (3)). The .B ldap_simple_bind() call is asynchronous, taking the same parameters but only initiating the bind operation and returning the message id of the request it sent. The result of the operation can be obtained by a subsequent call to .BR ldap_result (3). .SH GENERAL AUTHENTICATION The .B ldap_bind() and .B ldap_bind_s() routines can be used when the authentication method to use needs to be selected at runtime. They both take an extra \fImethod\fP parameter selecting the authentication method to use. It should be set to LDAP_AUTH_SIMPLE to select simple authentication. .B ldap_bind() returns the message id of the request it initiates. .B ldap_bind_s() returns an LDAP error indication. .SH SASL AUTHENTICATION For SASL binds the server always ignores any provided DN, so the .I dn parameter should always be NULL. .BR ldap_sasl_bind_s () sends a single SASL bind request with the given SASL .I mechanism and credentials in the .I cred parameter. The format of the credentials depends on the particular SASL mechanism in use. For mechanisms that provide mutual authentication the server's credentials will be returned in the .I servercredp parameter. The routine returns an LDAP error indication (see .BR ldap_error (3)). The .BR ldap_sasl_bind () call is asynchronous, taking the same parameters but only sending the request and returning the message id of the request it sent. The result of the operation can be obtained by a subsequent call to .BR ldap_result (3). The result must be additionally parsed by .BR ldap_parse_sasl_bind_result () to obtain any server credentials sent from the server. .LP Many SASL mechanisms require multiple message exchanges to perform a complete authentication. Applications should generally use .BR ldap_sasl_interactive_bind_s () rather than calling the basic .BR ldap_sasl_bind () functions directly. The .I mechs parameter should contain a space-separated list of candidate mechanisms to use. If this parameter is NULL or empty the library will query the supportedSASLMechanisms attribute from the server's rootDSE for the list of SASL mechanisms the server supports. The .I flags parameter controls the interaction used to retrieve any necessary SASL authentication parameters and should be one of: .TP LDAP_SASL_AUTOMATIC use defaults if available, prompt otherwise .TP LDAP_SASL_INTERACTIVE always prompt .TP LDAP_SASL_QUIET never prompt .LP The .I interact function uses the provided .I defaults to handle requests from the SASL library for particular authentication parameters. There is no defined format for the .I defaults information; it is up to the caller to use whatever format is appropriate for the supplied .I interact function. The .I sasl_interact parameter comes from the underlying SASL library. When used with Cyrus SASL this is an array of .B sasl_interact_t structures. The Cyrus SASL library will prompt for a variety of inputs, including: .TP SASL_CB_GETREALM the realm for the authentication attempt .TP SASL_CB_AUTHNAME the username to authenticate .TP SASL_CB_PASS the password for the provided username .TP SASL_CB_USER the username to use for proxy authorization .TP SASL_CB_NOECHOPROMPT generic prompt for input with input echoing disabled .TP SASL_CB_ECHOPROMPT generic prompt for input with input echoing enabled .TP SASL_CB_LIST_END indicates the end of the array of prompts .LP See the Cyrus SASL documentation for more details. .LP Applications which need to manage connections asynchronously may use .BR ldap_sasl_interactive_bind () instead of the synchronous version. A valid mechs parameter must be supplied, otherwise the library will be forced to query the server for a list of supported mechanisms, and this query will be performed synchronously. The other parameters are the same as for the synchronous function, with three additional parameters. The actual SASL mechanism that was used, and the message ID for use with .BR ldap_result () will be returned in rmechp and msgidp, respectively. The value in rmechp must not be modified by the caller and must be passed back on each subsequent call. The message obtained from .BR ldap_result () must be passed in the result parameter. This parameter must be NULL when initiating a new Bind. The caller must free the result message after each call using .BR ldap_msgfree (). The .BR ldap_sasl_interactive_bind () function returns an LDAP result code. If the code is LDAP_SASL_BIND_IN_PROGRESS then the Bind is not complete yet, and this function must be called again with the next result from the server. .SH REBINDING .LP The .B ldap_set_rebind_proc function() sets the process to use for binding when an operation returns a referral. This function is used when an application needs to bind to another server in order to follow a referral or search continuation reference. .LP The function takes \fIld\fP, the \fIrebind\fP function, and the \fIparams\fP, the arbitrary data like state information which the client might need to properly rebind. The LDAP_OPT_REFERRALS option in the \fIld\fP must be set to ON for the libraries to use the rebind function. Use the .BR ldap_set_option function to set the value. .LP The rebind function parameters are as follows: .LP The \fIld\fP parameter must be used by the application when binding to the referred server if the application wants the libraries to follow the referral. .LP The \fIurl\fP parameter points to the URL referral string received from the LDAP server. The LDAP application can use the .BR ldap_url_parse (3) function to parse the string into its components. .LP The \fIrequest\fP parameter specifies the type of request that generated the referral. .LP The \fImsgid\fP parameter specifies the message ID of the request generating the referral. .LP The \fIparams\fP parameter is the same value as passed originally to the .BR ldap_set_rebind_proc () function. .LP The LDAP libraries set all the parameters when they call the rebind function. The application should not attempt to free either the ld or the url structures in the rebind function. .LP The application must supply to the rebind function the required authentication information such as, user name, password, and certificates. The rebind function must use a synchronous bind method. .SH UNBINDING The .B ldap_unbind() call is used to unbind from the directory, terminate the current association, and free the resources contained in the \fIld\fP structure. Once it is called, the connection to the LDAP server is closed, and the \fIld\fP structure is invalid. The .B ldap_unbind_s() call is just another name for .BR ldap_unbind() ; both of these calls are synchronous in nature. .LP The .B ldap_unbind_ext() and .B ldap_unbind_ext_s() allows the operations to specify controls. .SH ERRORS Asynchronous routines will return \-1 in case of error, setting the \fIld_errno\fP parameter of the \fIld\fP structure. Synchronous routines return whatever \fIld_errno\fP is set to. See .BR ldap_error (3) for more information. .SH NOTES If an anonymous bind is sufficient for the application, the rebind process need not be provided. The LDAP libraries with the LDAP_OPT_REFERRALS option set to ON (default value) will automatically follow referrals using an anonymous bind. .LP If the application needs stronger authentication than an anonymous bind, you need to provide a rebind process for that authentication method. The bind method must be synchronous. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .BR ldap_open (3), .BR ldap_set_option (3), .BR ldap_url_parse (3) .B RFC 4422 (http://www.rfc-editor.org), .B Cyrus SASL (http://asg.web.cmu.edu/sasl/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031adb000081a400000000000000000000000151244f51000008e0000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_modrdn.3.TH LDAP_MODRDN 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_modrdn, ldap_modrdn_s, ldap_modrdn2, ldap_modrdn2_s \- Perform an LDAP modify RDN operation .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_modrdn(ld, dn, newrdn) .ft LDAP \(**ld; char \(**dn, \(**newrdn; .LP .ft B .LP .ft B int ldap_modrdn_s(ld, dn, newrdn) .ft LDAP \(**ld; char \(**dn, \(**newrdn; .LP .ft B int ldap_modrdn2(ld, dn, newrdn, deleteoldrdn) .ft LDAP \(**ld; char \(**dn, \(**newrdn; int deleteoldrdn; .LP .ft B int ldap_modrdn2_s(ld, dn, newrdn, deleteoldrdn) .ft LDAP \(**ld; char \(**dn, \(**newrdn; int deleteoldrdn; .SH DESCRIPTION The .B ldap_modrdn() and .B ldap_modrdn_s() routines perform an LDAP modify RDN operation. They both take \fIdn\fP, the DN of the entry whose RDN is to be changed, and \fInewrdn\fP, the new RDN to give the entry. The old RDN of the entry is never kept as an attribute of the entry. .B ldap_modrdn() is asynchronous, returning the message id of the operation it initiates. .B ldap_modrdn_s() is synchronous, returning the LDAP error code indicating the success or failure of the operation. Use of these routines is deprecated. Use the versions described below instead. .LP The .B ldap_modrdn2() and .B ldap_modrdn2_s() routines also perform an LDAP modify RDN operation, taking the same parameters as above. In addition, they both take the \fIdeleteoldrdn\fP parameter which is used as a boolean value to indicate whether the old RDN values should be deleted from the entry or not. .SH ERRORS The synchronous (_s) versions of these routines return an LDAP error code, either LDAP_SUCCESS or an error if there was trouble. The asynchronous versions return \-1 in case of trouble, setting the .B ld_errno field of \fIld\fP. See .BR ldap_error (3) for more details. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031aca000081a400000000000000000000000151244f4e00000a4a000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ldap_add.3.TH LDAP_ADD 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_add_ext, ldap_add_ext_s \- Perform an LDAP add operation .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .ft B #include .LP .ft B .nf int ldap_add_ext( .RS .ft B LDAP *\fIld, const char *\fIdn\fB, LDAPMod **\fIattrs\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB, int *\fImsgidp\fB ); .RE .LP .ft B .nf int ldap_add_ext_s( .RS LDAP *\fIld\fB, const char *\fIdn\fB, LDAPMod **\fIattrs\fB, LDAPControl *\fIsctrls\fB, LDAPControl *\fIcctrls\fB ); .RE .fi .SH DESCRIPTION The .B ldap_add_ext_s() routine is used to perform an LDAP add operation. It takes \fIdn\fP, the DN of the entry to add, and \fIattrs\fP, a null-terminated array of the entry's attributes. The LDAPMod structure is used to represent attributes, with the \fImod_type\fP and \fImod_values\fP fields being used as described under .BR ldap_modify_ext (3), and the \fIldap_op\fP field being used only if you need to specify the LDAP_MOD_BVALUES option. Otherwise, it should be set to zero. .LP Note that all entries except that specified by the last component in the given DN must already exist. .B ldap_add_ext_s() returns an code indicating success or, in the case of failure, indicating the nature of failure of the operation. See .BR ldap_error (3) for more details. .LP The .B ldap_add_ext() routine works just like .BR ldap_add_ext_s() , but it is asynchronous. It returns the message id of the request it initiated. The result of this operation can be obtained by calling .BR ldap_result (3). .SH DEPRECATED INTERFACES The .BR ldap_add () and .BR ldap_add_s () routines are deprecated in favor of the .BR ldap_add_ext () and .BR ldap_add_ext_s () routines, respectively. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .BR ldap_modify (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad6000081a400000000000000000000000151244f5000001a39000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_get_dn.3.TH LDAP_GET_DN 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_get_dn, ldap_explode_dn, ldap_explode_rdn, ldap_dn2ufn \- LDAP DN handling routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B char *ldap_get_dn( LDAP *ld, LDAPMessage *entry ) .LP .ft B int ldap_str2dn( const char *str, LDAPDN *dn, unsigned flags ) .LP .ft B void ldap_dnfree( LDAPDN dn ) .LP .ft B int ldap_dn2str( LDAPDN dn, char **str, unsigned flags ) .LP .ft B char **ldap_explode_dn( const char *dn, int notypes ) .LP .ft B char **ldap_explode_rdn( const char *rdn, int notypes ) .LP .ft B char *ldap_dn2ufn( const char * dn ) .LP .ft B char *ldap_dn2dcedn( const char * dn ) .LP .ft B char *ldap_dcedn2dn( const char * dn ) .LP .ft B char *ldap_dn2ad_canonical( const char * dn ) .SH DESCRIPTION These routines allow LDAP entry names (Distinguished Names, or DNs) to be obtained, parsed, converted to a user-friendly form, and tested. A DN has the form described in RFC 4414 "Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names". .LP The .B ldap_get_dn() routine takes an \fIentry\fP as returned by .BR ldap_first_entry (3) or .BR ldap_next_entry (3) and returns a copy of the entry's DN. Space for the DN will be obtained dynamically and should be freed by the caller using .BR ldap_memfree (3). .LP .B ldap_str2dn() parses a string representation of a distinguished name contained in .B str into its components, which are stored in .B dn as .B ldap_ava structures, arranged in .B LDAPAVA, .B LDAPRDN, and .B LDAPDN terms. Space for .B dn will be obtained dynamically and should be freed by the caller using .BR ldap_dnfree (3). The .B LDAPDN is defined as: .nf .ft B typedef struct ldap_ava { char *la_attr; struct berval *la_value; unsigned la_flags; } LDAPAVA; typedef LDAPAVA** LDAPRDN; typedef LDAPRDN* LDAPDN; .ft .fi The attribute types and the attribute values are not normalized. The .B la_flags can be either .B LDAP_AVA_STRING or .B LDAP_AVA_BINARY, the latter meaning that the value is BER/DER encoded and thus must be represented as, quoting from RFC 4514, " ... an octothorpe character ('#' ASCII 35) followed by the hexadecimal representation of each of the bytes of the BER encoding of the X.500 AttributeValue." The .B flags parameter to .B ldap_str2dn() can be .LP .nf LDAP_DN_FORMAT_LDAPV3 LDAP_DN_FORMAT_LDAPV2 LDAP_DN_FORMAT_DCE .fi which defines what DN syntax is expected (according to RFC 4514, RFC 1779 and DCE, respectively). The format can be \fIOR\fPed to the flags .LP .nf LDAP_DN_P_NO_SPACES LDAP_DN_P_NO_SPACE_AFTER_RDN ... LDAP_DN_PEDANTIC .fi The latter is a shortcut for all the previous limitations. .LP .B LDAP_DN_P_NO_SPACES does not allow extra spaces in the dn; the default is to silently eliminate spaces around AVA separators ('='), RDN component separators ('+' for LDAPv3/LDAPv2 or ',' for DCE) and RDN separators (',' LDAPv3/LDAPv2 or '/' for DCE). .LP .B LDAP_DN_P_NO_SPACE_AFTER_RDN does not allow a single space after RDN separators. .LP .B ldap_dn2str() performs the inverse operation, yielding in .B str a string representation of .B dn. It allows the same values for .B flags as .B ldap_str2dn(), plus .LP .nf LDAP_DN_FORMAT_UFN LDAP_DN_FORMAT_AD_CANONICAL .fi for user-friendly naming (RFC 1781) and AD canonical. .LP The following routines are viewed as deprecated in favor of .B ldap_str2dn() and .BR ldap_dn2str(). They are provided to support legacy applications. .LP The .B ldap_explode_dn() routine takes a DN as returned by .B ldap_get_dn() and breaks it up into its component parts. Each part is known as a Relative Distinguished Name, or RDN. .B ldap_explode_dn() returns a NULL-terminated array, each component of which contains an RDN from the DN. The \fInotypes\fP parameter is used to request that only the RDN values be returned, not their types. For example, the DN "cn=Bob, c=US" would return as either { "cn=Bob", "c=US", NULL } or { "Bob", "US", NULL }, depending on whether notypes was 0 or 1, respectively. Assertion values in RDN strings may included escaped characters. The result can be freed by calling .BR ldap_value_free (3). .LP Similarly, the .B ldap_explode_rdn() routine takes an RDN as returned by .B ldap_explode_dn(dn,0) and breaks it up into its "type=value" component parts (or just "value", if the \fInotypes\fP parameter is set). Note the value is not unescaped. The result can be freed by calling .BR ldap_value_free (3). .LP .B ldap_dn2ufn() is used to turn a DN as returned by .BR ldap_get_dn (3) into a more user-friendly form, stripping off all type names. See "Using the Directory to Achieve User Friendly Naming" (RFC 1781) for more details on the UFN format. Due to the ambiguous nature of the format, it is generally only used for display purposes. The space for the UFN returned is obtained dynamically and the user is responsible for freeing it via a call to .BR ldap_memfree (3). .LP .B ldap_dn2dcedn() is used to turn a DN as returned by .BR ldap_get_dn (3) into a DCE-style DN, e.g. a string with most-significant to least significant rdns separated by slashes ('/'); rdn components are separated by commas (','). Only printable chars (e.g. LDAPv2 printable string) are allowed, at least in this implementation. .B ldap_dcedn2dn() performs the opposite operation. .B ldap_dn2ad_canonical() turns a DN into a AD canonical name, which is basically a DCE dn with attribute types omitted. The trailing domain, if present, is turned in a DNS-like domain. The space for the returned value is obtained dynamically and the user is responsible for freeing it via a call to .BR ldap_memfree (3). .SH ERRORS If an error occurs in .BR ldap_get_dn() , NULL is returned and the .B ld_errno field in the \fIld\fP parameter is set to indicate the error. See .BR ldap_error (3) for a description of possible error codes. .BR ldap_explode_dn() , .BR ldap_explode_rdn() , .B ldap_dn2ufn(), .B ldap_dn2dcedn(), .B ldap_dcedn2dn(), and .B ldap_dn2ad_canonical() will return NULL with .BR errno (3) set appropriately in case of trouble. .SH NOTES These routines dynamically allocate memory that the caller must free. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .BR ldap_first_entry (3), .BR ldap_memfree (3), .BR ldap_value_free (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac5000081a400000000000000000000000151244f4e000005ec000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/lber-memory.3.TH LBER_MEMORY 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ber_memalloc, ber_memcalloc, ber_memrealloc, ber_memfree, ber_memvfree \- OpenLDAP LBER memory allocators .SH LIBRARY OpenLDAP LBER (liblber, \-llber) .SH SYNOPSIS .B #include .LP .BI "void *ber_memalloc(ber_len_t " bytes ");" .LP .BI "void *ber_memcalloc(ber_len_t " nelems ", ber_len_t " bytes ");" .LP .BI "void *ber_memrealloc(void *" ptr ", ber_len_t " bytes ");" .LP .BI "void ber_memfree(void *" ptr ");" .LP .BI "void ber_memvfree(void **" vec ");" .SH DESCRIPTION .LP These routines are used to allocate/deallocate memory used/returned by the Lightweight BER library as required by .BR lber-encode (3) and .BR lber-decode (3). .BR ber_memalloc (), .BR ber_memcalloc (), .BR ber_memrealloc (), and .BR ber_memfree () are used exactly like the standard .BR malloc (3), .BR calloc (3), .BR realloc (3), and .BR free (3) routines, respectively. The .BR ber_memvfree () routine is used to free a dynamically allocated array of pointers to arbitrary dynamically allocated objects. .SH SEE ALSO .BR lber-decode (3), .BR lber-encode (3), .BR lber-types (3) .LP .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ace000081a400000000000000000000000151244f4f000009c7000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_delete.3.TH LDAP_DELETE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_delete, ldap_delete_s, ldap_delete_ext, ldap_delete_ext_s \- Perform an LDAP delete operation. .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_delete_s(ld, dn) .ft LDAP *ld; char *dn; .LP .ft B int ldap_delete(ld, dn) .ft LDAP *ld; char *dn; .LP .ft B int ldap_delete_ext(ld, dn, serverctrls, clientctrls, msgidp) .ft LDAP *ld; char *dn; LDAPControl **serverctrls, **clientctrls; int *msgidp; .LP .ft B int ldap_delete_ext_s(ld, dn, serverctrls, clientctrls) .ft LDAP *ld; char *dn; LDAPControl **serverctrls, **clientctrls; .SH DESCRIPTION The .B ldap_delete_s() routine is used to perform an LDAP delete operation synchronously. It takes \fIdn\fP, the DN of the entry to be deleted. It returns an LDAP error code, indicating the success or failure of the operation. .LP The .B ldap_delete() routine is used to perform an LDAP delete operation asynchronously. It takes the same parameters as .BR ldap_delete_s(), but returns the message id of the request it initiated. The result of the delete can be obtained by a subsequent call to .BR ldap_result (3). .LP The .B ldap_delete_ext() routine allows server and client controls to be specified to extend the delete request. This routine is asynchronous like ldap_delete(), but its return value is an LDAP error code. It stores the message id of the request in the integer pointed to by msgidp. .LP The .B ldap_delete_ext_s() routine is the synchronous version of .BR ldap_delete_ext(). It also returns an LDAP error code indicating success or failure of the operation. .SH ERRORS .B ldap_delete_s() returns an LDAP error code which can be interpreted by calling one of .BR ldap_perror (3) and friends. .B ldap_delete() returns \-1 if something went wrong initiating the request. It returns the non-negative message id of the request if things went ok. .LP .B ldap_delete_ext() and .B ldap_delete_ext_s() return some Non-zero value if something went wrong initiating the request, else return 0. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac6000081a400000000000000000000000151244f4e000016ad000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/lber-sockbuf.3.TH LBER_SOCKBUF 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ber_sockbuf_alloc, ber_sockbuf_free, ber_sockbuf_ctrl, ber_sockbuf_add_io, ber_sockbuf_remove_io, Sockbuf_IO \- OpenLDAP LBER I/O infrastructure .SH LIBRARY OpenLDAP LBER (liblber, \-llber) .SH SYNOPSIS .B #include .LP .B Sockbuf *ber_sockbuf_alloc( void ); .LP .BI "void ber_sockbuf_free(Sockbuf *" sb ");" .LP .BI "int ber_sockbuf_ctrl(Sockbuf *" sb ", int " opt ", void *" arg ");" .LP .BI "int ber_sockbuf_add_io(Sockbuf *" sb ", Sockbuf_IO *" sbio ", int " layer ", void *" arg ");" .LP .BI "int ber_sockbuf_remove_io(Sockbuf *" sb ", Sockbuf_IO *" sbio ", int " layer ");" .LP .nf .B typedef struct sockbuf_io_desc { .BI "int " sbiod_level ";" .BI "Sockbuf *" sbiod_sb ";" .BI "Sockbuf_IO *" sbiod_io ";" .BI "void *" sbiod_pvt ";" .BI "struct sockbuf_io_desc *" sbiod_next ";" .B } Sockbuf_IO_Desc; .LP .B typedef struct sockbuf_io { .BI "int (*" sbi_setup ")(Sockbuf_IO_Desc *" sbiod ", void *" arg ");" .BI "int (*" sbi_remove ")(Sockbuf_IO_Desc *" sbiod ");" .BI "int (*" sbi_ctrl ")(Sockbuf_IO_Desc *" sbiod ", int " opt ", void *" arg ");" .BI "ber_slen_t (*" sbi_read ")(Sockbuf_IO_Desc *" sbiod ", void *" buf ", ber_len_t " len ");" .BI "ber_slen_t (*" sbi_write ")(Sockbuf_IO_Desc *" sbiod ", void *" buf ", ber_len_t " len ");" .BI "int (*" sbi_close ")(Sockbuf_IO_Desc *" sbiod ");" .B } Sockbuf_IO; .SH DESCRIPTION .LP These routines are used to manage the low level I/O operations performed by the Lightweight BER library. They are called implicitly by the other libraries and usually do not need to be called directly from applications. The I/O framework is modularized and new transport layers can be supported by appropriately defining a .B Sockbuf_IO structure and installing it onto an existing .BR Sockbuf . .B Sockbuf structures are allocated and freed by .BR ber_sockbuf_alloc () and .BR ber_sockbuf_free (), respectively. The .BR ber_sockbuf_ctrl () function is used to get and set options related to a .B Sockbuf or to a specific I/O layer of the .BR Sockbuf . The .BR ber_sockbuf_add_io () and .BR ber_sockbuf_remove_io () functions are used to add and remove specific I/O layers on a .BR Sockbuf . Options for .BR ber_sockbuf_ctrl () include: .TP .B LBER_SB_OPT_HAS_IO Takes a .B Sockbuf_IO * argument and returns 1 if the given handler is installed on the .BR Sockbuf , otherwise returns 0. .TP .B LBER_SB_OPT_GET_FD Retrieves the file descriptor associated to the .BR Sockbuf ; .B arg must be a .BR "ber_socket_t *" . The return value will be 1 if a valid descriptor was present, \-1 otherwise. .TP .B LBER_SB_OPT_SET_FD Sets the file descriptor of the .B Sockbuf to the descriptor pointed to by .BR arg ; .B arg must be a .BR "ber_socket_t *" . The return value will always be 1. .TP .B LBER_SB_OPT_SET_NONBLOCK Toggles the non-blocking state of the file descriptor associated to the .BR Sockbuf . .B arg should be NULL to disable and non-NULL to enable the non-blocking state. The return value will be 1 for success, \-1 otherwise. .TP .B LBER_SB_OPT_DRAIN Flush (read and discard) all available input on the .BR Sockbuf . The return value will be 1. .TP .B LBER_SB_OPT_NEEDS_READ Returns non-zero if input is waiting to be read. .TP .B LBER_SB_OPT_NEEDS_WRITE Returns non-zero if the .B Sockbuf is ready to be written. .TP .B LBER_SB_OPT_GET_MAX_INCOMING Returns the maximum allowed size of an incoming message; .B arg must be a .BR "ber_len_t *" . The return value will be 1. .TP .B LBER_SB_OPT_SET_MAX_INCOMING Sets the maximum allowed size of an incoming message; .B arg must be a .BR "ber_len_t *" . The return value will be 1. .LP Options not in this list will be passed down to each .B Sockbuf_IO handler in turn until one of them processes it. If the option is not handled .BR ber_sockbuf_ctrl () will return 0. .LP Multiple .B Sockbuf_IO handlers can be stacked in multiple layers to provide various functionality. Currently defined layers include .TP .B LBER_SBIOD_LEVEL_PROVIDER the lowest layer, talking directly to a network .TP .B LBER_SBIOD_LEVEL_TRANSPORT an intermediate layer .TP .B LBER_SBIOD_LEVEL_APPLICATION a higher layer .LP Currently defined .B Sockbuf_IO handlers in liblber include .TP .B ber_sockbuf_io_tcp The default stream-oriented provider .TP .B ber_sockbuf_io_fd A stream-oriented provider for local IPC sockets .TP .B ber_sockbuf_io_dgram A datagram-oriented provider. This handler is only present if the liblber library was built with LDAP_CONNECTIONLESS defined. .TP .B ber_sockbuf_io_readahead A buffering layer, usually used with a datagram provider to hide the datagram semantics from upper layers. .TP .B ber_sockbuf_io_debug A generic handler that outputs hex dumps of all traffic. This handler may be inserted multiple times at arbitrary layers to show the flow of data between other handlers. .LP Additional handlers may be present in libldap if support for them was enabled: .TP .B ldap_pvt_sockbuf_io_sasl An application layer handler for SASL encoding/decoding. .TP .B sb_tls_sbio A transport layer handler for SSL/TLS encoding/decoding. Note that this handler is private to the library and is not exposed in the API. .LP The provided handlers are all instantiated implicitly by libldap, and applications generally will not need to directly manipulate them. .SH SEE ALSO .BR lber-decode (3), .BR lber-encode (3), .BR lber-types (3), .BR ldap_get_option (3) .LP .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae5000081a400000000000000000000000151244f5200000498000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man3/ldap_sort.3.TH LDAP_SORT 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_sort_entries, ldap_sort_values, ldap_sort_strcasecmp \- LDAP sorting routines (deprecated) .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH DESCRIPTION The .BR ldap_sort_entries (), .BR ldap_sort_values (), and .BR ldap_sort_strcasecmp () are deprecated. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031add000081a400000000000000000000000151244f51000008ff000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ldap_parse_reference.3.TH LDAP_PARSE_REFERENCE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_parse_reference \- Extract referrals and controls from a reference message .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_parse_reference( LDAP *ld, LDAPMessage *reference, char ***referralsp, LDAPControl ***serverctrlsp, int freeit ) .SH DESCRIPTION .LP The .B ldap_parse_reference() routine is used to extract referrals and controls from a reference message. The \fIreference\fP parameter is a reference message as returned by a call to .BR ldap_first_reference (3) , .BR ldap_next_reference (3) , .BR ldap_first_message (3) , .BR ldap_next_message (3) , or .BR ldap_result (3) . .LP The \fIreferralsp\fP parameter will be filled in with an allocated array of character strings. The strings are copies of the referrals contained in the parsed message. The array should be freed by calling .BR ldap_value_free (3) . If \fIreferralsp\fP is NULL, no referrals are returned. If no referrals were returned, \fI*referralsp\fP is set to NULL. .LP The \fIserverctrlsp\fP parameter will be filled in with an allocated array of controls copied from the parsed message. The array should be freed by calling .BR ldap_controls_free (3). If \fIserverctrlsp\fP is NULL, no controls are returned. If no controls were returned, \fI*serverctrlsp\fP is set to NULL. .LP The \fIfreeit\fP parameter determines whether the parsed message is freed or not after the extraction. Any non-zero value will make it free the message. The .BR ldap_msgfree (3) routine can also be used to free the message later. .SH ERRORS Upon success LDAP_SUCCESS is returned. Otherwise the values of the \fIreferralsp\fP and \fIserverctrlsp\fP parameters are undefined. .SH SEE ALSO .BR ldap (3), .BR ldap_first_reference (3), .BR ldap_first_message (3), .BR ldap_result (3), .BR ldap_get_values (3), .BR ldap_controls_free (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031acc000081a400000000000000000000000151244f4f00000a93000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ldap_compare.3.TH LDAP_COMPARE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_compare, ldap_compare_s, ldap_compare_ext, ldap_compare_ext_s \- Perform an LDAP compare operation. .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_compare_ext( .RS .ft B LDAP *\fIld\fB, char *\fIdn\fB, char *\fIattr\fB, const struct berval *\fIbvalue\fB, LDAPControl **\fIserverctrls\fB, LDAPControl **\fIclientctrls\fB, int *\fImsgidp\fB ); .RE .LP .ft B int ldap_compare_ext_s( .RS .ft B LDAP *\fIld\fB, char *\fIdn\fB, char *\fIattr\fB, const struct berval *\fIbvalue\fB, LDAPControl **\fIserverctrls\fB, LDAPControl **\fIclientctrls\fB ); .RE .SH DESCRIPTION The .B ldap_compare_ext_s() routine is used to perform an LDAP compare operation synchronously. It takes \fIdn\fP, the DN of the entry upon which to perform the compare, and \fIattr\fP and \fIvalue\fP, the attribute description and value to compare to those found in the entry. It returns a code, which will be LDAP_COMPARE_TRUE if the entry contains the attribute value and LDAP_COMPARE_FALSE if it does not. Otherwise, an error code is returned that indicates the nature of the problem. See .BR ldap (3) for details. .LP The .B ldap_compare_ext() routine is used to perform an LDAP compare operation asynchronously. It takes the same parameters as .BR ldap_compare_ext_s() , but provides the message id of the request it initiated in the integer pointed to \fImsgidp\fP. The result of the compare can be obtained by a subsequent call to .BR ldap_result (3). .LP Both routines allow server and client controls to be specified to extend the compare request. .SH DEPRECATED INTERFACES The routines .BR ldap_compare () and .BR ldap_compare_s () are deprecated in favor of .BR ldap_compare_ext () and .BR ldap_compare_ext_s (), respectively. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad4000081a400000000000000000000000151244f5000000a1f000000b600010002ffffffffffffffff0000003300000000root/usr/local/share/man/man3/ldap_first_message.3.TH LDAP_FIRST_MESSAGE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_first_message, ldap_next_message, ldap_count_messages \- Stepping through messages in a result chain .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_count_messages( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_first_message( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_next_message( LDAP *ld, LDAPMessage *message ) .SH DESCRIPTION .LP These routines are used to step through the messages in a result chain received from .BR ldap_result (3) . For search operations, the result chain can contain referral, entry and result messages. The .BR ldap_msgtype (3) function can be used to distinguish between the different message types. .LP The .B ldap_first_message() routine is used to retrieve the first message in a result chain. It takes the \fIresult\fP as returned by a call to .BR ldap_result (3) , .BR ldap_search_s (3) or .BR ldap_search_st (3) and returns a pointer to the first message in the result chain. .LP This pointer should be supplied on a subsequent call to .B ldap_next_message() to get the next message, the result of which should be supplied to the next call to .BR ldap_next_message() , etc. .B ldap_next_message() will return NULL when there are no more messages. .LP These functions are useful when using routines like .BR ldap_parse_result (3) that only operate on the first result in the chain. .LP A count of the number of messages in the result chain can be obtained by calling .BR ldap_count_messages() . It can also be used to count the number of remaining messages in a chain if called with a message, entry or reference returned by .B ldap_first_message() , .B ldap_next_message() , .BR ldap_first_entry (3) , .BR ldap_next_entry (3) , .BR ldap_first_reference (3) , .BR ldap_next_reference (3) . .SH ERRORS If an error occurs in .B ldap_first_message() or .BR ldap_next_message() , NULL is returned. If an error occurs in .BR ldap_count_messages() , -1 is returned. .SH SEE ALSO .BR ldap (3), .BR ldap_search (3), .BR ldap_result (3), .BR ldap_parse_result (3), .BR ldap_first_entry (3), .BR ldap_first_reference (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad3000081a400000000000000000000000151244f500000093a000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/man/man3/ldap_first_entry.3.TH LDAP_FIRST_ENTRY 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_first_entry, ldap_next_entry, ldap_count_entries \- LDAP result entry parsing and counting routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_count_entries( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_first_entry( LDAP *ld, LDAPMessage *result ) .LP .ft B LDAPMessage *ldap_next_entry( LDAP *ld, LDAPMessage *entry ) .SH DESCRIPTION .LP These routines are used to parse results received from .BR ldap_result (3) or the synchronous LDAP search operation routines .BR ldap_search_s (3) and .BR ldap_search_st (3). .LP The .B ldap_first_entry() routine is used to retrieve the first entry in a chain of search results. It takes the \fIresult\fP as returned by a call to .BR ldap_result (3) or .BR ldap_search_s (3) or .BR ldap_search_st (3) and returns a pointer to the first entry in the result. .LP This pointer should be supplied on a subsequent call to .B ldap_next_entry() to get the next entry, the result of which should be supplied to the next call to .BR ldap_next_entry() , etc. .B ldap_next_entry() will return NULL when there are no more entries. The entries returned from these calls are used in calls to the routines described in .BR ldap_get_dn (3), .BR ldap_first_attribute (3), .BR ldap_get_values (3), etc. .LP A count of the number of entries in the search result can be obtained by calling .BR ldap_count_entries() . .SH ERRORS If an error occurs in .B ldap_first_entry() or .BR ldap_next_entry() , NULL is returned and the ld_errno field in the \fIld\fP parameter is set to indicate the error. If an error occurs in .BR ldap_count_entries() , -1 is returned, and .B ld_errno is set appropriately. See .BR ldap_error (3) for a description of possible error codes. .SH SEE ALSO .BR ldap (3), .BR ldap_result (3), .BR ldap_search (3), .BR ldap_first_attribute (3), .BR ldap_get_values (3), .BR ldap_get_dn (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac9000081a400000000000000000000000151244f4e000008dd000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man3/ldap_abandon.3.TH LDAP_ABANDON 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_abandon_ext \- Abandon an LDAP operation in progress .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .B #include .LP .ft B int ldap_abandon_ext( .RS .ft B LDAP *\fIld\fB, Bint \fImsgid\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB ); .RE .fi .SH DESCRIPTION The .B ldap_abandon_ext() routine is used to send a LDAP Abandon request for an operation in progress. The \fImsgid\fP passed should be the message id of an outstanding LDAP operation, such as returned by .BR ldap_search_ext (3). .LP .BR ldap_abandon_ext () checks to see if the result of the operation has already come in. If it has, it deletes it from the queue of pending messages. If not, it sends an LDAP abandon request to the LDAP server. .LP The caller can expect that the result of an abandoned operation will not be returned from a future call to .BR ldap_result (3). .LP .B ldap_abandon_ext() allows server and client controls to be passed in via the .I sctrls and .I cctrls parameters, respectively. .LP .B ldap_abandon_ext() returns a code indicating success or, in the case of failure, the nature of the failure. See .BR ldap_error (3) for details. .SH DEPRECATED INTERFACES The .B ldap_abandon() routine is deprecated in favor of the .B ldap_abandon_ext() routine. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .BR ldap_result (3), .BR ldap_search_ext (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ada000081a400000000000000000000000151244f5100001177000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_modify.3.TH LDAP_MODIFY 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_modify_ext, ldap_modify_ext_s \- Perform an LDAP modify operation .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_modify_ext( .RS .ft B LDAP *\fIld\fB, char *\fIdn\fB, LDAPMod *\fImods[]\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB, int *\fImsgidp\fB ); .RE .LP .nf .ft B int ldap_modify_ext_s( .RS .ft B LDAP *\fIld\fB, char *\fIdn\fB, LDAPMod *\fImods[]\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB ); .RE .LP .nf .ft B void ldap_mods_free( .RS .ft B LDAPMod **\fImods\fB, int \fIfreemods\fB ); .RE .SH DESCRIPTION The routine .B ldap_modify_ext_s() is used to perform an LDAP modify operation. \fIdn\fP is the DN of the entry to modify, and \fImods\fP is a null-terminated array of modifications to make to the entry. Each element of the \fImods\fP array is a pointer to an LDAPMod structure, which is defined below. .LP .nf typedef struct ldapmod { int mod_op; char *mod_type; union { char **modv_strvals; struct berval **modv_bvals; } mod_vals; struct ldapmod *mod_next; } LDAPMod; #define mod_values mod_vals.modv_strvals #define mod_bvalues mod_vals.modv_bvals .ft .fi .LP The \fImod_op\fP field is used to specify the type of modification to perform and should be one of LDAP_MOD_ADD, LDAP_MOD_DELETE, or LDAP_MOD_REPLACE. The \fImod_type\fP and \fImod_values\fP fields specify the attribute type to modify and a null-terminated array of values to add, delete, or replace respectively. The \fImod_next\fP field is used only by the LDAP server and may be ignored by the client. .LP If you need to specify a non-string value (e.g., to add a photo or audio attribute value), you should set \fImod_op\fP to the logical OR of the operation as above (e.g., LDAP_MOD_REPLACE) and the constant LDAP_MOD_BVALUES. In this case, \fImod_bvalues\fP should be used instead of \fImod_values\fP, and it should point to a null-terminated array of struct bervals, as defined in . .LP For LDAP_MOD_ADD modifications, the given values are added to the entry, creating the attribute if necessary. For LDAP_MOD_DELETE modifications, the given values are deleted from the entry, removing the attribute if no values remain. If the entire attribute is to be deleted, the \fImod_values\fP field should be set to NULL. For LDAP_MOD_REPLACE modifications, the attribute will have the listed values after the modification, having been created if necessary. All modifications are performed in the order in which they are listed. .LP .B ldap_mods_free() can be used to free each element of a NULL-terminated array of mod structures. If \fIfreemods\fP is non-zero, the \fImods\fP pointer itself is freed as well. .LP .B ldap_modify_ext_s() returns a code indicating success or, in the case of failure, indicating the nature of the failure. See .BR ldap_error (3) for details .LP The .B ldap_modify_ext() operation works the same way as .BR ldap_modify_ext_s() , except that it is asynchronous. The integer that \fImsgidp\fP points to is set to the message id of the modify request. The result of the operation can be obtained by calling .BR ldap_result (3). .LP Both .B ldap_modify_ext() and .B ldap_modify_ext_s() allows server and client controls to be passed in via the sctrls and cctrls parameters, respectively. .SH DEPRECATED INTERFACES The .B ldap_modify() and .B ldap_modify_s() routines are deprecated in favor of the .B ldap_modify_ext() and .B ldap_modify_ext_s() routines, respectively. .LP Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad8000081a400000000000000000000000151244f5000000ab7000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ldap_get_values.3.TH LDAP_GET_VALUES 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_get_values, ldap_get_values_len, ldap_count_values \- LDAP attribute value handling routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B char **ldap_get_values(ld, entry, attr) .ft LDAP *ld; LDAPMessage *entry; char *attr; .LP .ft B struct berval **ldap_get_values_len(ld, entry, attr) .ft LDAP *ld; LDAPMessage *entry; char *attr; .LP .ft B int ldap_count_values(vals) .ft char **vals; .LP .ft B int ldap_count_values_len(vals) .ft struct berval **vals; .LP .ft B void ldap_value_free(vals) .ft char **vals; .LP .ft B void ldap_value_free_len(vals) .ft struct berval **vals; .SH DESCRIPTION These routines are used to retrieve and manipulate attribute values from an LDAP entry as returned by .BR ldap_first_entry (3) or .BR ldap_next_entry (3). .B ldap_get_values() takes the \fIentry\fP and the attribute \fIattr\fP whose values are desired and returns a NULL-terminated array of the attribute's values. \fIattr\fP may be an attribute type as returned from .BR ldap_first_attribute (3) or .BR ldap_next_attribute (3), or if the attribute type is known it can simply be given. .LP The number of values in the array can be counted by calling .BR ldap_count_values() . The array of values returned can be freed by calling .BR ldap_value_free() . .LP If the attribute values are binary in nature, and thus not suitable to be returned as an array of char *'s, the .B ldap_get_values_len() routine can be used instead. It takes the same parameters as .BR ldap_get_values() , but returns a NULL-terminated array of pointers to berval structures, each containing the length of and a pointer to a value. .LP The number of values in the array can be counted by calling .BR ldap_count_values_len() . The array of values returned can be freed by calling .BR ldap_value_free_len() . .SH ERRORS If an error occurs in .B ldap_get_values() or .BR ldap_get_values_len() , NULL is returned and the .B ld_errno field in the \fIld\fP parameter is set to indicate the error. See .BR ldap_error (3) for a description of possible error codes. .SH NOTES These routines dynamically allocate memory which the caller must free using the supplied routines. .SH SEE ALSO .BR ldap (3), .BR ldap_first_entry (3), .BR ldap_first_attribute (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad9000081a400000000000000000000000151244f5100000600000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_memory.3.TH LDAP_MEMORY 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_memfree, ldap_memvfree, ldap_memalloc, ldap_memcalloc, ldap_memrealloc, ldap_strdup \- LDAP memory allocation routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .B #include .LP .BI "void ldap_memfree(void *" p ");" .LP .BI "void ldap_memvfree(void **" v ");" .LP .BI "void *ldap_memalloc(ber_len_t " s ");" .LP .BI "void *ldap_memcalloc(ber_len_t " n ", ber_len_t " s ");" .LP .BI "void *ldap_memrealloc(void *" p ", ber_len_t " s ");" .LP .BI "char *ldap_strdup(LDAP_CONST char *" p ");" .SH DESCRIPTION These routines are used to allocate/deallocate memory used/returned by the LDAP library. .BR ldap_memalloc (), .BR ldap_memcalloc (), .BR ldap_memrealloc (), and .BR ldap_memfree () are used exactly like the standard .BR malloc (3), .BR calloc (3), .BR realloc (3), and .BR free (3) routines, respectively. The .BR ldap_memvfree () routine is used to free a dynamically allocated array of pointers to arbitrary dynamically allocated objects. The .BR ldap_strdup () routine is used exactly like the standard .BR strdup (3) routine. .SH SEE ALSO .BR ldap (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad2000081a400000000000000000000000151244f5000000906000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/man/man3/ldap_first_attribute.3.TH LDAP_FIRST_ATTRIBUTE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_first_attribute, ldap_next_attribute \- step through LDAP entry attributes .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B char *ldap_first_attribute( LDAP *ld, LDAPMessage *entry, BerElement **berptr ) .LP .ft B char *ldap_next_attribute( LDAP *ld, LDAPMessage *entry, BerElement *ber ) .SH DESCRIPTION The .B ldap_first_attribute() and .B ldap_next_attribute() routines are used to step through the attributes in an LDAP entry. .B ldap_first_attribute() takes an \fIentry\fP as returned by .BR ldap_first_entry (3) or .BR ldap_next_entry (3) and returns a pointer to character string containing the first attribute description in the entry. .B ldap_next_attribute() returns the next attribute description in the entry. .LP It also returns, in \fIberptr\fP, a pointer to a BerElement it has allocated to keep track of its current position. This pointer should be passed to subsequent calls to .B ldap_next_attribute() and is used to effectively step through the entry's attributes. The caller is solely responsible for freeing the BerElement pointed to by \fIberptr\fP when it is no longer needed by calling .BR ber_free (3). When calling .BR ber_free (3) in this instance, be sure the second argument is 0. .LP The attribute names returned are suitable for inclusion in a call to .BR ldap_get_values (3) to retrieve the attribute's values. .SH ERRORS If an error occurs, NULL is returned and the ld_errno field in the \fIld\fP parameter is set to indicate the error. See .BR ldap_error (3) for a description of possible error codes. .SH NOTES The .B ldap_first_attribute() and .B ldap_next_attribute() return dynamically allocated memory that must be freed by the caller via .BR ldap_memfree (3). .SH SEE ALSO .BR ldap (3), .BR ldap_first_entry (3), .BR ldap_get_values (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031acd000081a400000000000000000000000151244f4f00000b8d000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man3/ldap_controls.3.TH LDAP_CONTROLS 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_control_create, ldap_control_find, ldap_control_dup, ldap_controls_dup, ldap_control_free, ldap_controls_free \- LDAP control manipulation routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .B #include .LP .BI "int ldap_control_create(const char *" oid ", int " iscritical ", struct berval *" value ", int " dupval ", LDAPControl **" ctrlp ");" .LP .BI "LDAPControl *ldap_control_find( const char *" oid ", LDAPControl **" ctrls ", LDAPControl ***" nextctrlp ");" .LP .BI "LDAPControl *ldap_control_dup(LDAPControl *" ctrl ");" .LP .BI "LDAPControl **ldap_controls_dup(LDAPControl **" ctrls ");" .LP .BI "void ldap_control_free(LDAPControl *" ctrl ");" .LP .BI "void ldap_controls_free(LDAPControl **" ctrls ");" .SH DESCRIPTION These routines are used to manipulate structures used for LDAP controls. .BR ldap_control_create () creates a control with the specified .I OID using the contents of the .I value parameter for the control value, if any. The content of .I value is duplicated if .I dupval is non-zero. The .I iscritical parameter must be non-zero for a critical control. The created control is returned in the .I ctrlp parameter. The routine returns .B LDAP_SUCCESS on success or some other error code on failure. The content of .IR value , for supported control types, can be prepared using helpers provided by this implementation of libldap, usually in the form .BR "ldap_create__control_value" (). Otherwise, it can be BER-encoded using the functionalities of liblber. .BR ldap_control_find () searches the NULL-terminated .I ctrls array for a control whose OID matches the .I oid parameter. The routine returns a pointer to the control if found, NULL otherwise. If the parameter .I nextctrlp is not NULL, on return it will point to the next control in the array, and can be passed to the .BR ldap_control_find () routine for subsequent calls, to find further occurrences of the same control type. The use of this function is discouraged; the recommended way of handling controls in responses consists in going through the array of controls, dealing with each of them in the returned order, since it could matter. .BR ldap_control_dup () duplicates an individual control structure, and .BR ldap_controls_dup () duplicates a NULL-terminated array of controls. .BR ldap_control_free () frees an individual control structure, and .BR ldap_controls_free () frees a NULL-terminated array of controls. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac8000081a400000000000000000000000151244f4e00002300000000b600010002ffffffffffffffff0000002500000000root/usr/local/share/man/man3/ldap.3.TH LDAP 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap \- OpenLDAP Lightweight Directory Access Protocol API .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .ft .fi .SH DESCRIPTION .LP The Lightweight Directory Access Protocol (LDAP) (RFC 4510) provides access to X.500 directory services. These services may be stand\-alone or part of a distributed directory service. This client API supports LDAP over TCP (RFC 4511), LDAP over TLS/SSL, and LDAP over IPC (UNIX domain sockets). This API supports SASL (RFC 4513) and Start TLS (RFC 4513) as well as a number of protocol extensions. This API is loosely based upon IETF/LDAPEXT C LDAP API draft specification, a (orphaned) work in progress. .LP The OpenLDAP Software package includes a stand\-alone server in .BR slapd (8), various LDAP clients, and an LDAP client library used to provide programmatic access to the LDAP protocol. This man page gives an overview of the LDAP library routines. .LP Both synchronous and asynchronous APIs are provided. Also included are various routines to parse the results returned from these routines. These routines are found in the \-lldap library. .LP The basic interaction is as follows. A session handle is created using .BR ldap_initialize (3) and set the protocol version to 3 by calling .BR ldap_set_option (3). The underlying session is established first operation is issued. This would generally be a Start TLS or Bind operation, or a Search operation to read attributes of the Root DSE. A Start TLS operation is performed by calling .BR ldap_start_tls_s (3). A LDAP bind operation is performed by calling .BR ldap_sasl_bind (3) or one of its friends. A Search operation is performed by calling ldap_search_ext_s(3) or one of its friends. Subsequently, additional operations are performed by calling one of the synchronous or asynchronous routines (e.g., .BR ldap_compare_ext_s (3) or .BR ldap_compare_ext (3) followed by .BR ldap_result (3)). Results returned from these routines are interpreted by calling the LDAP parsing routines such as .BR ldap_parse_result (3). The LDAP association and underlying connection is terminated by calling .BR ldap_unbind_ext (3). Errors can be interpreted by calling .BR ldap_err2string (3). .SH LDAP versions This library supports version 3 of the Lightweight Directory Access Protocol (LDAPv3) as defined in RFC 4510. It also supports a variant of version 2 of LDAP as defined by U-Mich LDAP and, to some degree, RFC 1777. Version 2 (all variants) are considered obsolete. Version 3 should be used instead. .LP For backwards compatibility reasons, the library defaults to version 2. Hence, all new applications (and all actively maintained applications) should use .BR ldap_set_option (3) to select version 3. The library manual pages assume version 3 has been selected. .SH INPUT and OUTPUT PARAMETERS All character string input/output is expected to be/is UTF-8 encoded Unicode (version 3.2). .LP Distinguished names (DN) (and relative distinguished names (RDN) to be passed to the LDAP routines should conform to RFC 4514 UTF-8 string representation. .LP Search filters to be passed to the search routines are to be constructed by hand and should conform to RFC 4515 UTF-8 string representation. .LP LDAP URLs to be passed to routines are expected to conform to RFC 4516 format. The .BR ldap_url (3) routines can be used to work with LDAP URLs. .LP LDAP controls to be passed to routines can be manipulated using the .BR ldap_controls (3) routines. .SH DISPLAYING RESULTS Results obtained from the search routines can be output by hand, by calling .BR ldap_first_entry (3) and .BR ldap_next_entry (3) to step through the entries returned, .BR ldap_first_attribute (3) and .BR ldap_next_attribute (3) to step through an entry's attributes, and .BR ldap_get_values (3) to retrieve a given attribute's values. Attribute values may or may not be displayable. .SH UTILITY ROUTINES Also provided are various utility routines. The .BR ldap_sort (3) routines are used to sort the entries and values returned via the ldap search routines. .SH DEPRECATED INTERFACES A number of interfaces are now considered deprecated. For instance, ldap_add(3) is deprecated in favor of ldap_add_ext(3). Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH BER LIBRARY Also included in the distribution is a set of lightweight Basic Encoding Rules routines. These routines are used by the LDAP library routines to encode and decode LDAP protocol elements using the (slightly simplified) Basic Encoding Rules defined by LDAP. They are not normally used directly by an LDAP application program except in the handling of controls and extended operations. The routines provide a printf and scanf\-like interface, as well as lower\-level access. These routines are discussed in .BR lber\-decode (3), .BR lber\-encode (3), .BR lber\-memory (3), and .BR lber\-types (3). .SH INDEX .TP 20 .SM ldap_initialize(3) initialize the LDAP library without opening a connection to a server .TP .SM ldap_result(3) wait for the result from an asynchronous operation .TP .SM ldap_abandon_ext(3) abandon (abort) an asynchronous operation .TP .SM ldap_add_ext(3) asynchronously add an entry .TP .SM ldap_add_ext_s(3) synchronously add an entry .TP .SM ldap_sasl_bind(3) asynchronously bind to the directory .TP .SM ldap_sasl_bind_s(3) synchronously bind to the directory .TP .SM ldap_unbind_ext(3) synchronously unbind from the LDAP server and close the connection .TP .SM ldap_unbind(3) and ldap_unbind_s(3) are equivalent to .BR ldap_unbind_ext (3) .TP .SM ldap_memfree(3) dispose of memory allocated by LDAP routines. .TP .SM ldap_compare_ext(3) asynchronously compare to a directory entry .TP .SM ldap_compare_ext_s(3) synchronously compare to a directory entry .TP .SM ldap_delete_ext(3) asynchronously delete an entry .TP .SM ldap_delete_ext_s(3) synchronously delete an entry .TP .SM ld_errno(3) LDAP error indication .TP .SM ldap_errlist(3) list of LDAP errors and their meanings .TP .SM ldap_err2string(3) convert LDAP error indication to a string .TP .SM ldap_extended_operation(3) asynchronously perform an arbitrary extended operation .TP .SM ldap_extended_operation_s(3) synchronously perform an arbitrary extended operation .TP .SM ldap_first_attribute(3) return first attribute name in an entry .TP .SM ldap_next_attribute(3) return next attribute name in an entry .TP .SM ldap_first_entry(3) return first entry in a chain of search results .TP .SM ldap_next_entry(3) return next entry in a chain of search results .TP .SM ldap_count_entries(3) return number of entries in a search result .TP .SM ldap_get_dn(3) extract the DN from an entry .TP .SM ldap_get_values_len(3) return an attribute's values with lengths .TP .SM ldap_value_free_len(3) free memory allocated by ldap_get_values_len(3) .TP .SM ldap_count_values_len(3) return number of values .TP .SM ldap_modify_ext(3) asynchronously modify an entry .TP .SM ldap_modify_ext_s(3) synchronously modify an entry .TP .SM ldap_mods_free(3) free array of pointers to mod structures used by ldap_modify_ext(3) .TP .SM ldap_rename(3) asynchronously rename an entry .TP .SM ldap_rename_s(3) synchronously rename an entry .TP .SM ldap_msgfree(3) free results allocated by ldap_result(3) .TP .SM ldap_msgtype(3) return the message type of a message from ldap_result(3) .TP .SM ldap_msgid(3) return the message id of a message from ldap_result(3) .TP .SM ldap_search_ext(3) asynchronously search the directory .TP .SM ldap_search_ext_s(3) synchronously search the directory .TP .SM ldap_is_ldap_url(3) check a URL string to see if it is an LDAP URL .TP .SM ldap_url_parse(3) break up an LDAP URL string into its components .TP .SM ldap_sort_entries(3) sort a list of search results .TP .SM ldap_sort_values(3) sort a list of attribute values .TP .SM ldap_sort_strcasecmp(3) case insensitive string comparison .SH SEE ALSO .BR ldap.conf (5), .BR slapd (8), .BR draft-ietf-ldapext-ldap-c-api-xx.txt \ .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. .LP These API manual pages are loosely based upon descriptions provided in the IETF/LDAPEXT C LDAP API Internet Draft, a (orphaned) work in progress. 07070100031ad1000081a400000000000000000000000151244f50000009b6000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ldap_extended_operation.3.TH LDAP_EXTENDED_OPERATION 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_extended_operation, ldap_extended_operation_s \- Extends the LDAP operations to the LDAP server. .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_extended_operation( .RS .ft B LDAP *\fIld\fB, const char *\fIrequestoid\fB, const struct berval *\fIrequestdata\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB, int *\fImsgidp\fB ); .RE .LP .ft B int ldap_extended_operation_s( .RS .ft B LDAP *\fIld\fB, const char *\fIrequestoid\fB, const struct berval *\fIrequestdata\fB, LDAPControl **\fIsctrls\fB, LDAPControl **\fIcctrls\fB, char **\fIretoidp\fB, struct berval **\fIretdatap\fB ); .RE .SH DESCRIPTION The .B ldap_extended_operation_s() routine is used to synchronously perform an LDAP extended operation. It takes \fIrequestoid\fP, which points to a dotted-decimal OID string identifying the extended operation to perform. \fIrequestdata\fP is the data required for the request, \fIsctrls\fP is an array of LDAPControl structures to use with this extended operation, \fIcctrls\fP is an array of LDAPControl structures that list the client controls to use with this extended operation. .LP The output parameter \fIretoidp\fP points to a dotted-decimal OID string returned by the LDAP server. The memory used by the string should be freed with the .BR ldap_memfree (3) function. The output parameter \fIretdatap\fP points to a pointer to a berval structure that contains the returned data. If no data is returned by the server, the pointer is set this to NULL. The memory used by this structure should be freed with the .BR ber_bvfree (3) function. .LP The .B ldap_extended_operation() works just like .BR ldap_extended_operation_s() , but the operation is asynchronous. It provides the message id of the request it initiated in the integer pointed to be \fImsgidp\fP. The result of this operation can be obtained by calling .BR ldap_result(3). .SH SEE ALSO .BR ber_bvfree (3), .BR ldap_memfree (3), .BR ldap_parse_extended_result (3), .BR ldap_result (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae2000081a400000000000000000000000151244f5100001170000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_result.3.TH LDAP_RESULT 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_result \- Wait for the result of an LDAP operation .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_result( LDAP *ld, int msgid, int all, struct timeval *timeout, LDAPMessage **result ); int ldap_msgfree( LDAPMessage *msg ); int ldap_msgtype( LDAPMessage *msg ); int ldap_msgid( LDAPMessage *msg ); .ft .SH DESCRIPTION The .B ldap_result() routine is used to wait for and return the result of an operation previously initiated by one of the LDAP asynchronous operation routines (e.g., .BR ldap_search_ext (3), .BR ldap_modify_ext (3), etc.). Those routines all return \-1 in case of error, and an invocation identifier upon successful initiation of the operation. The invocation identifier is picked by the library and is guaranteed to be unique across the LDAP session. It can be used to request the result of a specific operation from .B ldap_result() through the \fImsgid\fP parameter. .LP The .B ldap_result() routine will block or not, depending upon the setting of the \fItimeout\fP parameter. If timeout is not a NULL pointer, it specifies a maximum interval to wait for the selection to complete. If timeout is a NULL pointer, the LDAP_OPT_TIMEOUT value set by .BR ldap_set_option (3) is used. With the default setting, the select blocks indefinitely. To effect a poll, the timeout argument should be a non-NULL pointer, pointing to a zero-valued timeval structure. To obtain the behavior of the default setting, bypassing any value set by .BR ldap_set_option (3), set to -1 the \fItv_sec\fP field of the \fItimeout\fP parameter. See .BR select (2) for further details. .LP If the result of a specific operation is required, \fImsgid\fP should be set to the invocation identifier returned when the operation was initiated, otherwise LDAP_RES_ANY or LDAP_RES_UNSOLICITED should be supplied to wait for any or unsolicited response. .LP The \fIall\fP parameter, if non-zero, causes .B ldap_result() to return all responses with msgid, otherwise only the next response is returned. This is commonly used to obtain all the responses of a search operation. .LP A search response is made up of zero or more search entries, zero or more search references, and zero or more extended partial responses followed by a search result. If \fIall\fP is set to 0, search entries will be returned one at a time as they come in, via separate calls to .BR ldap_result() . If it's set to 1, the search response will only be returned in its entirety, i.e., after all entries, all references, all extended partial responses, and the final search result have been received. .SH RETURN VALUE Upon success, the type of the result received is returned and the \fIresult\fP parameter will contain the result of the operation; otherwise, the \fIresult\fP parameter is undefined. This result should be passed to the LDAP parsing routines, .BR ldap_first_message (3) and friends, for interpretation. .LP The possible result types returned are: .LP .nf LDAP_RES_BIND (0x61) LDAP_RES_SEARCH_ENTRY (0x64) LDAP_RES_SEARCH_REFERENCE (0x73) LDAP_RES_SEARCH_RESULT (0x65) LDAP_RES_MODIFY (0x67) LDAP_RES_ADD (0x69) LDAP_RES_DELETE (0x6b) LDAP_RES_MODDN (0x6d) LDAP_RES_COMPARE (0x6f) LDAP_RES_EXTENDED (0x78) LDAP_RES_INTERMEDIATE (0x79) .fi .LP The .B ldap_msgfree() routine is used to free the memory allocated for result(s) by .B ldap_result() or .BR ldap_search_ext_s (3) and friends. It takes a pointer to the result or result chain to be freed and returns the type of the last message in the chain. If the parameter is NULL, the function does nothing and returns zero. .LP The .B ldap_msgtype() routine returns the type of a message. .LP The .B ldap_msgid() routine returns the message id of a message. .SH ERRORS .B ldap_result() returns \-1 if something bad happens, and zero if the timeout specified was exceeded. .B ldap_msgtype() and .B ldap_msgid() return \-1 on error. .SH SEE ALSO .BR ldap (3), .BR ldap_first_message (3), .BR select (2) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae7000081a400000000000000000000000151244f530000066f000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ldap_tls.3.TH LDAP_TLS 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_start_tls, ldap_start_tls_s, ldap_tls_inplace, ldap_install_tls \- LDAP TLS initialization routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .B #include .LP .BI "int ldap_start_tls(LDAP *" ld ");" .LP .BI "int ldap_start_tls_s(LDAP *" ld ", LDAPControl **" serverctrls ", LDAPControl **" clientctrls ");" .LP .BI "int ldap_tls_inplace(LDAP *" ld ");" .LP .BI "int ldap_install_tls(LDAP *" ld ");" .SH DESCRIPTION These routines are used to initiate TLS processing on an LDAP session. .BR ldap_start_tls_s () sends a StartTLS request to a server, waits for the reply, and then installs TLS handlers on the session if the request succeeded. The routine returns .B LDAP_SUCCESS if everything succeeded, otherwise it returns an LDAP error code. .BR ldap_start_tls () sends a StartTLS request to a server and does nothing else. It returns .B LDAP_SUCCESS if the request was sent successfully. .BR ldap_tls_inplace () returns 1 if TLS handlers have been installed on the specified session, 0 otherwise. .BR ldap_install_tls () installs the TLS handlers on the given session. It returns .B LDAP_LOCAL_ERROR if TLS is already installed. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae3000081a400000000000000000000000151244f52000022f1000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/ldap_schema.3.TH LDAP_SCHEMA 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 2000-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_str2syntax, ldap_syntax2str, ldap_syntax2name, ldap_syntax_free, ldap_str2matchingrule, ldap_matchingrule2str, ldap_matchingrule2name, ldap_matchingrule_free, ldap_str2attributetype, ldap_attributetype2str, ldap_attributetype2name, ldap_attributetype_free, ldap_str2objectclass, ldap_objectclass2str, ldap_objectclass2name, ldap_objectclass_free, ldap_scherr2str \- Schema definition handling routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include #include .LP .ft B LDAPSyntax * ldap_str2syntax(s, code, errp, flags) .ft const char * s; int * code; const char ** errp; const int flags; .LP .ft B char * ldap_syntax2str(syn) .ft const LDAPSyntax * syn; .LP .ft B const char * ldap_syntax2name(syn) .ft LDAPSyntax * syn; .LP .ft B ldap_syntax_free(syn) .ft LDAPSyntax * syn; .LP .ft B LDAPMatchingRule * ldap_str2matchingrule(s, code, errp, flags) .ft const char * s; int * code; const char ** errp; const int flags; .LP .ft B char * ldap_matchingrule2str(mr); .ft const LDAPMatchingRule * mr; .LP .ft B const char * ldap_matchingrule2name(mr) .ft LDAPMatchingRule * mr; .LP .ft B ldap_matchingrule_free(mr) .ft LDAPMatchingRule * mr; .LP .ft B LDAPAttributeType * ldap_str2attributetype(s, code, errp, flags) .ft const char * s; int * code; const char ** errp; const int flags; .LP .ft B char * ldap_attributetype2str(at) .ft const LDAPAttributeType * at; .LP .ft B const char * ldap_attributetype2name(at) .ft LDAPAttributeType * at; .LP .ft B ldap_attributetype_free(at) .ft LDAPAttributeType * at; .LP .ft B LDAPObjectClass * ldap_str2objectclass(s, code, errp, flags) .ft const char * s; int * code; const char ** errp; const int flags; .LP .ft B char * ldap_objectclass2str(oc) .ft const LDAPObjectClass * oc; .LP .ft B const char * ldap_objectclass2name(oc) .ft LDAPObjectClass * oc; .LP .ft B ldap_objectclass_free(oc) .ft LDAPObjectClass * oc; .LP .ft B char * ldap_scherr2str(code) .ft int code; .SH DESCRIPTION These routines are used to parse schema definitions in the syntax defined in RFC 4512 into structs and handle these structs. These routines handle four kinds of definitions: syntaxes, matching rules, attribute types and object classes. For each definition kind, four routines are provided. .LP .B ldap_str2xxx() takes a definition in RFC 4512 format in argument .IR s as a NUL-terminated string and returns, if possible, a pointer to a newly allocated struct of the appropriate kind. The caller is responsible for freeing the struct by calling .B ldap_xxx_free() when not needed any longer. The routine returns NULL if some problem happened. In this case, the integer pointed at by argument .IR code will receive an error code (see below the description of .B ldap_scherr2str() for an explanation of the values) and a pointer to a NUL-terminated string will be placed where requested by argument .IR errp , indicating where in argument .IR s the error happened, so it must not be freed by the caller. Argument .IR flags is a bit mask of parsing options controlling the relaxation of the syntax recognized. The following values are defined: .TP .B LDAP_SCHEMA_ALLOW_NONE strict parsing according to RFC 4512. .TP .B LDAP_SCHEMA_ALLOW_NO_OID permit definitions that do not contain an initial OID. .TP .B LDAP_SCHEMA_ALLOW_QUOTED permit quotes around some items that should not have them. .TP .B LDAP_SCHEMA_ALLOW_DESCR permit a .B descr instead of a numeric OID in places where the syntax expect the latter. .TP .B LDAP_SCHEMA_ALLOW_DESCR_PREFIX permit that the initial numeric OID contains a prefix in .B descr format. .TP .B LDAP_SCHEMA_ALLOW_ALL be very liberal, include all options. .LP The structures returned are as follows: .sp .RS .nf .ne 7 .ta 8n 16n 32n typedef struct ldap_schema_extension_item { char *lsei_name; /* Extension name */ char **lsei_values; /* Extension values */ } LDAPSchemaExtensionItem; typedef struct ldap_syntax { char *syn_oid; /* OID */ char **syn_names; /* Names */ char *syn_desc; /* Description */ LDAPSchemaExtensionItem **syn_extensions; /* Extension */ } LDAPSyntax; typedef struct ldap_matchingrule { char *mr_oid; /* OID */ char **mr_names; /* Names */ char *mr_desc; /* Description */ int mr_obsolete; /* Is obsolete? */ char *mr_syntax_oid; /* Syntax of asserted values */ LDAPSchemaExtensionItem **mr_extensions; /* Extensions */ } LDAPMatchingRule; typedef struct ldap_attributetype { char *at_oid; /* OID */ char **at_names; /* Names */ char *at_desc; /* Description */ int at_obsolete; /* Is obsolete? */ char *at_sup_oid; /* OID of superior type */ char *at_equality_oid; /* OID of equality matching rule */ char *at_ordering_oid; /* OID of ordering matching rule */ char *at_substr_oid; /* OID of substrings matching rule */ char *at_syntax_oid; /* OID of syntax of values */ int at_syntax_len; /* Suggested minimum maximum length */ int at_single_value; /* Is single-valued? */ int at_collective; /* Is collective? */ int at_no_user_mod; /* Are changes forbidden through LDAP? */ int at_usage; /* Usage, see below */ LDAPSchemaExtensionItem **at_extensions; /* Extensions */ } LDAPAttributeType; typedef struct ldap_objectclass { char *oc_oid; /* OID */ char **oc_names; /* Names */ char *oc_desc; /* Description */ int oc_obsolete; /* Is obsolete? */ char **oc_sup_oids; /* OIDs of superior classes */ int oc_kind; /* Kind, see below */ char **oc_at_oids_must; /* OIDs of required attribute types */ char **oc_at_oids_may; /* OIDs of optional attribute types */ LDAPSchemaExtensionItem **oc_extensions; /* Extensions */ } LDAPObjectClass; .ta .fi .RE .PP Some integer fields (those described with a question mark) have a truth value, for these fields the possible values are: .TP .B LDAP_SCHEMA_NO The answer to the question is no. .TP .B LDAP_SCHEMA_YES The answer to the question is yes. .LP For attribute types, the following usages are possible: .TP .B LDAP_SCHEMA_USER_APPLICATIONS the attribute type is non-operational. .TP .B LDAP_SCHEMA_DIRECTORY_OPERATION the attribute type is operational and is pertinent to the directory itself, i.e. it has the same value on all servers that master the entry containing this attribute type. .TP .B LDAP_SCHEMA_DISTRIBUTED_OPERATION the attribute type is operational and is pertinent to replication, shadowing or other distributed directory aspect. TBC. .TP .B LDAP_SCHEMA_DSA_OPERATION the attribute type is operational and is pertinent to the directory server itself, i.e. it may have different values for the same entry when retrieved from different servers that master the entry. .LP Object classes can be of three kinds: .TP .B LDAP_SCHEMA_ABSTRACT the object class is abstract, i.e. there cannot be entries of this class alone. .TP .B LDAP_SCHEMA_STRUCTURAL the object class is structural, i.e. it describes the main role of the entry. On some servers, once the entry is created the set of structural object classes assigned cannot be changed: none of those present can be removed and none other can be added. .TP .B LDAP_SCHEMA_AUXILIARY the object class is auxiliary, i.e. it is intended to go with other, structural, object classes. These can be added or removed at any time if attribute types are added or removed at the same time as needed by the set of object classes resulting from the operation. .LP Routines .B ldap_xxx2name() return a canonical name for the definition. .LP Routines .B ldap_xxx2str() return a string representation in the format described by RFC 4512 of the struct passed in the argument. The string is a newly allocated string that must be freed by the caller. These routines may return NULL if no memory can be allocated for the string. .LP .B ldap_scherr2str() returns a NUL-terminated string with a text description of the error found. This is a pointer to a static area, so it must not be freed by the caller. The argument .IR code comes from one of the parsing routines and can adopt the following values: .TP .B LDAP_SCHERR_OUTOFMEM Out of memory. .TP .B LDAP_SCHERR_UNEXPTOKEN Unexpected token. .TP .B LDAP_SCHERR_NOLEFTPAREN Missing opening parenthesis. .TP .B LDAP_SCHERR_NORIGHTPAREN Missing closing parenthesis. .TP .B LDAP_SCHERR_NODIGIT Expecting digit. .TP .B LDAP_SCHERR_BADNAME Expecting a name. .TP .B LDAP_SCHERR_BADDESC Bad description. .TP .B LDAP_SCHERR_BADSUP Bad superiors. .TP .B LDAP_SCHERR_DUPOPT Duplicate option. .TP .B LDAP_SCHERR_EMPTY Unexpected end of data. .SH SEE ALSO .BR ldap (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae0000081a400000000000000000000000151244f51000008fa000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/man/man3/ldap_parse_vlv_control.3.TH LDAP_PARSE_VLV_CONTROL 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_parse_vlv_control \- Decode the information returned from a search operation that used a VLV (virtual list view) control .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_parse_vlv_control( ld, ctrlp, target_posp, list_countp, contextp, errcodep ) .ft LDAP *ld; LDAPControl **ctrlp; unsigned long *target_posp, *list_countp; struct berval **contextp; int *errcodep; .SH DESCRIPTION The .B ldap_parse_vlv_control is used to decode the information returned from a search operation that used a VLV (virtual list view)control. It takes a null terminated array of LDAPControl structures, usually obtained by a call to the .BR ldap_parse_result function, a \fItarget_pos\fP which points to the list index of the target entry. If this parameter is NULL, the target position is not returned. The index returned is an approximation of the position of the target entry. It is not guaranteed to be exact. The parameter \fIlist_countp\fP points to the server's estimate of the size of the list. If this parameter is NULL, the size is not returned. \fIcontextp\fP is a pointer to the address of a berval structure that contains a server-generated context identifier if server returns one. If server does not return a context identifier, the server returns a NULL in this parameter. If this parameter is set to NULL, the context identifier is not returned. You should use this returned context in the next call to create a VLV control. When the berval structure is no longer needed, you should free the memory by calling the \fIber_bvfree function.e\fP \fIerrcodep\fP is an output parameter, which points to the result code returned by the server. If this parameter is NULL, the result code is not returned. .LP See ldap.h for a list of possible return codes. .SH SEE ALSO .BR ldap_search (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac3000081a400000000000000000000000151244f4d00003145000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/lber-decode.3.TH LBER_DECODE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ber_get_next, ber_skip_tag, ber_peek_tag, ber_scanf, ber_get_int, ber_get_enum, ber_get_stringb, ber_get_stringa, ber_get_stringal, ber_get_stringbv, ber_get_null, ber_get_boolean, ber_get_bitstring, ber_first_element, ber_next_element \- OpenLDAP LBER simplified Basic Encoding Rules library routines for decoding .SH LIBRARY OpenLDAP LBER (liblber, \-llber) .SH SYNOPSIS .B #include .LP .BI "ber_tag_t ber_get_next(Sockbuf *" sb ", ber_len_t *" len ", BerElement *" ber ");" .LP .BI "ber_tag_t ber_skip_tag(BerElement *" ber ", ber_len_t *" len ");" .LP .BI "ber_tag_t ber_peek_tag(BerElement *" ber ", ber_len_t *" len ");" .LP .BI "ber_tag_t ber_scanf(BerElement *" ber ", const char *" fmt ", ...);" .LP .BI "ber_tag_t ber_get_int(BerElement *" ber ", ber_int_t *" num ");" .LP .BI "ber_tag_t ber_get_enum(BerElement *" ber ", ber_int_t *" num ");" .LP .BI "ber_tag_t ber_get_stringb(BerElement *" ber ", char *" buf ", ber_len_t *" len ");" .LP .BI "ber_tag_t ber_get_stringa(BerElement *" ber ", char **" buf ");" .LP .BI "ber_tag_t ber_get_stringal(BerElement *" ber ", struct berval **" bv ");" .LP .BI "ber_tag_t ber_get_stringbv(BerElement *" ber ", struct berval *" bv ", int " alloc ");" .LP .BI "ber_tag_t ber_get_null(BerElement *" ber ");" .LP .BI "ber_tag_t ber_get_boolean(BerElement *" ber ", ber_int_t *" bool ");" .LP .BI "ber_tag_t ber_get_bitstringa(BerElement *" ber ", char **" buf ", ber_len_t *" blen ");" .LP .BI "ber_tag_t ber_first_element(BerElement *" ber ", ber_len_t *" len ", char **" cookie ");" .LP .BI "ber_tag_t ber_next_element(BerElement *" ber ", ber_len_t *" len ", const char *" cookie ");" .SH DESCRIPTION .LP These routines provide a subroutine interface to a simplified implementation of the Basic Encoding Rules of ASN.1. The version of BER these routines support is the one defined for the LDAP protocol. The encoding rules are the same as BER, except that only definite form lengths are used, and bitstrings and octet strings are always encoded in primitive form. This man page describes the decoding routines in the lber library. See .BR lber-encode (3) for details on the corresponding encoding routines. Consult .BR lber-types (3) for information about types, allocators, and deallocators. .LP Normally, the only routines that need to be called by an application are .BR ber_get_next () to get the next BER element and .BR ber_scanf () to do the actual decoding. In some cases, .BR ber_peek_tag () may also need to be called in normal usage. The other routines are provided for those applications that need more control than .BR ber_scanf () provides. In general, these routines return the tag of the element decoded, or LBER_ERROR if an error occurred. .LP The .BR ber_get_next () routine is used to read the next BER element from the given Sockbuf, \fIsb\fP. It strips off and returns the leading tag, strips off and returns the length of the entire element in \fIlen\fP, and sets up \fIber\fP for subsequent calls to .BR ber_scanf () et al to decode the element. See .BR lber-sockbuf (3) for details of the Sockbuf implementation of the \fIsb\fP parameter. .LP The .BR ber_scanf () routine is used to decode a BER element in much the same way that .BR scanf (3) works. It reads from \fIber\fP, a pointer to a BerElement such as returned by .BR ber_get_next (), interprets the bytes according to the format string \fIfmt\fP, and stores the results in its additional arguments. The format string contains conversion specifications which are used to direct the interpretation of the BER element. The format string can contain the following characters. .RS .LP .TP 3 .B a Octet string. A char ** should be supplied. Memory is allocated, filled with the contents of the octet string, null-terminated, and returned in the parameter. The caller should free the returned string using .BR ber_memfree (). .TP .B A Octet string. A variant of "\fBa\fP". A char ** should be supplied. Memory is allocated, filled with the contents of the octet string, null-terminated, and returned in the parameter, unless a zero-length string would result; in that case, the arg is set to NULL. The caller should free the returned string using .BR ber_memfree (). .TP .B s Octet string. A char * buffer should be supplied, followed by a pointer to a ber_len_t initialized to the size of the buffer. Upon return, the null-terminated octet string is put into the buffer, and the ber_len_t is set to the actual size of the octet string. .TP .B O Octet string. A struct ber_val ** should be supplied, which upon return points to a dynamically allocated struct berval containing the octet string and its length. The caller should free the returned structure using .BR ber_bvfree (). .TP .B o Octet string. A struct ber_val * should be supplied, which upon return contains the dynamically allocated octet string and its length. The caller should free the returned octet string using .BR ber_memfree (). .TP .B m Octet string. A struct ber_val * should be supplied, which upon return contains the octet string and its length. The string resides in memory assigned to the BerElement, and must not be freed by the caller. .TP .B b Boolean. A pointer to a ber_int_t should be supplied. .TP .B e Enumeration. A pointer to a ber_int_t should be supplied. .TP .B i Integer. A pointer to a ber_int_t should be supplied. .TP .B B Bitstring. A char ** should be supplied which will point to the dynamically allocated bits, followed by a ber_len_t *, which will point to the length (in bits) of the bitstring returned. .TP .B n Null. No parameter is required. The element is simply skipped if it is recognized. .TP .B v Sequence of octet strings. A char *** should be supplied, which upon return points to a dynamically allocated null-terminated array of char *'s containing the octet strings. NULL is returned if the sequence is empty. The caller should free the returned array and octet strings using .BR ber_memvfree (). .TP .B V Sequence of octet strings with lengths. A struct berval *** should be supplied, which upon return points to a dynamically allocated null-terminated array of struct berval *'s containing the octet strings and their lengths. NULL is returned if the sequence is empty. The caller should free the returned structures using .BR ber_bvecfree (). .TP .B W Sequence of octet strings with lengths. A BerVarray * should be supplied, which upon return points to a dynamically allocated array of struct berval's containing the octet strings and their lengths. The array is terminated by a struct berval with a NULL bv_val string pointer. NULL is returned if the sequence is empty. The caller should free the returned structures using .BR ber_bvarray_free (). .TP .B M Sequence of octet strings with lengths. This is a generalized form of the previous three formats. A void ** (ptr) should be supplied, followed by a ber_len_t * (len) and a ber_len_t (off). Upon return (ptr) will point to a dynamically allocated array whose elements are all of size (*len). A struct berval will be filled starting at offset (off) in each element. The strings in each struct berval reside in memory assigned to the BerElement and must not be freed by the caller. The array is terminated by a struct berval with a NULL bv_val string pointer. NULL is returned if the sequence is empty. The number of elements in the array is also stored in (*len) on return. The caller should free the returned array using .BR ber_memfree (). .TP .B l Length of the next element. A pointer to a ber_len_t should be supplied. .TP .B t Tag of the next element. A pointer to a ber_tag_t should be supplied. .TP .B T Skip element and return its tag. A pointer to a ber_tag_t should be supplied. .TP .B x Skip element. The next element is skipped. .TP .B { Begin sequence. No parameter is required. The initial sequence tag and length are skipped. .TP .B } End sequence. No parameter is required and no action is taken. .TP .B [ Begin set. No parameter is required. The initial set tag and length are skipped. .TP .B ] End set. No parameter is required and no action is taken. .RE .LP The .BR ber_get_int () routine tries to interpret the next element as an integer, returning the result in \fInum\fP. The tag of whatever it finds is returned on success, LBER_ERROR (\-1) on failure. .LP The .BR ber_get_stringb () routine is used to read an octet string into a preallocated buffer. The \fIlen\fP parameter should be initialized to the size of the buffer, and will contain the length of the octet string read upon return. The buffer should be big enough to take the octet string value plus a terminating NULL byte. .LP The .BR ber_get_stringa () routine is used to dynamically allocate space into which an octet string is read. The caller should free the returned string using .BR ber_memfree(). .LP The .BR ber_get_stringal () routine is used to dynamically allocate space into which an octet string and its length are read. It takes a struct berval **, and returns the result in this parameter. The caller should free the returned structure using .BR ber_bvfree(). .LP The .BR ber_get_stringbv () routine is used to read an octet string and its length into the provided struct berval *. If the \fIalloc\fP parameter is zero, the string will reside in memory assigned to the BerElement, and must not be freed by the caller. If the \fIalloc\fP parameter is non-zero, the string will be copied into dynamically allocated space which should be returned using .BR ber_memfree (). .LP The .BR ber_get_null () routine is used to read a NULL element. It returns the tag of the element it skips over. .LP The .BR ber_get_boolean () routine is used to read a boolean value. It is called the same way that .BR ber_get_int () is called. .LP The .BR ber_get_enum () routine is used to read a enumeration value. It is called the same way that .BR ber_get_int () is called. .LP The .BR ber_get_bitstringa () routine is used to read a bitstring value. It takes a char ** which will hold the dynamically allocated bits, followed by an ber_len_t *, which will point to the length (in bits) of the bitstring returned. The caller should free the returned string using .BR ber_memfree (). .LP The .BR ber_first_element () routine is used to return the tag and length of the first element in a set or sequence. It also returns in \fIcookie\fP a magic cookie parameter that should be passed to subsequent calls to ber_next_element(), which returns similar information. .SH EXAMPLES Assume the variable \fIber\fP contains a lightweight BER encoding of the following ASN.1 object: .LP .nf AlmostASearchRequest := SEQUENCE { baseObject DistinguishedName, scope ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2) }, derefAliases ENUMERATED { neverDerefaliases (0), derefInSearching (1), derefFindingBaseObj (2), alwaysDerefAliases (3) }, sizelimit INTEGER (0 .. 65535), timelimit INTEGER (0 .. 65535), attrsOnly BOOLEAN, attributes SEQUENCE OF AttributeType } .fi .LP The element can be decoded using .BR ber_scanf () as follows. .LP .nf ber_int_t scope, deref, size, time, attrsonly; char *dn, **attrs; ber_tag_t tag; tag = ber_scanf( ber, "{aeeiib{v}}", &dn, &scope, &deref, &size, &time, &attrsonly, &attrs ); if( tag == LBER_ERROR ) { /* error */ } else { /* success */ } ber_memfree( dn ); ber_memvfree( attrs ); .fi .SH ERRORS If an error occurs during decoding, generally these routines return LBER_ERROR ((ber_tag_t)\-1). .LP .SH NOTES .LP The return values for all of these functions are declared in the .B header file. Some routines may dynamically allocate memory which must be freed by the caller using supplied deallocation routines. .SH SEE ALSO .BR lber-encode (3), .BR lber-memory (3), .BR lber-sockbuf (3), .BR lber-types (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac7000081a400000000000000000000000151244f4e00001955000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/lber-types.3.TH LBER_TYPES 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ber_int_t, ber_uint_t, ber_len_t, ber_slen_t, ber_tag_t, struct berval, BerValue, BerVarray, BerElement, ber_bvfree, ber_bvecfree, ber_bvecadd, ber_bvarray_free, ber_bvarray_add, ber_bvdup, ber_dupbv, ber_bvstr, ber_bvstrdup, ber_str2bv, ber_alloc_t, ber_init, ber_init2, ber_free \- OpenLDAP LBER types and allocation functions .SH LIBRARY OpenLDAP LBER (liblber, \-llber) .SH SYNOPSIS .B #include .LP .nf .ft B typedef impl_tag_t ber_tag_t; typedef impl_int_t ber_int_t; typedef impl_uint_t ber_uint_t; typedef impl_len_t ber_len_t; typedef impl_slen_t ber_slen_t; typedef struct berval { ber_len_t bv_len; char *bv_val; } BerValue, *BerVarray; typedef struct berelement BerElement; .ft .fi .LP .BI "void ber_bvfree(struct berval *" bv ");" .LP .BI "void ber_bvecfree(struct berval **" bvec ");" .LP .BI "void ber_bvecadd(struct berval ***" bvec ", struct berval *" bv ");" .LP .BI "void ber_bvarray_free(struct berval *" bvarray ");" .LP .BI "void ber_bvarray_add(BerVarray *" bvarray ", BerValue *" bv ");" .LP .BI "struct berval *ber_bvdup(const struct berval *" bv ");" .LP .BI "struct berval *ber_dupbv(const struct berval *" dst ", struct berval *" src ");" .LP .BI "struct berval *ber_bvstr(const char *" str ");" .LP .BI "struct berval *ber_bvstrdup(const char *" str ");" .LP .BI "struct berval *ber_str2bv(const char *" str ", ber_len_t " len ", int " dup ", struct berval *" bv ");" .LP .BI "BerElement *ber_alloc_t(int " options ");" .LP .BI "BerElement *ber_init(struct berval *" bv ");" .LP .BI "void ber_init2(BerElement *" ber ", struct berval *" bv ", int " options ");" .LP .BI "void ber_free(BerElement *" ber ", int " freebuf ");" .SH DESCRIPTION .LP The following are the basic types and structures defined for use with the Lightweight BER library. .LP .B ber_int_t is a signed integer of at least 32 bits. It is commonly equivalent to .BR int . .B ber_uint_t is the unsigned variant of .BR ber_int_t . .LP .B ber_len_t is an unsigned integer of at least 32 bits used to represent a length. It is commonly equivalent to a .BR size_t . .B ber_slen_t is the signed variant to .BR ber_len_t . .LP .B ber_tag_t is an unsigned integer of at least 32 bits used to represent a BER tag. It is commonly equivalent to a .BR unsigned\ long . .LP The actual definitions of the integral impl_TYPE_t types are platform specific. .LP .BR BerValue , commonly used as .BR struct\ berval , is used to hold an arbitrary sequence of octets. .B bv_val points to .B bv_len octets. .B bv_val is not necessarily terminated by a NULL (zero) octet. .BR ber_bvfree () frees a BerValue, pointed to by \fIbv\fP, returned from this API. If \fIbv\fP is NULL, the routine does nothing. .LP .BR ber_bvecfree () frees an array of BerValues (and the array), pointed to by \fIbvec\fP, returned from this API. If \fIbvec\fP is NULL, the routine does nothing. .BR ber_bvecadd () appends the \fIbv\fP pointer to the \fIbvec\fP array. Space for the array is allocated as needed. The end of the array is marked by a NULL pointer. .LP .BR ber_bvarray_free () frees an array of BerValues (and the array), pointed to by \fIbvarray\fP, returned from this API. If \fIbvarray\fP is NULL, the routine does nothing. .BR ber_bvarray_add () appends the contents of the BerValue pointed to by \fIbv\fP to the \fIbvarray\fP array. Space for the new element is allocated as needed. The end of the array is marked by a BerValue with a NULL bv_val field. .LP .BR ber_bvdup () returns a copy of a BerValue. The routine returns NULL upon error (e.g. out of memory). The caller should use .BR ber_bvfree () to deallocate the resulting BerValue. .BR ber_dupbv () copies a BerValue from \fIsrc\fP to \fIdst\fP. If \fIdst\fP is NULL a new BerValue will be allocated to hold the copy. The routine returns NULL upon error, otherwise it returns a pointer to the copy. If \fIdst\fP is NULL the caller should use .BR ber_bvfree () to deallocate the resulting BerValue, otherwise .BR ber_memfree () should be used to deallocate the \fIdst->bv_val\fP. (The .BR ber_bvdup () function is internally implemented as ber_dupbv(NULL, bv). .BR ber_bvdup () is provided only for compatibility with an expired draft of the LDAP C API; .BR ber_dupbv () is the preferred interface.) .LP .BR ber_bvstr () returns a BerValue containing the string pointed to by \fIstr\fP. .BR ber_bvstrdup () returns a BerValue containing a copy of the string pointed to by \fIstr\fP. .BR ber_str2bv () returns a BerValue containing the string pointed to by \fIstr\fP, whose length may be optionally specified in \fIlen\fP. If \fIdup\fP is non-zero, the BerValue will contain a copy of \fIstr\fP. If \fIlen\fP is zero, the number of bytes to copy will be determined by .BR strlen (3), otherwise \fIlen\fP bytes will be copied. If \fIbv\fP is non-NULL, the result will be stored in the given BerValue, otherwise a new BerValue will be allocated to store the result. NOTE: Both .BR ber_bvstr () and .BR ber_bvstrdup () are implemented as macros using .BR ber_str2bv () in this version of the library. .LP .B BerElement is an opaque structure used to maintain state information used in encoding and decoding. .BR ber_alloc_t () is used to create an empty BerElement structure. If .B LBER_USE_DER is specified for the .I options parameter then data lengths for data written to the BerElement will be encoded in the minimal number of octets required, otherwise they will always be written as four byte values. .BR ber_init () creates a BerElement structure that is initialized with a copy of the data in its .I bv parameter. .BR ber_init2 () initializes an existing BerElement .I ber using the data in the .I bv parameter. The data is referenced directly, not copied. The .I options parameter is the same as for .BR ber_alloc_t (). .BR ber_free () frees a BerElement pointed to by \fIber\fP. If \fIber\fP is NULL, the routine does nothing. If \fIfreebuf\fP is zero, the internal buffer is not freed. .SH SEE ALSO .BR lber-encode (3), .BR lber-decode (3), .BR lber-memory (3) .LP .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031adf000081a400000000000000000000000151244f5100000663000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/man/man3/ldap_parse_sort_control.3.TH LDAP_PARSE_SORT-CONTROL 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_parse_sort_control \- Decode the information returned from a search operation that used a server-side sort control .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_parse_sort_control(ld, ctrls, returnCode, attribute) .ft LDAP *ld; LDAPControl **ctrls; unsigned long *returnCode; char **attribute; .SH DESCRIPTION This function is used to parse the results returned in a search operation that uses a server-side sort control. .LP It takes a null terminated array of LDAPControl structures usually obtained by a call to the .BR ldap_parse_result function. A returncode which points to the sort control result code,and an array of LDAPControl structures that list the client controls to use with the search. The function also takes an out parameter \fIattribute\fP and if the sort operation fails, the server may return a string that indicates the first attribute in the sortKey list that caused the failure. If this parameter is NULL, no string is returned. If a string is returned, the memory should be freed by calling the ldap_memfree function. .SH NOTES .SH SEE ALSO .BR ldap_result (3), .BR ldap_controls_free (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad0000081a400000000000000000000000151244f4f000019d2000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man3/ldap_error.3.TH LDAP_ERROR 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_perror, ld_errno, ldap_result2error, ldap_errlist, ldap_err2string \- LDAP protocol error handling routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B char *ldap_err2string( int \fIerr\fB ); .SH DESCRIPTION The .B ldap_err2string() routine provides short description of the various codes returned by routines in this library. The returned string is a pointer to a static area that should not be modified. These codes are either negative, indicating an API error code; positive, indicating an LDAP resultCode other than \'success' (0), or - zero, indicating both successful use of the API and the LDAP resultCode \'success' (0). The code associated with an LDAP session is accessible using .BR ldap_get_option (3) and .BR ldap_set_option (3) with the .B LDAP_OPT_RESULT_CODE option (previously called .BR LDAP_OPT_ERROR_NUMBER ). .SH PROTOCOL RESULT CODES This section provides a partial list of protocol codes recognized by the library. As LDAP is extensible, additional values may be returned. A complete listing of \fIregistered\fP LDAP result codes can be obtained from the \fIInternet Assigned Numbers Authority\fP . .LP .TP 20 .SM LDAP_SUCCESS The request was successful. .TP .SM LDAP_OPERATIONS_ERROR An operations error occurred. .TP .SM LDAP_PROTOCOL_ERROR A protocol violation was detected. .TP .SM LDAP_TIMELIMIT_EXCEEDED An LDAP time limit was exceeded. .TP .SM LDAP_SIZELIMIT_EXCEEDED An LDAP size limit was exceeded. .TP .SM LDAP_COMPARE_FALSE A compare operation returned false. .TP .SM LDAP_COMPARE_TRUE A compare operation returned true. .TP .SM LDAP_STRONG_AUTH_NOT_SUPPORTED The LDAP server does not support strong authentication. .TP .SM LDAP_STRONG_AUTH_REQUIRED Strong authentication is required for the operation. .TP .SM LDAP_PARTIAL_RESULTS Partial results only returned. .TP .SM LDAP_NO_SUCH_ATTRIBUTE The attribute type specified does not exist in the entry. .TP .SM LDAP_UNDEFINED_TYPE The attribute type specified is invalid. .TP .SM LDAP_INAPPROPRIATE_MATCHING Filter type not supported for the specified attribute. .TP .SM LDAP_CONSTRAINT_VIOLATION An attribute value specified violates some constraint (e.g., a postalAddress has too many lines, or a line that is too long). .TP .SM LDAP_TYPE_OR_VALUE_EXISTS An attribute type or attribute value specified already exists in the entry. .TP .SM LDAP_INVALID_SYNTAX An invalid attribute value was specified. .TP .SM LDAP_NO_SUCH_OBJECT The specified object does not exist in The Directory. .TP .SM LDAP_ALIAS_PROBLEM An alias in The Directory points to a nonexistent entry. .TP .SM LDAP_INVALID_DN_SYNTAX A syntactically invalid DN was specified. .TP .SM LDAP_IS_LEAF The object specified is a leaf. .TP .SM LDAP_ALIAS_DEREF_PROBLEM A problem was encountered when dereferencing an alias. .TP .SM LDAP_INAPPROPRIATE_AUTH Inappropriate authentication was specified (e.g., LDAP_AUTH_SIMPLE was specified and the entry does not have a userPassword attribute). .TP .SM LDAP_INVALID_CREDENTIALS Invalid credentials were presented (e.g., the wrong password). .TP .SM LDAP_INSUFFICIENT_ACCESS The user has insufficient access to perform the operation. .TP .SM LDAP_BUSY The DSA is busy. .TP .SM LDAP_UNAVAILABLE The DSA is unavailable. .TP .SM LDAP_UNWILLING_TO_PERFORM The DSA is unwilling to perform the operation. .TP .SM LDAP_LOOP_DETECT A loop was detected. .TP .SM LDAP_NAMING_VIOLATION A naming violation occurred. .TP .SM LDAP_OBJECT_CLASS_VIOLATION An object class violation occurred (e.g., a "must" attribute was missing from the entry). .TP .SM LDAP_NOT_ALLOWED_ON_NONLEAF The operation is not allowed on a nonleaf object. .TP .SM LDAP_NOT_ALLOWED_ON_RDN The operation is not allowed on an RDN. .TP .SM LDAP_ALREADY_EXISTS The entry already exists. .TP .SM LDAP_NO_OBJECT_CLASS_MODS Object class modifications are not allowed. .TP .SM LDAP_OTHER An unknown error occurred. .SH API ERROR CODES This section provides a complete list of API error codes recognized by the library. Note that LDAP_SUCCESS indicates success of an API call in addition to representing the return of the LDAP \'success' resultCode. .LP .TP 20 .SM LDAP_SERVER_DOWN The LDAP library can't contact the LDAP server. .TP .SM LDAP_LOCAL_ERROR Some local error occurred. This is usually a failed dynamic memory allocation. .TP .SM LDAP_ENCODING_ERROR An error was encountered encoding parameters to send to the LDAP server. .TP .SM LDAP_DECODING_ERROR An error was encountered decoding a result from the LDAP server. .TP .SM LDAP_TIMEOUT A timelimit was exceeded while waiting for a result. .TP .SM LDAP_AUTH_UNKNOWN The authentication method specified to ldap_bind() is not known. .TP .SM LDAP_FILTER_ERROR An invalid filter was supplied to ldap_search() (e.g., unbalanced parentheses). .TP .SM LDAP_PARAM_ERROR An ldap routine was called with a bad parameter. .TP .SM LDAP_NO_MEMORY An memory allocation (e.g., malloc(3) or other dynamic memory allocator) call failed in an ldap library routine. .TP .SM LDAP_USER_CANCELED Indicates the user cancelled the operation. .TP .SM LDAP_CONNECT_ERROR Indicates a connection problem. .TP .SM LDAP_NOT_SUPPORTED Indicates the routine was called in a manner not supported by the library. .TP .SM LDAP_CONTROL_NOT_FOUND Indicates the control provided is unknown to the client library. .TP .SM LDAP_NO_RESULTS_RETURNED Indicates no results returned. .TP .SM LDAP_MORE_RESULTS_TO_RETURN Indicates more results could be returned. .TP .SM LDAP_CLIENT_LOOP Indicates the library has detected a loop in its processing. .TP .SM LDAP_REFERRAL_LIMIT_EXCEEDED Indicates the referral limit has been exceeded. .SH DEPRECATED Deprecated interfaces generally remain in the library. The macro LDAP_DEPRECATED can be defined to a non-zero value (e.g., -DLDAP_DEPRECATED=1) when compiling program designed to use deprecated interfaces. It is recommended that developers writing new programs, or updating old programs, avoid use of deprecated interfaces. Over time, it is expected that documentation (and, eventually, support) for deprecated interfaces to be eliminated. .SH SEE ALSO .BR ldap (3), .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ad7000081a400000000000000000000000151244f500000497e000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/man/man3/ldap_get_option.3.TH LDAP_GET_OPTION 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_get_option, ldap_set_option \- LDAP option handling routines .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .B #include .LP .BI "int ldap_get_option(LDAP *" ld ", int " option ", void *" outvalue ");" .LP .BI "int ldap_set_option(LDAP *" ld ", int " option ", const void *" invalue ");" .SH DESCRIPTION .LP These routines provide access to options stored either in a LDAP handle or as global options, where applicable. They make use of a neutral interface, where the type of the value either retrieved by .BR ldap_get_option (3) or set by .BR ldap_set_option (3) is cast to .BR "void *" . The actual type is determined based on the value of the .B option argument. Global options are set/retrieved by passing a NULL LDAP handle. LDAP handles inherit their default settings from the global options in effect at the time the handle is created. .TP .B LDAP_OPT_API_FEATURE_INFO Fills-in a .BR "LDAPAPIFeatureInfo" ; .BR outvalue must be a .BR "LDAPAPIFeatureInfo *" , pointing to an already allocated struct. This is a read-only option. .TP .B LDAP_OPT_API_INFO Fills-in a .BR "LDAPAPIInfo" ; .BR outvalue must be a .BR "LDAPAPIInfo *" , pointing to an already allocated struct. This is a read-only option. .TP .B LDAP_OPT_CLIENT_CONTROLS Sets/gets the client-side controls to be used for all operations. This is now deprecated as modern LDAP C API provides replacements for all main operations which accepts client-side controls as explicit arguments; see for example .BR ldap_search_ext (3), .BR ldap_add_ext (3), .BR ldap_modify_ext (3) and so on. .BR outvalue must be .BR "LDAPControl ***" , and the caller is responsible of freeing the returned controls, if any, by calling .BR ldap_controls_free (3), while .BR invalue must be .BR "LDAPControl *const *" ; the library duplicates the controls passed via .BR invalue . .TP .B LDAP_OPT_CONNECT_ASYNC Sets/gets the status of the asynchronous connect flag. .BR invalue should either be .BR LDAP_OPT_OFF or .BR LDAP_OPT_ON ; .BR outvalue must be .BR "int *" . When set, the library will call .BR connect (2) and return, without waiting for response. This leaves the handle in a connecting state. Subsequent calls to library routines will poll for completion of the connect before performing further operations. As a consequence, library calls that need to establish a connection with a DSA do not block even for the network timeout (option .BR LDAP_OPT_NETWORK_TIMEOUT ). This option is OpenLDAP specific. .TP .B LDAP_OPT_CONNECT_CB This option allows to set a connect callback. .B invalue must be a .BR "const struct ldap_conncb *" . Callbacks are executed in last in-first served order. Handle-specific callbacks are executed first, followed by global ones. Right before freeing the callback structure, the .B lc_del callback handler is passed a .B NULL .BR Sockbuf . Calling .BR ldap_get_option (3) for this option removes the callback whose pointer matches .BR outvalue . This option is OpenLDAP specific. .TP .B LDAP_OPT_DEBUG_LEVEL Sets/gets the debug level of the client library. .BR invalue must be a .BR "const int *" ; .BR outvalue must be a .BR "int *" . Valid debug levels are .BR LDAP_DEBUG_ANY , .BR LDAP_DEBUG_ARGS , .BR LDAP_DEBUG_BER , .BR LDAP_DEBUG_CONNS , .BR LDAP_DEBUG_NONE , .BR LDAP_DEBUG_PACKETS , .BR LDAP_DEBUG_PARSE , and .BR LDAP_DEBUG_TRACE . This option is OpenLDAP specific. .TP .B LDAP_OPT_DEFBASE Sets/gets a string containing the DN to be used as default base for search operations. .BR outvalue must be a .BR "char **" , and the caller is responsible of freeing the returned string by calling .BR ldap_memfree (3), while .BR invalue must be a .BR "const char *" ; the library duplicates the corresponding string. This option is OpenLDAP specific. .TP .B LDAP_OPT_DEREF Sets/gets the value that defines when alias dereferencing must occur. .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . They cannot be NULL. The value of .BR *invalue should be one of .BR LDAP_DEREF_NEVER (the default), .BR LDAP_DEREF_SEARCHING , .BR LDAP_DEREF_FINDING , or .BR LDAP_DEREF_ALWAYS . Note that this has ever been the only means to determine alias dereferencing within search operations. .TP .B LDAP_OPT_DESC Returns the file descriptor associated to the socket buffer of the LDAP handle passed in as .BR ld ; .BR outvalue must be a .BR "int *" . This is a read-only, handle-specific option. .TP .B LDAP_OPT_DIAGNOSTIC_MESSAGE Sets/gets a string containing the error string associated to the LDAP handle. This option was formerly known as .BR LDAP_OPT_ERROR_STRING . .BR outvalue must be a .BR "char **" , and the caller is responsible of freeing the returned string by calling .BR ldap_memfree (3), while .BR invalue must be a .BR "char *" ; the library duplicates the corresponding string. .TP .B LDAP_OPT_HOST_NAME Sets/gets a space-separated list of hosts to be contacted by the library when trying to establish a connection. This is now deprecated in favor of .BR LDAP_OPT_URI . .BR outvalue must be a .BR "char **" , and the caller is responsible of freeing the resulting string by calling .BR ldap_memfree (3), while .BR invalue must be a .BR "const char *" ; the library duplicates the corresponding string. .TP .B LDAP_OPT_MATCHED_DN Sets/gets a string containing the matched DN associated to the LDAP handle. .BR outvalue must be a .BR "char **" , and the caller is responsible of freeing the returned string by calling .BR ldap_memfree (3), while .BR invalue must be a .BR "const char *" ; the library duplicates the corresponding string. .TP .B LDAP_OPT_NETWORK_TIMEOUT Sets/gets the network timeout value after which .BR poll (2)/ select (2) following a .BR connect (2) returns in case of no activity. .B outvalue must be a .BR "struct timeval **" (the caller has to free .BR *outvalue ) , and .B invalue must be a .BR "const struct timeval *" . They cannot be NULL. Using a struct with seconds set to \-1 results in an infinite timeout, which is the default. This option is OpenLDAP specific. .TP .B LDAP_OPT_PROTOCOL_VERSION Sets/gets the protocol version. .BR outvalue and .BR invalue must be .BR "int *" . .TP .B LDAP_OPT_REFERRAL_URLS Sets/gets an array containing the referral URIs associated to the LDAP handle. .BR outvalue must be a .BR "char ***" , and the caller is responsible of freeing the returned string by calling .BR ldap_memvfree (3), while .BR invalue must be a NULL-terminated .BR "char *const *" ; the library duplicates the corresponding string. This option is OpenLDAP specific. .TP .B LDAP_OPT_REFERRALS Determines whether the library should implicitly chase referrals or not. .BR invalue must be .BR "const int *" ; its value should either be .BR LDAP_OPT_OFF or .BR LDAP_OPT_ON . .BR outvalue must be .BR "int *" . .\".TP .\".B LDAP_OPT_REFHOPLIMIT .\"This option is OpenLDAP specific. .\"It is not currently implemented. .TP .B LDAP_OPT_RESTART Determines whether the library should implicitly restart connections (FIXME). .BR invalue must be .BR "const int *" ; its value should either be .BR LDAP_OPT_OFF or .BR LDAP_OPT_ON . .BR outvalue must be .BR "int *" . .TP .B LDAP_OPT_RESULT_CODE Sets/gets the LDAP result code associated to the handle. This option was formerly known as .BR LDAP_OPT_ERROR_NUMBER . .BR invalue must be a .BR "const int *" . .BR outvalue must be a .BR "int *" . .TP .B LDAP_OPT_SERVER_CONTROLS Sets/gets the server-side controls to be used for all operations. This is now deprecated as modern LDAP C API provides replacements for all main operations which accepts server-side controls as explicit arguments; see for example .BR ldap_search_ext (3), .BR ldap_add_ext (3), .BR ldap_modify_ext (3) and so on. .BR outvalue must be .BR "LDAPControl ***" , and the caller is responsible of freeing the returned controls, if any, by calling .BR ldap_controls_free (3), while .BR invalue must be .BR "LDAPControl *const *" ; the library duplicates the controls passed via .BR invalue . .TP .B LDAP_OPT_SESSION_REFCNT Returns the reference count associated with the LDAP handle passed in as .BR ld ; .BR outvalue must be a .BR "int *" . This is a read-only, handle-specific option. This option is OpenLDAP specific. .TP .B LDAP_OPT_SIZELIMIT Sets/gets the value that defines the maximum number of entries to be returned by a search operation. .BR invalue must be .BR "const int *" , while .BR outvalue must be .BR "int *" ; They cannot be NULL. .TP .B LDAP_OPT_SOCKBUF Returns a pointer to the socket buffer of the LDAP handle passed in as .BR ld ; .BR outvalue must be a .BR "Sockbuf **" . This is a read-only, handle-specific option. This option is OpenLDAP specific. .TP .B LDAP_OPT_TIMELIMIT Sets/gets the value that defines the time limit after which a search operation should be terminated by the server. .BR invalue must be .BR "const int *" , while .BR outvalue must be .BR "int *" , and they cannot be NULL. .TP .B LDAP_OPT_TIMEOUT Sets/gets a timeout value for the synchronous API calls. .B outvalue must be a .BR "struct timeval **" (the caller has to free .BR *outvalue ) , and .B invalue must be a .BR "struct timeval *" , and they cannot be NULL. Using a struct with seconds set to \-1 results in an infinite timeout, which is the default. This option is OpenLDAP specific. .TP .B LDAP_OPT_URI Sets/gets a comma- or space-separated list of URIs to be contacted by the library when trying to establish a connection. .BR outvalue must be a .BR "char **" , and the caller is responsible of freeing the resulting string by calling .BR ldap_memfree (3), while .BR invalue must be a .BR "const char *" ; the library parses the string into a list of .BR LDAPURLDesc structures, so the invocation of .BR ldap_set_option (3) may fail if URL parsing fails. URIs may only contain the .BR schema , the .BR host , and the .BR port fields. This option is OpenLDAP specific. .SH SASL OPTIONS The SASL options are OpenLDAP specific. .TP .B LDAP_OPT_X_SASL_AUTHCID Gets the SASL authentication identity; .BR outvalue must be a .BR "char **" , its content needs to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_SASL_AUTHZID Gets the SASL authorization identity; .BR outvalue must be a .BR "char **" , its content needs to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_SASL_MAXBUFSIZE Gets/sets SASL maximum buffer size; .BR invalue must be .BR "const ber_len_t *" , while .BR outvalue must be .BR "ber_len_t *" . See also .BR LDAP_OPT_X_SASL_SECPROPS . .TP .B LDAP_OPT_X_SASL_MECH Gets the SASL mechanism; .BR outvalue must be a .BR "char **" , its content needs to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_SASL_MECHLIST Gets the list of the available mechanisms, in form of a NULL-terminated array of strings; .BR outvalue must be .BR "char ***" . The caller must not free or otherwise muck with it. .TP .B LDAP_OPT_X_SASL_NOCANON Sets/gets the NOCANON flag. When unset, the hostname is canonicalized. .BR invalue must be .BR "const int *" ; its value should either be .BR LDAP_OPT_OFF or .BR LDAP_OPT_ON . .BR outvalue must be .BR "int *" . .TP .B LDAP_OPT_X_SASL_REALM Gets the SASL realm; .BR outvalue must be a .BR "char **" , its content needs to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_SASL_SECPROPS Sets the SASL secprops; .BR invalue must be a .BR "char *" , containing a comma-separated list of properties. Legal values are: .BR none , .BR nodict , .BR noplain , .BR noactive , .BR passcred , .BR forwardsec , .BR noanonymous , .BR minssf= , .BR maxssf= , .BR maxbufsize= . .TP .B LDAP_OPT_X_SASL_SSF Gets the SASL SSF; .BR outvalue must be a .BR "ber_len_t *" . .TP .B LDAP_OPT_X_SASL_SSF_EXTERNAL Sets the SASL SSF value related to an authentication performed using an EXTERNAL mechanism; .BR invalue must be a .BR "const ber_len_t *" . .TP .B LDAP_OPT_X_SASL_SSF_MAX Gets/sets SASL maximum SSF; .BR invalue must be .BR "const ber_len_t *" , while .BR outvalue must be .BR "ber_len_t *" . See also .BR LDAP_OPT_X_SASL_SECPROPS . .TP .B LDAP_OPT_X_SASL_SSF_MIN Gets/sets SASL minimum SSF; .BR invalue must be .BR "const ber_len_t *" , while .BR outvalue must be .BR "ber_len_t *" . See also .BR LDAP_OPT_X_SASL_SECPROPS . .TP .B LDAP_OPT_X_SASL_USERNAME Gets the SASL username; .BR outvalue must be a .BR "char **" . Its content needs to be freed by the caller using .BR ldap_memfree (3). .SH TCP OPTIONS The TCP options are OpenLDAP specific. Mainly intended for use with Linux, they may not be portable. .TP .B LDAP_OPT_X_KEEPALIVE_IDLE Sets/gets the number of seconds a connection needs to remain idle before TCP starts sending keepalive probes. .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . .TP .B LDAP_OPT_X_KEEPALIVE_PROBES Sets/gets the maximum number of keepalive probes TCP should send before dropping the connection. .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . .TP .B LDAP_OPT_X_KEEPALIVE_INTERVAL Sets/gets the interval in seconds between individual keepalive probes. .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . .SH TLS OPTIONS The TLS options are OpenLDAP specific. .\".TP .\".B LDAP_OPT_X_TLS .\"Sets/gets the TLS mode. .TP .B LDAP_OPT_X_TLS_CACERTDIR Sets/gets the path of the directory containing CA certificates. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_TLS_CACERTFILE Sets/gets the full-path of the CA certificate file. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_TLS_CERTFILE Sets/gets the full-path of the certificate file. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_TLS_CIPHER_SUITE Sets/gets the allowed cipher suite. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_TLS_CONNECT_ARG Sets/gets the connection callback argument. .BR invalue must be .BR "const void *" ; .BR outvalue must be .BR "void **" . .TP .B LDAP_OPT_X_TLS_CONNECT_CB Sets/gets the connection callback handle. .BR invalue must be .BR "const LDAP_TLS_CONNECT_CB *" ; .BR outvalue must be .BR "LDAP_TLS_CONNECT_CB **" . .TP .B LDAP_OPT_X_TLS_CRLCHECK Sets/gets the CRL evaluation strategy, one of .BR LDAP_OPT_X_TLS_CRL_NONE , .BR LDAP_OPT_X_TLS_CRL_PEER , or .BR LDAP_OPT_X_TLS_CRL_ALL . .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . Requires OpenSSL. .TP .B LDAP_OPT_X_TLS_CRLFILE Sets/gets the full-path of the CRL file. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). This option is only valid for GnuTLS. .TP .B LDAP_OPT_X_TLS_CTX Sets/gets the TLS library context. New TLS sessions will inherit their default settings from this library context. .BR invalue must be .BR "const void *" ; .BR outvalue must be .BR "void **" . When using the OpenSSL library this is an SSL_CTX*. When using other crypto libraries this is a pointer to an OpenLDAP private structure. Applications generally should not use this option or attempt to manipulate this structure. .TP .B LDAP_OPT_X_TLS_DHFILE Gets/sets the full-path of the file containing the parameters for Diffie-Hellman ephemeral key exchange. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). Ignored by GnuTLS and Mozilla NSS. .TP .B LDAP_OPT_X_TLS_KEYFILE Sets/gets the full-path of the certificate key file. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). .TP .B LDAP_OPT_X_TLS_NEWCTX Instructs the library to create a new TLS library context. .BR invalue must be .BR "const int *" . A non-zero value pointed to by .BR invalue tells the library to create a context for a server. .TP .B LDAP_OPT_X_TLS_PROTOCOL_MIN Sets/gets the minimum protocol version. .BR invalue must be .BR "const int *" ; .BR outvalue must be .BR "int *" . .TP .B LDAP_OPT_X_TLS_RANDOM_FILE Sets/gets the random file when .B /dev/random and .B /dev/urandom are not available. .BR invalue must be .BR "const char *" ; .BR outvalue must be .BR "char **" , and its contents need to be freed by the caller using .BR ldap_memfree (3). Ignored by GnuTLS older than version 2.2. Ignored by Mozilla NSS. .TP .B LDAP_OPT_X_TLS_REQUIRE_CERT Sets/gets the peer certificate checking strategy, one of .BR LDAP_OPT_X_TLS_NEVER , .BR LDAP_OPT_X_TLS_HARD , .BR LDAP_OPT_X_TLS_DEMAND , .BR LDAP_OPT_X_TLS_ALLOW , .BR LDAP_OPT_X_TLS_TRY . .TP .B LDAP_OPT_X_TLS_SSL_CTX Gets the TLS session context associated with this handle. .BR outvalue must be .BR "void **" . When using the OpenSSL library this is an SSL*. When using other crypto libraries this is a pointer to an OpenLDAP private structure. Applications generally should not use this option. .SH ERRORS On success, the functions return .BR LDAP_OPT_SUCCESS , while they may return .B LDAP_OPT_ERROR to indicate a generic option handling error. Occasionally, more specific errors can be returned, like .B LDAP_NO_MEMORY to indicate a failure in memory allocation. .SH NOTES The LDAP libraries with the .B LDAP_OPT_REFERRALS option set to .B LDAP_OPT_ON (default value) automatically follow referrals using an anonymous bind. Application developers are encouraged to either implement consistent referral chasing features, or explicitly disable referral chasing by setting that option to .BR LDAP_OPT_OFF . .P The protocol version used by the library defaults to LDAPv2 (now historic), which corresponds to the .B LDAP_VERSION2 macro. Application developers are encouraged to explicitly set .B LDAP_OPT_PROTOCOL_VERSION to LDAPv3, using the .B LDAP_VERSION3 macro, or to allow users to select the protocol version. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3), .B RFC 4422 (http://www.rfc-editor.org), .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031acf000081a400000000000000000000000151244f4f00000dfd000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man3/ldap_dup.3.TH LDAP_OPEN 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_dup, ldap_destroy, \- Duplicate and destroy LDAP session handles .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B LDAP *ldap_dup( .RS .ft B LDAP *\fIold\fB ); .RE .LP .ft B int ldap_destroy( .RS .ft B LDAP *\fIold\fB ); .RE .SH DESCRIPTION .LP .B ldap_dup() duplicates an existing LDAP .RB ( "LDAP *" ) session handle. The new session handle may be used concurrently with the original session handle. In a threaded environment, different threads may execute concurrent requests on the same connection/session without fear of contamination. Each session handle manages its own private error results. .LP .B ldap_destroy() destroys an existing session handle. .LP The .B ldap_dup() and .B ldap_destroy() functions are used in conjunction with a "thread safe" version of .B libldap .RB ( libldap_r ) to enable operation thread safe API calls, so that a single session may be simultaneously used across multiple threads with consistent error handling. .LP When a session is created through the use of one of the session creation functions including .BR ldap_open (3), .BR ldap_init (3), .BR ldap_initialize (3) or .BR ldap_init_fd (3) an .B "LDAP *" session handle is returned to the application. The session handle may be shared amongst threads, however the error codes are unique to a session handle. Multiple threads performing different operations using the same session handle will result in inconsistent error codes and return values. .LP To prevent this confusion, .B ldap_dup() is used duplicate an existing session handle so that multiple threads can share the session, and maintain consistent error information and results. .LP The message queues for a session are shared between sibling session handles. Results of operations on a sibling session handles are accessible to all the sibling session handles. Applications desiring results associated with a specific operation should provide the appropriate msgid to .BR ldap_result() . Applications should avoid calling .B ldap_result() with .B LDAP_RES_ANY as that may "steal" and return results in the calling thread that another operation in a different thread, using a different session handle, may require to complete. .LP When .B ldap_unbind() is called on a session handle with siblings, all the siblings become invalid. .LP Siblings must be destroyed using .BR ldap_destroy() . Session handle resources associated with the original .RB ( "LDAP *" ) will be freed when the last session handle is destroyed or when .B ldap_unbind() is called, if no other session handles currently exist. .SH ERRORS If an error occurs, .B ldap_dup() will return NULL and .I errno should be set appropriately. .B ldap_destroy() will directly return the LDAP code associated to the error (or .I LDAP_SUCCESS in case of success); .I errno should be set as well whenever appropriate. .SH SEE ALSO .BR ldap_open (3), .BR ldap_init (3), .BR ldap_initialize (3), .BR ldap_init_fd (3), .BR errno (3) .SH ACKNOWLEDGEMENTS This work is based on the previously proposed .B LDAP C API Concurrency Extensions draft .BR ( draft-zeilenga-ldap-c-api-concurrency-00.txt ) effort. .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac4000081a400000000000000000000000151244f4d00002419000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man3/lber-encode.3.TH LBER_ENCODE 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ber_alloc_t, ber_flush, ber_flush2, ber_printf, ber_put_int, ber_put_enum, ber_put_ostring, ber_put_string, ber_put_null, ber_put_boolean, ber_put_bitstring, ber_start_seq, ber_start_set, ber_put_seq, ber_put_set \- OpenLDAP LBER simplified Basic Encoding Rules library routines for encoding .SH LIBRARY OpenLDAP LBER (liblber, \-llber) .SH SYNOPSIS .B #include .LP .BI "BerElement *ber_alloc_t(int " options ");" .LP .BI "int ber_flush(Sockbuf *" sb ", BerElement *" ber ", int " freeit ");" .LP .BI "int ber_flush2(Sockbuf *" sb ", BerElement *" ber ", int " freeit ");" .LP .BI "int ber_printf(BerElement *" ber ", const char *" fmt ", ...);" .LP .BI "int ber_put_int(BerElement *" ber ", ber_int_t " num ", ber_tag_t " tag ");" .LP .BI "int ber_put_enum(BerElement *" ber ", ber_int_t " num ", ber_tag_t " tag ");" .LP .BI "int ber_put_ostring(BerElement *" ber ", const char *" str ", ber_len_t " len ", ber_tag_t " tag ");" .LP .BI "int ber_put_string(BerElement *" ber ", const char *" str ", ber_tag_t " tag ");" .LP .BI "int ber_put_null(BerElement *" ber ", ber_tag_t " tag ");" .LP .BI "int ber_put_boolean(BerElement *" ber ", ber_int_t " bool ", ber_tag_t " tag ");" .LP .BI "int ber_put_bitstring(BerElement *" ber ", const char *" str ", ber_len_t " blen ", ber_tag_t " tag ");" .LP .BI "int ber_start_seq(BerElement *" ber ", ber_tag_t " tag ");" .LP .BI "int ber_start_set(BerElement *" ber ", ber_tag_t " tag ");" .LP .BI "int ber_put_seq(BerElement *" ber ");" .LP .BI "int ber_put_set(BerElement *" ber ");" .SH DESCRIPTION .LP These routines provide a subroutine interface to a simplified implementation of the Basic Encoding Rules of ASN.1. The version of BER these routines support is the one defined for the LDAP protocol. The encoding rules are the same as BER, except that only definite form lengths are used, and bitstrings and octet strings are always encoded in primitive form. This man page describes the encoding routines in the lber library. See .BR lber-decode (3) for details on the corresponding decoding routines. Consult .BR lber-types (3) for information about types, allocators, and deallocators. .LP Normally, the only routines that need to be called by an application are .BR ber_alloc_t () to allocate a BER element for encoding, .BR ber_printf () to do the actual encoding, and .BR ber_flush2 () to actually write the element. The other routines are provided for those applications that need more control than .BR ber_printf () provides. In general, these routines return the length of the element encoded, or -1 if an error occurred. .LP The .BR ber_alloc_t () routine is used to allocate a new BER element. It should be called with an argument of LBER_USE_DER. .LP The .BR ber_flush2 () routine is used to actually write the element to a socket (or file) descriptor, once it has been fully encoded (using .BR ber_printf () and friends). See .BR lber-sockbuf (3) for more details on the Sockbuf implementation of the \fIsb\fP parameter. If the \fIfreeit\fP parameter is non-zero, the supplied \fIber\fP will be freed. If \fILBER_FLUSH_FREE_ON_SUCCESS\fP is used, the \fIber\fP is only freed when successfully flushed, otherwise it is left intact; if \fILBER_FLUSH_FREE_ON_ERROR\fP is used, the \fIber\fP is only freed when an error occurs, otherwise it is left intact; if \fILBER_FLUSH_FREE_ALWAYS\fP is used, the \fIber\fP is freed anyway. This function differs from the original .BR ber_flush (3) function, whose behavior corresponds to that indicated for \fILBER_FLUSH_FREE_ON_SUCCESS\fP. Note that in the future, the behavior of .BR ber_flush (3) with \fIfreeit\fP non-zero might change into that of .BR ber_flush2 (3) with \fIfreeit\fP set to \fILBER_FLUSH_FREE_ALWAYS\fP. .LP The .BR ber_printf () routine is used to encode a BER element in much the same way that .BR sprintf (3) works. One important difference, though, is that some state information is kept with the \fIber\fP parameter so that multiple calls can be made to .BR ber_printf () to append things to the end of the BER element. .BR Ber_printf () writes to \fIber\fP, a pointer to a BerElement such as returned by .BR ber_alloc_t (). It interprets and formats its arguments according to the format string \fIfmt\fP. The format string can contain the following characters: .RS .LP .TP 3 .B b Boolean. An ber_int_t parameter should be supplied. A boolean element is output. .TP .B e Enumeration. An ber_int_t parameter should be supplied. An enumeration element is output. .TP .B i Integer. An ber_int_t parameter should be supplied. An integer element is output. .TP .B B Bitstring. A char * pointer to the start of the bitstring is supplied, followed by the number of bits in the bitstring. A bitstring element is output. .TP .B n Null. No parameter is required. A null element is output. .TP .B o Octet string. A char * is supplied, followed by the length of the string pointed to. An octet string element is output. .TP .B O Octet string. A struct berval * is supplied. An octet string element is output. .TP .B s Octet string. A null-terminated string is supplied. An octet string element is output, not including the trailing NULL octet. .TP .B t Tag. A ber_tag_t specifying the tag to give the next element is provided. This works across calls. .TP .B v Several octet strings. A null-terminated array of char *'s is supplied. Note that a construct like '{v}' is required to get an actual SEQUENCE OF octet strings. .TP .B V Several octet strings. A null-terminated array of struct berval *'s is supplied. Note that a construct like '{V}' is required to get an actual SEQUENCE OF octet strings. .TP .B W Several octet strings. An array of struct berval's is supplied. The array is terminated by a struct berval with a NULL bv_val. Note that a construct like '{W}' is required to get an actual SEQUENCE OF octet strings. .TP .B { Begin sequence. No parameter is required. .TP .B } End sequence. No parameter is required. .TP .B [ Begin set. No parameter is required. .TP .B ] End set. No parameter is required. .RE .LP The .BR ber_put_int () routine writes the integer element \fInum\fP to the BER element \fIber\fP. .LP The .BR ber_put_enum () routine writes the enumeration element \fInum\fP to the BER element \fIber\fP. .LP The .BR ber_put_boolean () routine writes the boolean value given by \fIbool\fP to the BER element. .LP The .BR ber_put_bitstring () routine writes \fIblen\fP bits starting at \fIstr\fP as a bitstring value to the given BER element. Note that \fIblen\fP is the length \fIin bits\fP of the bitstring. .LP The .BR ber_put_ostring () routine writes \fIlen\fP bytes starting at \fIstr\fP to the BER element as an octet string. .LP The .BR ber_put_string () routine writes the null-terminated string (minus the terminating '\0') to the BER element as an octet string. .LP The .BR ber_put_null () routine writes a NULL element to the BER element. .LP The .BR ber_start_seq () routine is used to start a sequence in the BER element. The .BR ber_start_set () routine works similarly. The end of the sequence or set is marked by the nearest matching call to .BR ber_put_seq () or .BR ber_put_set (), respectively. .SH EXAMPLES Assuming the following variable declarations, and that the variables have been assigned appropriately, an lber encoding of the following ASN.1 object: .LP .nf AlmostASearchRequest := SEQUENCE { baseObject DistinguishedName, scope ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2) }, derefAliases ENUMERATED { neverDerefaliases (0), derefInSearching (1), derefFindingBaseObj (2), alwaysDerefAliases (3) }, sizelimit INTEGER (0 .. 65535), timelimit INTEGER (0 .. 65535), attrsOnly BOOLEAN, attributes SEQUENCE OF AttributeType } .fi .LP can be achieved like so: .LP .nf int rc; ber_int_t scope, ali, size, time, attrsonly; char *dn, **attrs; BerElement *ber; /* ... fill in values ... */ ber = ber_alloc_t( LBER_USE_DER ); if ( ber == NULL ) { /* error */ } rc = ber_printf( ber, "{siiiib{v}}", dn, scope, ali, size, time, attrsonly, attrs ); if( rc == \-1 ) { /* error */ } else { /* success */ } .fi .SH ERRORS If an error occurs during encoding, generally these routines return \-1. .LP .SH NOTES .LP The return values for all of these functions are declared in the header file. .SH SEE ALSO .BR lber-decode (3), .BR lber-memory (3), .BR lber-sockbuf (3), .BR lber-types (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ade000081a400000000000000000000000151244f5100000f93000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man3/ldap_parse_result.3.TH LDAP_PARSE_RESULT 3 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_parse_result \- Parsing results .SH LIBRARY OpenLDAP LDAP (libldap, \-lldap) .SH SYNOPSIS .nf .ft B #include .LP .ft B int ldap_parse_result( LDAP *ld, LDAPMessage *result, int *errcodep, char **matcheddnp, char **errmsgp, char ***referralsp, LDAPControl ***serverctrlsp, int freeit ) .LP .ft B int ldap_parse_sasl_bind_result( LDAP *ld, LDAPMessage *result, struct berval **servercredp, int freeit ) .LP .ft B int ldap_parse_extended_result( LDAP *ld, LDAPMessage *result, char **retoidp, struct berval **retdatap, int freeit ) .SH DESCRIPTION .LP These routines are used to extract information from a result message. They will operate on the first result message in a chain of search results (skipping past other message types). They take the \fIresult\fP as returned by a call to .BR ldap_result (3), .BR ldap_search_s (3) or .BR ldap_search_st (3). In addition to .BR ldap_parse_result() , the routines .B ldap_parse_sasl_bind_result() and .B ldap_parse_extended_result() are used to get all the result information from SASL bind and extended operations. .LP The \fIerrcodep\fP parameter will be filled in with the result code from the result message. .LP The server might supply a matched DN string in the message indicating how much of a name in a request was recognized. The \fImatcheddnp\fP parameter will be filled in with this string if supplied, else it will be NULL. If a string is returned, it should be freed using .BR ldap_memfree (3). .LP The \fIerrmsgp\fP parameter will be filled in with the error message field from the parsed message. This string should be freed using .BR ldap_memfree (3). .LP The \fIreferralsp\fP parameter will be filled in with an allocated array of referral strings from the parsed message. This array should be freed using .BR ldap_memvfree (3). If no referrals were returned, \fI*referralsp\fP is set to NULL. .LP The \fIserverctrlsp\fP parameter will be filled in with an allocated array of controls copied from the parsed message. The array should be freed using .BR ldap_controls_free (3). If no controls were returned, \fI*serverctrlsp\fP is set to NULL. .LP The \fIfreeit\fP parameter determines whether the parsed message is freed or not after the extraction. Any non-zero value will make it free the message. The .BR ldap_msgfree (3) routine can also be used to free the message later. .LP For SASL bind results, the \fIservercredp\fP parameter will be filled in with an allocated berval structure containing the credentials from the server if present. The structure should be freed using .BR ber_bvfree (3). .LP For extended results, the \fIretoidp\fP parameter will be filled in with the dotted-OID text representation of the name of the extended operation response. The string should be freed using .BR ldap_memfree (3). If no OID was returned, \fI*retoidp\fP is set to NULL. .LP For extended results, the \fIretdatap\fP parameter will be filled in with a pointer to a berval structure containing the data from the extended operation response. The structure should be freed using .BR ber_bvfree (3). If no data were returned, \fI*retdatap\fP is set to NULL. .LP For all the above result parameters, NULL values can be used in calls in order to ignore certain fields. .SH ERRORS Upon success LDAP_SUCCESS is returned. Otherwise the values of the result parameters are undefined. .SH SEE ALSO .BR ldap (3), .BR ldap_result (3), .BR ldap_search (3), .BR ldap_memfree (3), .BR ldap_memvfree (3), .BR ldap_get_values (3), .BR ldap_controls_free (3), .BR lber-types (3) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ab8000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man107070100031ab9000081a400000000000000000000000151244f4d00001a1f000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man1/ldapcompare.1.TH LDAPCOMPARE 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapcompare \- LDAP compare tool .SH SYNOPSIS .B ldapcompare [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-z ] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] .IR DN {\c .BI attr: value | .BI attr:: b64value\fR} .SH DESCRIPTION .I ldapcompare is a shell-accessible interface to the .BR ldap_compare_ext (3) library call. .LP .B ldapcompare opens a connection to an LDAP server, binds, and performs a compare using specified parameters. The \fIDN\fP should be a distinguished name in the directory. \fIAttr\fP should be a known attribute. If followed by one colon, the assertion \fIvalue\fP should be provided as a string. If followed by two colons, the base64 encoding of the value is provided. The result code of the compare is provided as the exit code and, unless ran with \fB\-z\fP, the program prints TRUE, FALSE, or UNDEFINED on standard output. .LP .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapcompare must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually perform the compare. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Run in verbose mode, with many diagnostics written to standard output. .TP .B \-z Run in quiet mode, no output is written. You must check the return status. Useful in shell scripts. .TP .BR \-M [ M ] Enable manage DSA IT control. .B \-MM makes control critical. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. Note that \fIcomplete\fP means that any leading or trailing whitespaces, including newlines, will be considered part of the password and, unlike other software, they will not be stripped. As a consequence, passwords stored in files by commands like .BR echo (1) will not behave as expected, since .BR echo (1) by default appends a trailing newline to the echoed string. The recommended portable way to store a cleartext password in a file for use with this option is to use .BR slappasswd (8) with \fI{CLEARTEXT}\fP as hash and the option \fB\-n\fP. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-P \ { 2 \||\| 3 } Specify the LDAP protocol version to use. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and compare extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Compare extensions: .nf !dontUseCopy .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful. .SH EXAMPLES .nf ldapcompare "uid=babs,dc=example,dc=com" sn:Jensen ldapcompare "uid=babs,dc=example,dc=com" sn::SmVuc2Vu .fi are all equivalent. .SH LIMITATIONS Requiring the value be passed on the command line is limiting and introduces some security concerns. The command should support a mechanism to specify the location (file name or URL) to read the value from. .SH "SEE ALSO" .BR ldap.conf (5), .BR ldif (5), .BR ldap (3), .BR ldap_compare_ext (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031abc000081a400000000000000000000000151244f4d00002285000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldapmodify.1.TH LDAPMODIFY 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapmodify, ldapadd \- LDAP modify entry and LDAP add entry tools .SH SYNOPSIS .B ldapmodify [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-a ] [\c .BR \-c ] [\c .BI \-f \ file\fR] [\c .BI \-S \ file\fR] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] .LP .B ldapadd [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-c ] [\c .BI \-f \ file\fR] [\c .BI \-S \ file\fR] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] .SH DESCRIPTION .B ldapmodify is a shell-accessible interface to the .BR ldap_add_ext (3), .BR ldap_modify_ext (3), .BR ldap_delete_ext (3) and .BR ldap_rename (3). library calls. .B ldapadd is implemented as a hard link to the ldapmodify tool. When invoked as .B ldapadd the \fB\-a\fP (add new entry) flag is turned on automatically. .LP .B ldapmodify opens a connection to an LDAP server, binds, and modifies or adds entries. The entry information is read from standard input or from \fIfile\fP through the use of the \fB\-f\fP option. .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapmodify must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually modify entries. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Use verbose mode, with many diagnostics written to standard output. .TP .B \-a Add new entries. The default for .B ldapmodify is to modify existing entries. If invoked as .BR ldapadd , this flag is always set. .TP .B \-c Continuous operation mode. Errors are reported, but .B ldapmodify will continue with modifications. The default is to exit after reporting an error. .TP .BI \-f \ file Read the entry modification information from \fIfile\fP instead of from standard input. .TP .BI \-S \ file Add or change records which were skipped due to an error are written to \fIfile\fP and the error message returned by the server is added as a comment. Most useful in conjunction with \fB\-c\fP. .TP .BR \-M [ M ] Enable manage DSA IT control. .B \-MM makes control critical. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-P \ { 2 \||\| 3 } Specify the LDAP protocol version to use. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and modify extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Modify extensions: .nf [!]txn[=abort|commit] .fi .TP .BI \-o \ opt \fR[= optparam \fR]] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use .B \-ZZ\c , the command will require the operation to be successful. .SH INPUT FORMAT The contents of \fIfile\fP (or standard input if no \fB\-f\fP flag is given on the command line) must conform to the format defined in .BR ldif (5) (LDIF as defined in RFC 2849). .SH EXAMPLES Assuming that the file .B /tmp/entrymods exists and has the contents: .LP .nf dn: cn=Modify Me,dc=example,dc=com changetype: modify replace: mail mail: modme@example.com \- add: title title: Grand Poobah \- add: jpegPhoto jpegPhoto:< file:///tmp/modme.jpeg \- delete: description \- .fi .LP the command: .LP .nf ldapmodify \-f /tmp/entrymods .fi .LP will replace the contents of the "Modify Me" entry's .I mail attribute with the value "modme@example.com", add a .I title of "Grand Poobah", and the contents of the file "/tmp/modme.jpeg" as a .IR jpegPhoto , and completely remove the .I description attribute. .LP Assuming that the file .B /tmp/newentry exists and has the contents: .LP .nf dn: cn=Barbara Jensen,dc=example,dc=com objectClass: person cn: Barbara Jensen cn: Babs Jensen sn: Jensen title: the world's most famous mythical manager mail: bjensen@example.com uid: bjensen .fi .LP the command: .LP .nf ldapadd \-f /tmp/newentry .fi .LP will add a new entry for Babs Jensen, using the values from the file .B /tmp/newentry. .LP Assuming that the file .B /tmp/entrymods exists and has the contents: .LP .nf dn: cn=Barbara Jensen,dc=example,dc=com changetype: delete .fi .LP the command: .LP .nf ldapmodify \-f /tmp/entrymods .fi .LP will remove Babs Jensen's entry. .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldapadd (1), .BR ldapdelete (1), .BR ldapmodrdn (1), .BR ldapsearch (1), .BR ldap.conf (5), .BR ldap (3), .BR ldap_add_ext (3), .BR ldap_delete_ext (3), .BR ldap_modify_ext (3), .BR ldap_modrdn_ext (3), .BR ldif (5), .BR slapd.replog (5) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031abb000081a400000000000000000000000151244f4d00001809000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man1/ldapexop.1.\" $OpenLDAP$ .\" This contribution is derived from OpenLDAP Software. .\" All of the modifications to OpenLDAP Software represented in this .\" contribution were developed by Peter Marschall . .\" I have not assigned rights and/or interest in this work to any party. .\" .\" Copyright 2009 Peter Marschall .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted only as authorized by the OpenLDAP Public License. .\" .\" A copy of this license is available in file LICENSE in the .\" top-level directory of the distribution or, alternatively, at .\" http://www.OpenLDAP.org/license.html. .TH LDAPEXOP 1 .SH NAME ldapexop \- issue LDAP extended operations .SH SYNOPSIS ldapexop [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BI \-f \ file\fR] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ URI\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] {\c .I oid | .BI oid: data | .BI oid:: b64data | .B whoami | .BI cancel \ cancel-id | .BI refresh \ DN \ \fR[\fIttl\fR]} .SH DESCRIPTION ldapexop issues the LDAP extended operation specified by \fBoid\fP or one of the special keywords \fBwhoami\fP, \fBcancel\fP, or \fBrefresh\fP. Additional data for the extended operation can be passed to the server using \fIdata\fP or base-64 encoded as \fIb64data\fP in the case of \fBoid\fP, or using the additional parameters in the case of the specially named extended operations above. Please note that ldapexop behaves differently for the same extended operation when it was given as an OID or as a specialliy named operation: Calling ldapexop with the OID of the \fBwhoami\fP (RFC 4532) extended operation .nf ldapexop [] 1.3.6.1.4.1.4203.1.11.3 .fi yields .nf # extended operation response data:: .fi while calling it with the keyword \fBwhoami\fP .nf ldapexop [] whoami .fi results in .nf dn: .fi .SH OPTIONS .TP .BI \-V [ V ] Print version info. If\fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .TP .BI \-n Show what would be done but don't actually do it. Useful for debugging in conjunction with \fB\-v\fP. .TP .BI \-v Run in verbose mode, with many diagnostics written to standard output. .TP .BI \-f \ file Read operations from \fIfile\fP. .TP .BI \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. .TP .BI \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ URI Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify the host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify the TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions. \'!\' indicates criticality. .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .BI \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .BI \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. Without this option, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. Giving it twice (\fB\-ZZ\fP) will require the operation to be successful. .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldap_extended_operation_s (3) .SH AUTHOR This manual page was written by Peter Marschall based on \fBldapexop\fP's usage message and a few tests with \fBldapexop\fP. Do not expect it to be complete or absolutely correct. .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031aba000081a400000000000000000000000151244f4d00001a44000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldapdelete.1.TH LDAPDELETE 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapdelete \- LDAP delete entry tool .SH SYNOPSIS .B ldapdelete [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-c ] [\c .BI \-f \ file\fR] [\c .BR \-r ] [\c .BI \-z \ sizelimit\fR] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] [\c .IR DN \ [ ... ]] .SH DESCRIPTION .I ldapdelete is a shell-accessible interface to the .BR ldap_delete_ext (3) library call. .LP .B ldapdelete opens a connection to an LDAP server, binds, and deletes one or more entries. If one or more \fIDN\fP arguments are provided, entries with those Distinguished Names are deleted. Each \fIDN\fP should be provided using the LDAPv3 string representation as defined in RFC 4514. If no \fIDN\fP arguments are provided, a list of DNs is read from standard input (or from \fIfile\fP if the \fB\-f\fP flag is used). .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapdelete must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually delete entries. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Use verbose mode, with many diagnostics written to standard output. .TP .B \-c Continuous operation mode. Errors are reported, but .B ldapdelete will continue with deletions. The default is to exit after reporting an error. .TP .BI \-f \ file Read a series of DNs from \fIfile\fP, one per line, performing an LDAP delete for each. .TP .B \-r Do a recursive delete. If the DN specified isn't a leaf, its children, and all their children are deleted down the tree. No verification is done, so if you add this switch, ldapdelete will happily delete large portions of your tree. Use with care. .TP .BI \-z \ sizelimit Use \fIsizelimit\fP when searching for children DN to delete, to circumvent any server-side size limit. Only useful in conjunction with \fB\-r\fP. .TP .BR \-M [ M ] Enable manage DSA IT control. .B \-MM makes control critical. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-P \ { 2 \||\| 3 } Specify the LDAP protocol version to use. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and delete extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Delete extensions: .nf (none) .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the identity depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful. .SH EXAMPLE The following command: .LP .nf ldapdelete "cn=Delete Me,dc=example,dc=com" .fi .LP will attempt to delete the entry named "cn=Delete Me,dc=example,dc=com". Of course it would probably be necessary to supply authentication credentials. .SH DIAGNOSTICS Exit status is 0 if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldap.conf (5), .BR ldapadd (1), .BR ldapmodify (1), .BR ldapmodrdn (1), .BR ldapsearch (1), .BR ldap (3), .BR ldap_delete_ext (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac1000081a400000000000000000000000151244f4d00001372000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldapwhoami.1.TH LDAPWHOAMI 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapwhoami \- LDAP who am i? tool .SH SYNOPSIS .B ldapwhoami [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] .SH DESCRIPTION .I ldapwhoami implements the LDAP "Who Am I?" extended operation. .LP .B ldapwhoami opens a connection to an LDAP server, binds, and performs a whoami operation. .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapwhoami must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually perform the whoami operation. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Run in verbose mode, with many diagnostics written to standard output. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and whoami extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi WhoAmI extensions: .nf (none) .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful. .SH EXAMPLE .nf ldapwhoami \-x \-D "cn=Manager,dc=example,dc=com" \-W .fi .SH "SEE ALSO" .BR ldap.conf (5), .BR ldap (3), .BR ldap_extended_operation (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ac0000081a400000000000000000000000151244f4d00000ffb000000b600010002ffffffffffffffff0000002800000000root/usr/local/share/man/man1/ldapurl.1.TH LDAPURL 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 2008-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapurl \- LDAP URL formatting tool .SH SYNOPSIS .B ldapurl [\c .BR \-a \ attrs\fR] [\c .BI \-b \ searchbase\fR] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-f \ filter\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-s \ { base \||\| one \||\| sub \||\| children }] [\c .BI \-S \ scheme\fR] .SH DESCRIPTION .I ldapurl is a command that allows to either compose or decompose LDAP URIs. .LP When invoked with the \fB\-H\fP option, .B ldapurl extracts the components of the \fIldapuri\fP option argument, unescaping hex-escaped chars as required. It basically acts as a frontend to the .BR ldap_url_parse (3) call. Otherwise, it builds an LDAP URI based on the components passed with the appropriate options, performing the inverse operation. Option \fB\-H\fP is incompatible with options .BR \-a , .BR \-b , .BR \-E , .BR \-f , .BR \-H , .BR \-h , .BR \-p , .BR \-S , and .BR \-s . .SH OPTIONS .TP .TP .BI \-a \ attrs Set a comma-separated list of attribute selectors. .TP .BI \-b \ searchbase Set the \fIsearchbase\fP. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Set URL extensions; incompatible with .BR \-H . .TP .BI \-f \ filter Set the URL filter. No particular check on conformity with RFC 4515 LDAP filters is performed, but the value is hex-escaped as required. .TP .BI \-H \ ldapuri Specify URI to be exploded. .TP .BI \-h \ ldaphost Set the host. .TP .BI \-p \ ldapport Set the TCP port. .TP .BI \-S \ scheme Set the URL scheme. Defaults for other fields, like \fIldapport\fP, may depend on the value of \fIscheme\fP. .TP .BR \-s \ { base \||\| one \||\| sub \||\| children } Specify the scope of the search to be one of .BR base , .BR one , .BR sub , or .B children to specify a base object, one-level, subtree, or children search. The default is .BR sub . Note: .B children scope requires LDAPv3 subordinate feature extension. .SH OUTPUT FORMAT If the \fB\-H\fP option is used, the \fIldapuri\fP supplied is exploded in its components, which are printed to standard output in an LDIF-like form. .LP Otherwise, the URI built using the values passed with the other options is printed to standard output. .SH EXAMPLE The following command: .LP .nf ldapuri \-h ldap.example.com \-b dc=example,dc=com \-s sub \-f "(cn=Some One)" .fi .LP returns .LP .nf ldap://ldap.example.com:389/dc=example,dc=com??sub?(cn=Some%20One) .fi .LP The command: .LP .nf ldapuri \-H ldap://ldap.example.com:389/dc=example,dc=com??sub?(cn=Some%20One) .fi .LP returns .LP .nf scheme: ldap host: ldap.example.com port: 389 dn: dc=example,dc=com scope: sub filter: (cn=Some One) .fi .LP .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldap (3), .BR ldap_url_parse (3), .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031abd000081a400000000000000000000000151244f4d00001aee000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldapmodrdn.1.TH LDAPMODRDN 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapmodrdn \- LDAP rename entry tool .SH SYNOPSIS .B ldapmodrdn [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-r ] [\c .BI \-s \ newsup\fR] [\c .BR \-c ] [\c .BI \-f \ file\fR] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] [\c .I dn rdn\fR] .SH DESCRIPTION .B ldapmodrdn is a shell-accessible interface to the .BR ldap_rename (3) library call. .LP .B ldapmodrdn opens a connection to an LDAP server, binds, and modifies the RDN of entries. The entry information is read from standard input, from \fIfile\fP through the use of the .RI \- f option, or from the command-line pair \fIdn\fP and \fIrdn\fP. .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapmodrdn must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually change entries. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Use verbose mode, with many diagnostics written to standard output. .TP .B \-r Remove old RDN values from the entry. Default is to keep old values. .TP .BI \-s \ newsup Specify a new superior entry. (I.e., move the target entry and make it a child of the new superior.) This option is not supported in LDAPv2. .TP .B \-c Continuous operation mode. Errors are reported, but ldapmodrdn will continue with modifications. The default is to exit after reporting an error. .TP .BI \-f \ file Read the entry modification information from \fIfile\fP instead of from standard input or the command-line. .TP .BR \-M [ M ] Enable manage DSA IT control. .B \-MM makes control critical. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-P \ { 2 \||\| 3 } Specify the LDAP protocol version to use. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and modrdn extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Modrdn extensions: .nf (none) .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful. .SH INPUT FORMAT If the command-line arguments \fIdn\fP and \fIrdn\fP are given, \fIrdn\fP will replace the RDN of the entry specified by the DN, \fIdn\fP. .LP Otherwise, the contents of \fIfile\fP (or standard input if no \fB\-f\fP flag is given) should consist of one or more entries. .LP .nf Distinguished Name (DN) Relative Distinguished Name (RDN) .fi .LP One or more blank lines may be used to separate each DN/RDN pair. .SH EXAMPLE Assuming that the file .B /tmp/entrymods exists and has the contents: .LP .nf cn=Modify Me,dc=example,dc=com cn=The New Me .fi .LP the command: .LP .nf ldapmodrdn \-r \-f /tmp/entrymods .fi .LP will change the RDN of the "Modify Me" entry from "Modify Me" to "The New Me" and the old cn, "Modify Me" will be removed. .LP .SH DIAGNOSTICS Exit status is 0 if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldapadd (1), .BR ldapdelete (1), .BR ldapmodify (1), .BR ldapsearch (1), .BR ldap.conf (5), .BR ldap (3), .BR ldap_rename (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031abe000081a400000000000000000000000151244f4d00001732000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldappasswd.1.TH LDAPPASSWD 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldappasswd \- change the password of an LDAP entry .SH SYNOPSIS .B ldappasswd [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-A ] [\c .BI \-a \ oldPasswd\fR] [\c .BI \-t \ oldpasswdfile\fR] [\c .BR \-S ] [\c .BI \-s \ newPasswd\fR] [\c .BI \-T \ newpasswdfile\fR] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] [\c .IR user ] .SH DESCRIPTION .B ldappasswd is a tool to set the password of an LDAP user. .B ldappasswd uses the LDAPv3 Password Modify (RFC 3062) extended operation. .LP .B ldappasswd sets the password of associated with the user [or an optionally specified .IR user ]. If the new password is not specified on the command line and the user doesn't enable prompting, the server will be asked to generate a password for the user. .LP .B ldappasswd is neither designed nor intended to be a replacement for .BR passwd (1) and should not be installed as such. .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldappasswd must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Do not set password. (Can be useful when used in conjunction with \fB\-v\fP or \fB\-d\fP) .TP .B \-v Increase the verbosity of output. Can be specified multiple times. .TP .BI \-A Prompt for old password. This is used instead of specifying the password on the command line. .TP .BI \-a \ oldPasswd Set the old password to \fIoldPasswd\fP. .TP .BI \-t \ oldPasswdFile Set the old password to the contents of \fIoldPasswdFile\fP. .TP .BI \-S Prompt for new password. This is used instead of specifying the password on the command line. .TP .BI \-s \ newPasswd Set the new password to \fInewPasswd\fP. .TP .BI \-T \ newPasswdFile Set the new password to the contents of \fInewPasswdFile\fP. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .BI \-W Prompt for bind password. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password to bind with. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); only the protocol/host/port fields are allowed; a list of URI, separated by whitespace or commas is expected. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and passwd modify extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Passwd Modify extensions: .nf (none) .fi .TP .BI \-o \ opt \fR[= optparam \fR]] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: \fP. .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful .SH SEE ALSO .BR ldap_sasl_bind (3), .BR ldap_extended_operation (3), .BR ldap_start_tls_s (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031abf000081a400000000000000000000000151244f4d000037a6000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man1/ldapsearch.1.TH LDAPSEARCH 1 "2012/10/10" "OpenLDAP 2.4.33" .\" $OpenLDAP$ .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldapsearch \- LDAP search tool .SH SYNOPSIS .B ldapsearch [\c .BR \-V [ V ]] [\c .BI \-d \ debuglevel\fR] [\c .BR \-n ] [\c .BR \-v ] [\c .BR \-c ] [\c .BR \-u ] [\c .BR \-t [ t ]] [\c .BI \-T \ path\fR] [\c .BI \-F \ prefix\fR] [\c .BR \-A ] [\c .BR \-L [ L [ L ]]] [\c .BI \-S \ attribute\fR] [\c .BI \-b \ searchbase\fR] [\c .BR \-s \ { base \||\| one \||\| sub \||\| children }] [\c .BR \-a \ { never \||\| always \||\| search \||\| find }] [\c .BI \-l \ timelimit\fR] [\c .BI \-z \ sizelimit\fR] [\c .BI \-f \ file\fR] [\c .BR \-M [ M ]] [\c .BR \-x ] [\c .BI \-D \ binddn\fR] [\c .BR \-W ] [\c .BI \-w \ passwd\fR] [\c .BI \-y \ passwdfile\fR] [\c .BI \-H \ ldapuri\fR] [\c .BI \-h \ ldaphost\fR] [\c .BI \-p \ ldapport\fR] [\c .BR \-P \ { 2 \||\| 3 }] [\c .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ]] [\c .BI \-o \ opt \fR[= optparam \fR]] [\c .BI \-O \ security-properties\fR] [\c .BR \-I ] [\c .BR \-Q ] [\c .BR \-N ] [\c .BI \-U \ authcid\fR] [\c .BI \-R \ realm\fR] [\c .BI \-X \ authzid\fR] [\c .BI \-Y \ mech\fR] [\c .BR \-Z [ Z ]] .I filter [\c .IR attrs... ] .SH DESCRIPTION .I ldapsearch is a shell-accessible interface to the .BR ldap_search_ext (3) library call. .LP .B ldapsearch opens a connection to an LDAP server, binds, and performs a search using specified parameters. The \fIfilter\fP should conform to the string representation for search filters as defined in RFC 4515. If not provided, the default filter, \fB(objectClass=*)\fP, is used. .LP If .B ldapsearch finds one or more entries, the attributes specified by \fIattrs\fP are returned. If \fB*\fP is listed, all user attributes are returned. If \fB+\fP is listed, all operational attributes are returned. If no \fIattrs\fP are listed, all user attributes are returned. If only 1.1 is listed, no attributes will be returned. .LP The search results are displayed using an extended version of LDIF. Option \fI\-L\fP controls the format of the output. .SH OPTIONS .TP .BR \-V [ V ] Print version info. If \fB\-VV\fP is given, only the version information is printed. .TP .BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapsearch must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP .B \-n Show what would be done, but don't actually perform the search. Useful for debugging in conjunction with \fB\-v\fP. .TP .B \-v Run in verbose mode, with many diagnostics written to standard output. .TP .B \-c Continuous operation mode. Errors are reported, but ldapsearch will continue with searches. The default is to exit after reporting an error. Only useful in conjunction with \fB\-f\fP. .TP .B \-u Include the User Friendly Name form of the Distinguished Name (DN) in the output. .TP .BR \-t [ t ] A single \fB\-t\fP writes retrieved non-printable values to a set of temporary files. This is useful for dealing with values containing non-character data such as jpegPhoto or audio. A second \fB\-t\fP writes all retrieved values to files. .TP .BI \-T \ path Write temporary files to directory specified by \fIpath\fP (default: \fB/var/tmp/\fP) .TP .BI \-F \ prefix URL prefix for temporary files. Default is \fBfile://\fIpath\fP where \fIpath\fP is \fB/var/tmp/\fP or specified with \fB\-T\fP. .TP .B \-A Retrieve attributes only (no values). This is useful when you just want to see if an attribute is present in an entry and are not interested in the specific values. .TP .B \-L Search results are display in LDAP Data Interchange Format detailed in .BR ldif (5). A single \fB\-L\fP restricts the output to LDIFv1. A second \fB\-L\fP disables comments. A third \fB\-L\fP disables printing of the LDIF version. The default is to use an extended version of LDIF. .TP .BI \-S \ attribute Sort the entries returned based on \fIattribute\fP. The default is not to sort entries returned. If \fIattribute\fP is a zero-length string (""), the entries are sorted by the components of their Distinguished Name. See .BR ldap_sort (3) for more details. Note that .B ldapsearch normally prints out entries as it receives them. The use of the \fB\-S\fP option defeats this behavior, causing all entries to be retrieved, then sorted, then printed. .TP .BI \-b \ searchbase Use \fIsearchbase\fP as the starting point for the search instead of the default. .TP .BR \-s \ { base \||\| one \||\| sub \||\| children } Specify the scope of the search to be one of .BR base , .BR one , .BR sub , or .B children to specify a base object, one-level, subtree, or children search. The default is .BR sub . Note: .I children scope requires LDAPv3 subordinate feature extension. .TP .BR \-a \ { never \||\| always \||\| search \||\| find } Specify how aliases dereferencing is done. Should be one of .BR never , .BR always , .BR search , or .B find to specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or dereferenced only when locating the base object for the search. The default is to never dereference aliases. .TP .BI \-l \ timelimit wait at most \fItimelimit\fP seconds for a search to complete. A timelimit of .I 0 (zero) or .I none means no limit. A timelimit of .I max means the maximum integer allowable by the protocol. A server may impose a maximal timelimit which only the root user may override. .TP .BI \-z \ sizelimit retrieve at most \fIsizelimit\fP entries for a search. A sizelimit of .I 0 (zero) or .I none means no limit. A sizelimit of .I max means the maximum integer allowable by the protocol. A server may impose a maximal sizelimit which only the root user may override. .TP .BI \-f \ file Read a series of lines from \fIfile\fP, performing one LDAP search for each line. In this case, the \fIfilter\fP given on the command line is treated as a pattern where the first and only occurrence of \fB%s\fP is replaced with a line from \fIfile\fP. Any other occurrence of the the \fB%\fP character in the pattern will be regarded as an error. Where it is desired that the search filter include a \fB%\fP character, the character should be encoded as \fB\\25\fP (see RFC 4515). If \fIfile\fP is a single \fB\-\fP character, then the lines are read from standard input. .B ldapsearch will exit when the first non-successful search result is returned, unless \fB\-c\fP is used. .TP .BR \-M [ M ] Enable manage DSA IT control. .B \-MM makes control critical. .TP .B \-x Use simple authentication instead of SASL. .TP .BI \-D \ binddn Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. For SASL binds, the server is expected to ignore this value. .TP .B \-W Prompt for simple authentication. This is used instead of specifying the password on the command line. .TP .BI \-w \ passwd Use \fIpasswd\fP as the password for simple authentication. .TP .BI \-y \ passwdfile Use complete contents of \fIpasswdfile\fP as the password for simple authentication. .TP .BI \-H \ ldapuri Specify URI(s) referring to the ldap server(s); a list of URI, separated by whitespace or commas is expected; only the protocol/host/port fields are allowed. As an exception, if no host/port is specified, but a DN is, the DN is used to look up the corresponding host(s) using the DNS SRV records, according to RFC 2782. The DN must be a non-empty sequence of AVAs whose attribute type is "dc" (domain component), and must be escaped according to RFC 2396. .TP .BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. Deprecated in favor of \fB\-H\fP. .TP .BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. Deprecated in favor of \fB\-H\fP. .TP .BR \-P \ { 2 \||\| 3 } Specify the LDAP protocol version to use. .TP .BR \-e \ [ ! ] \fIext\fP [ =\fIextparam\fP ] .TP .BR \-E \ [ ! ] \fIext\fP [ =\fIextparam\fP ] Specify general extensions with \fB\-e\fP and search extensions with \fB\-E\fP. \'\fB!\fP\' indicates criticality. General extensions: .nf [!]assert= (an RFC 4515 Filter) !authzid= ("dn:" or "u:") [!]bauthzid (RFC 3829 authzid control) [!]chaining[=[/]] [!]manageDSAit [!]noop ppolicy [!]postread[=] (a comma-separated attribute list) [!]preread[=] (a comma-separated attribute list) [!]relax sessiontracking abandon,cancel,ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) .fi Search extensions: .nf !dontUseCopy [!]domainScope (domain scope) [!]mv= (matched values filter) [!]pr=[/prompt|noprompt] (paged results/prompt) [!]sss=[\-][/[\-]...] (server side sorting) [!]subentries[=true|false] (subentries) [!]sync=ro[/] (LDAP Sync refreshOnly) rp[/][/] (LDAP Sync refreshAndPersist) [!]vlv=/(//|:) (virtual list view) [!]deref=derefAttr:attr[,attr[...]][;derefAttr:attr[,attr[...]]] [!][=] .fi .TP .BI \-o \ opt \fR[= optparam \fR] Specify general options. General options: .nf nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) .fi .TP .BI \-O \ security-properties Specify SASL security properties. .TP .B \-I Enable SASL Interactive mode. Always prompt. Default is to prompt only as needed. .TP .B \-Q Enable SASL Quiet mode. Never prompt. .TP .B \-N Do not use reverse DNS to canonicalize SASL host name. .TP .BI \-U \ authcid Specify the authentication ID for SASL bind. The form of the ID depends on the actual SASL mechanism used. .TP .BI \-R \ realm Specify the realm of authentication ID for SASL bind. The form of the realm depends on the actual SASL mechanism used. .TP .BI \-X \ authzid Specify the requested authorization ID for SASL bind. .I authzid must be one of the following formats: .BI dn: "" or .BI u: .TP .BI \-Y \ mech Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. .TP .BR \-Z [ Z ] Issue StartTLS (Transport Layer Security) extended operation. If you use \fB\-ZZ\fP, the command will require the operation to be successful. .SH OUTPUT FORMAT If one or more entries are found, each entry is written to standard output in LDAP Data Interchange Format or .BR ldif (5): .LP .nf version: 1 # bjensen, example, net dn: uid=bjensen,dc=example,dc=net objectClass: person objectClass: dcObject uid: bjensen cn: Barbara Jensen sn: Jensen ... .fi .LP If the \fB\-t\fP option is used, the URI of a temporary file is used in place of the actual value. If the \fB\-A\fP option is given, only the "attributename" part is written. .SH EXAMPLE The following command: .LP .nf ldapsearch \-LLL "(sn=smith)" cn sn telephoneNumber .fi .LP will perform a subtree search (using the default search base and other parameters defined in .BR ldap.conf (5)) for entries with a surname (sn) of smith. The common name (cn), surname (sn) and telephoneNumber values will be retrieved and printed to standard output. The output might look something like this if two entries are found: .LP .nf dn: uid=jts,dc=example,dc=com cn: John Smith cn: John T. Smith sn: Smith sn;lang\-en: Smith sn;lang\-de: Schmidt telephoneNumber: 1 555 123\-4567 dn: uid=sss,dc=example,dc=com cn: Steve Smith cn: Steve S. Smith sn: Smith sn;lang\-en: Smith sn;lang\-de: Schmidt telephoneNumber: 1 555 765\-4321 .fi .LP The command: .LP .nf ldapsearch \-LLL \-u \-t "(uid=xyz)" jpegPhoto audio .fi .LP will perform a subtree search using the default search base for entries with user id of "xyz". The user friendly form of the entry's DN will be output after the line that contains the DN itself, and the jpegPhoto and audio values will be retrieved and written to temporary files. The output might look like this if one entry with one value for each of the requested attributes is found: .LP .nf dn: uid=xyz,dc=example,dc=com ufn: xyz, example, com audio:< file:///tmp/ldapsearch\-audio\-a19924 jpegPhoto:< file:///tmp/ldapsearch\-jpegPhoto\-a19924 .fi .LP This command: .LP .nf ldapsearch \-LLL \-s one \-b "c=US" "(o=University*)" o description .fi .LP will perform a one-level search at the c=US level for all entries whose organization name (o) begins begins with \fBUniversity\fP. The organization name and description attribute values will be retrieved and printed to standard output, resulting in output similar to this: .LP .nf dn: o=University of Alaska Fairbanks,c=US o: University of Alaska Fairbanks description: Preparing Alaska for a brave new yesterday description: leaf node only dn: o=University of Colorado at Boulder,c=US o: University of Colorado at Boulder description: No personnel information description: Institution of education and research dn: o=University of Colorado at Denver,c=US o: University of Colorado at Denver o: UCD o: CU/Denver o: CU\-Denver description: Institute for Higher Learning and Research dn: o=University of Florida,c=US o: University of Florida o: UFl description: Warper of young minds ... .fi .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a non-zero exit status and a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldapadd (1), .BR ldapdelete (1), .BR ldapmodify (1), .BR ldapmodrdn (1), .BR ldap.conf (5), .BR ldif (5), .BR ldap (3), .BR ldap_search_ext (3), .BR ldap_sort (3) .SH AUTHOR The OpenLDAP Project .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b16000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man807070100031b19000081a400000000000000000000000151244f5400000d0b000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man8/slapauth.8.TH SLAPAUTH 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2004-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapauth \- Check a list of string-represented IDs for LDAP authc/authz .SH SYNOPSIS .B /usr/local/sbin/slapauth [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BI \-M \ mech\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BI \-R \ realm\fR] [\c .BI \-U \ authcID\fR] [\c .BR \-v ] [\c .BI \-X \ authzID\fR] .IR ID \ [ ... ] .LP .SH DESCRIPTION .LP .B Slapauth is used to check the behavior of the slapd in mapping identities for authentication and authorization purposes, as specified in .BR slapd.conf (5). It opens the .BR slapd.conf (5) configuration file or the .BR slapd\-config (5) backend, reads in the .BR authz\-policy / olcAuthzPolicy and .BR authz\-regexp / olcAuthzRegexp directives, and then parses the .I ID list given on the command-line. .LP .SH OPTIONS .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .BI \-M \ mech specify a mechanism. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .TP .BI \-R \ realm specify a realm. .TP .BI \-U \ authcID specify an ID to be used as .I authcID throughout the test session. If present, and if no .I authzID is given, the IDs in the ID list are treated as .IR authzID . .TP .BI \-X \ authzID specify an ID to be used as .I authzID throughout the test session. If present, and if no .I authcID is given, the IDs in the ID list are treated as .IR authcID . If both .I authcID and .I authzID are given via command line switch, the ID list cannot be present. .TP .B \-v enable verbose mode. .SH EXAMPLES The command .LP .nf .ft tt /usr/local/sbin/slapauth \-f //usr/local/etc/openldap/slapd.conf \-v \\ \-U bjorn \-X u:bjensen .ft .fi tests whether the user .I bjorn can assume the identity of the user .I bjensen provided the directives .LP .nf .ft tt authz\-policy from authz\-regexp "^uid=([^,]+).*,cn=auth$" "ldap:///dc=example,dc=net??sub?uid=$1" .ft .fi are defined in .BR slapd.conf (5). .SH "SEE ALSO" .BR ldap (3), .BR slapd (8), .BR slaptest (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b17000081a400000000000000000000000151244f5400001178000000b600010002ffffffffffffffff0000002800000000root/usr/local/share/man/man8/slapacl.8.TH SLAPACL 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2004-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapacl \- Check access to a list of attributes. .SH SYNOPSIS .B /usr/local/sbin/slapacl .BI \-b \ DN [\c .BI \-d \ debug-level\fR] [\c .BI \-D \ authcDN\ \fR| .BI \-U \ authcID\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BR \-u ] [\c .BR \-v ] [\c .BI \-X \ authzID\ \fR| .BI "\-o \ authzDN=" DN\fR] [\c .IR attr [\fB/\fI access ][\fB:\fI value ]]\fR\ [...] .LP .SH DESCRIPTION .LP .B slapacl is used to check the behavior of .BR slapd (8) by verifying access to directory data according to the access control list directives defined in its configuration. . It opens the .BR slapd.conf (5) configuration file or the .BR slapd\-config (5) backend, reads in the .BR access / olcAccess directives, and then parses the .B attr list given on the command-line; if none is given, access to the .B entry pseudo-attribute is tested. .LP .SH OPTIONS .TP .BI \-b \ DN specify the .I DN which access is requested to; the corresponding entry is fetched from the database, and thus it must exist. The .I DN is also used to determine what rules apply; thus, it must be in the naming context of a configured database. See also .BR \-u . .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-D \ authcDN specify a DN to be used as identity through the test session when selecting appropriate .B clauses in access lists. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .RS Possible options/values specific to .B slapacl are: .RE .nf authzDN domain peername sasl_ssf sockname sockurl ssf tls_ssf transport_ssf .fi .RS See the related fields in .BR slapd.access (5) for details. .RE .TP .BI \-u do not fetch the entry from the database. In this case, if the entry does not exist, a fake entry with the .I DN given with the .B \-b option is used, with no attributes. As a consequence, those rules that depend on the contents of the target object will not behave as with the real object. The .I DN given with the .B \-b option is still used to select what rules apply; thus, it must be in the naming context of a configured database. See also .BR \-b . .TP .BI \-U \ authcID specify an ID to be mapped to a .B DN as by means of .B authz\-regexp or .B authz\-rewrite rules (see .BR slapd.conf (5) for details); mutually exclusive with .BR \-D . .TP .B \-v enable verbose mode. .TP .BI \-X \ authzID specify an authorization ID to be mapped to a .B DN as by means of .B authz\-regexp or .B authz\-rewrite rules (see .BR slapd.conf (5) for details); mutually exclusive with \fB\-o\fP \fBauthzDN=\fIDN\fR. .SH EXAMPLES The command .LP .nf .ft tt /usr/local/sbin/slapacl \-f /usr/local/etc/openldap/slapd.conf \-v \\ \-U bjorn \-b "o=University of Michigan,c=US" \\ "o/read:University of Michigan" .ft .fi tests whether the user .I bjorn can access the attribute .I o of the entry .I o=University of Michigan,c=US at .I read level. .SH "SEE ALSO" .BR ldap (3), .BR slapd (8), .BR slaptest (8), .BR slapauth (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1b000081a400000000000000000000000151244f5400002c91000000b600010002ffffffffffffffff0000002600000000root/usr/local/share/man/man8/slapd.8.TH SLAPD 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapd \- Stand-alone LDAP Daemon .SH SYNOPSIS .B /usr/local/libexec/slapd [\c .BR \-4 | \-6 ] [\c .BR \-T \ { acl \||\| a [ dd ]\||\| auth \||\| c [ at ]\||\| .BR d [ n ]\||\| i [ ndex ]\||\| p [ asswd ]\||\| s [ chema ]\||\| t [ est ]}] [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd-config-file\fR] [\c .BI \-F \ slapd-config-directory\fR] [\c .BI \-h \ URLs\fR] [\c .BI \-n \ service-name\fR] [\c .BI \-s \ syslog-level\fR] [\c .BI \-l \ syslog-local-user\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BI \-r \ directory\fR] [\c .BI \-u \ user\fR] [\c .BI \-g \ group\fR] [\c .BI \-c \ cookie\fR] .SH DESCRIPTION .LP .B Slapd is the stand-alone LDAP daemon. It listens for LDAP connections on any number of ports (default \fB389\fP), responding to the LDAP operations it receives over these connections. .B slapd is typically invoked at boot time, usually out of .BR /etc/rc.local . Upon startup, .B slapd normally forks and disassociates itself from the invoking tty. If configured in the config file (or config directory), the .B slapd process will print its process ID (see .BR getpid (2)) to a .B .pid file, as well as the command line options during invocation to an .B .args file (see .BR slapd.conf (5)). If the .B \-d flag is given, even with a zero argument, .B slapd will not fork and disassociate from the invoking tty. .LP See the "OpenLDAP Administrator's Guide" for more details on .BR slapd . .SH OPTIONS .TP .B \-4 Listen on IPv4 addresses only. .TP .B \-6 Listen on IPv6 addresses only. .TP .BI \-T \ tool Run in Tool mode. The \fItool\fP argument selects whether to run as .IR slapadd , .IR slapcat , .IR slapdn , .IR slapindex , .IR slappasswd , .IR slapschema , or .I slaptest (\fIslapacl\fP and \fIslapauth\fP need the entire \fBacl\fP and \fBauth\fP option value to be spelled out, as \fBa\fP is reserved to .IR slapadd ). This option should be the first option specified when it is used; any remaining options will be interpreted by the corresponding slap tool program, according to the respective man pages. Note that these tool programs will usually be symbolic links to .BR slapd . This option is provided for situations where symbolic links are not provided or not usable. .TP .BI \-d \ debug-level Turn on debugging as defined by .IR debug-level . If this option is specified, even with a zero argument, .B slapd will not fork or disassociate from the invoking terminal. Some general operation and status messages are printed for any value of \fIdebug-level\fP. \fIdebug-level\fP is taken as a bit string, with each bit corresponding to a different kind of debugging information. See for details. Comma-separated arrays of friendly names can be specified to select debugging output of the corresponding debugging information. All the names recognized by the \fIloglevel\fP directive described in \fBslapd.conf\fP(5) are supported. If \fIdebug-level\fP is \fB?\fP, a list of installed debug-levels is printed, and slapd exits. Remember that if you turn on packet logging, packets containing bind passwords will be output, so if you redirect the log to a logfile, that file should be read-protected. .TP .BI \-s \ syslog-level This option tells .B slapd at what debug-level debugging statements should be logged to the .BR syslog (8) facility. The value \fIsyslog-level\fP can be set to any value or combination allowed by the \fB\-d\fP switch. Slapd logs all messages selected by \fIsyslog-leveli\fP at the .BR syslog (3) severity debug-level \fBDEBUG\fP, on the unit specified with \fB\-l\fP. .TP .BI \-n \ service-name Specifies the service name for logging and other purposes. Defaults to basename of argv[0], i.e.: "slapd". .TP .BI \-l \ syslog-local-user Selects the local user of the .BR syslog (8) facility. Value can be .BR LOCAL0 , through .BR LOCAL7 , as well as .B USER and .BR DAEMON . The default is .BR LOCAL4 . However, this option is only permitted on systems that support local users with the .BR syslog (8) facility. Logging to syslog(8) occurs at the "DEBUG" severity debug-level. .TP .BI \-f \ slapd-config-file Specifies the slapd configuration file. The default is .BR /usr/local/etc/openldap/slapd.conf . .TP .BI \-F \ slapd-config-directory Specifies the slapd configuration directory. The default is .BR /usr/local/etc/openldap/slapd.d . If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, slapd will attempt to read the default config directory before trying to use the default config file. If a valid config directory exists then the default config file is ignored. All of the slap tools that use the config options observe this same behavior. .TP .BI \-h \ URLlist .B slapd will by default serve .B ldap:/// (LDAP over TCP on all interfaces on default LDAP port). That is, it will bind using INADDR_ANY and port \fB389\fP. The .B \-h option may be used to specify LDAP (and other scheme) URLs to serve. For example, if slapd is given .BR "\-h \(dqldap://127.0.0.1:9009/ ldaps:/// ldapi:///\(dq" , it will listen on 127.0.0.1:9009 for LDAP, 0.0.0.0:636 for LDAP over TLS, and LDAP over IPC (Unix domain sockets). Host 0.0.0.0 represents INADDR_ANY (any interface). A space separated list of URLs is expected. The URLs should be of the LDAP, LDAPS, or LDAPI schemes, and generally without a DN or other optional parameters (excepting as discussed below). Support for the latter two schemes depends on selected configuration options. Hosts may be specified by name or IPv4 and IPv6 address formats. Ports, if specified, must be numeric. The default ldap:// port is \fB389\fP and the default ldaps:// port is \fB636\fP. For LDAP over IPC, .B name is the name of the socket, and no .B port is required, nor allowed; note that directory separators must be URL-encoded, like any other characters that are special to URLs; so the socket /usr/local/var/ldapi must be specified as ldapi://%2Fusr%2Flocal%2Fvar%2Fldapi The default location for the IPC socket is /usr/local/var/run/ldapi The listener permissions are indicated by "x\-mod=\-rwxrwxrwx", "x\-mod=0777" or "x\-mod=777", where any of the "rwx" can be "\-" to suppress the related permission, while any of the "7" can be any legal octal digit, according to chmod(1). The listeners can take advantage of the "x\-mod" extension to apply rough limitations to operations, e.g. allow read operations ("r", which applies to search and compare), write operations ("w", which applies to add, delete, modify and modrdn), and execute operations ("x", which means bind is required). "User" permissions apply to authenticated users, while "other" apply to anonymous users; "group" permissions are ignored. For example, "ldap:///????x\-mod=\-rw\-\-\-\-\-\-\-" means that read and write is only allowed for authenticated connections, and bind is required for all operations. This feature is experimental, and requires to be manually enabled at configure time. .TP .BI \-r \ directory Specifies a directory to become the root directory. slapd will change the current working directory to this directory and then .BR chroot (2) to this directory. This is done after opening listeners but before reading any configuration file or initializing any backend. When used as a security mechanism, it should be used in conjunction with .B \-u and .B \-g options. .TP .BI \-u \ user .B slapd will run slapd with the specified user name or id, and that user's supplementary group access list as set with initgroups(3). The group ID is also changed to this user's gid, unless the \fB\-g\fP option is used to override. Note when used with .BR \-r , slapd will use the user database in the change root environment. Note that on some systems, running as a non-privileged user will prevent passwd back-ends from accessing the encrypted passwords. Note also that any shell back-ends will run as the specified non-privileged user. .TP .BI \-g \ group .B slapd will run with the specified group name or id. Note when used with .BR \-r , slapd will use the group database in the change root environment. .TP .BI \-c \ cookie This option provides a cookie for the syncrepl replication consumer. The cookie is a comma separated list of \fIname=value\fP pairs. Currently supported syncrepl cookie fields are .BR rid , .BR sid , and .BR csn . .B rid identifies a replication thread within the consumer server and is used to find the syncrepl specification in .BR slapd.conf (5) or .BR slapd\-config (5) having the matching replication identifier in its definition. The .B rid must be provided in order for any other specified values to be used. .B sid is the server id in a multi-master/mirror-mode configuration. .B csn is the commit sequence number received by a previous synchronization and represents the state of the consumer replica content which the syncrepl engine will synchronize to the current provider content. In case of \fImirror-mode\fP or \fImulti-master\fP replication agreement, multiple .B csn values, semicolon separated, can appear. Use only the .B rid part to force a full reload. .TP .BI \-o \ option\fR[ = value\fR] This option provides a generic means to specify options without the need to reserve a separate letter for them. It supports the following options: .RS .TP .BR slp= { on \||\| off \||\| \fIslp-attrs\fP } When SLP support is compiled into slapd, disable it (\fBoff\fP), enable it by registering at SLP DAs without specific SLP attributes (\fBon\fP), or with specific SLP attributes .I slp-attrs that must be an SLP attribute list definition according to the SLP standard. For example, \fB"slp=(tree=production),(server-type=OpenLDAP),(server\-version=2.4.15)"\fP registers at SLP DAs with the three SLP attributes tree, server-type and server-version that have the values given above. This allows to specifically query the SLP DAs for LDAP servers holding the .I production tree in case multiple trees are available. .RE .SH EXAMPLES To start .I slapd and have it fork and detach from the terminal and start serving the LDAP databases defined in the default config file, just type: .LP .nf .ft tt /usr/local/libexec/slapd .ft .fi .LP To start .B slapd with an alternate configuration file, and turn on voluminous debugging which will be printed on standard error, type: .LP .nf .ft tt /usr/local/libexec/slapd \-f /var/tmp/slapd.conf \-d 255 .ft .fi .LP To test whether the configuration file is correct or not, type: .LP .nf .ft tt /usr/local/libexec/slapd \-Tt .ft .fi .LP .SH "SEE ALSO" .BR ldap (3), .BR slapd.conf (5), .BR slapd\-config (5), .BR slapd.access (5), .BR slapacl (8), .BR slapadd (8), .BR slapauth (8), .BR slapcat (8), .BR slapdn (8), .BR slapindex (8), .BR slappasswd (8), .BR slapschema (8), .BR slaptest (8). .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH BUGS See http://www.openldap.org/its/ .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1e000081a400000000000000000000000151244f54000011a5000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man8/slappasswd.8.TH SLAPPASSWD 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slappasswd \- OpenLDAP password utility .SH SYNOPSIS .B /usr/local/sbin/slappasswd [\c .BR \-v ] [\c .BR \-u ] [\c .BR \-g \||\| \-s \ \fIsecret\fR \||\| \fB\-T \ \fIfile\fR] [\c .BI \-h \ hash\fR] [\c .BI \-c \ salt-format\fR] [\c .BR \-n ] [\c .BI \-o \ option\fR[ = value\fR]] .LP .SH DESCRIPTION .LP .B Slappasswd is used to generate an userPassword value suitable for use with .BR ldapmodify (1), .BR slapd.conf (5) .I rootpw configuration directive or the .BR slapd\-config (5) .I olcRootPW configuration directive. . .SH OPTIONS .TP .B \-v enable verbose mode. .TP .B \-u Generate RFC 2307 userPassword values (the default). Future versions of this program may generate alternative syntaxes by default. This option is provided for forward compatibility. .TP .BI \-s \ secret The secret to hash. If this, .B \-g and .B \-T are absent, the user will be prompted for the secret to hash. .BR \-s , .B \-g and .B \-T are mutually exclusive flags. .TP .BI \-g Generate the secret. If this, .B \-s and .B \-T are absent, the user will be prompted for the secret to hash. .BR \-s , .B \-g and .B \-T are mutually exclusive flags. If this is present, .I {CLEARTEXT} is used as scheme. .B \-g and .B \-h are mutually exclusive flags. .TP .BI \-T \ "file" Hash the contents of the file. If this, .B \-g and .B \-s are absent, the user will be prompted for the secret to hash. .BR \-s , .B \-g and .B \-T and mutually exclusive flags. .TP .BI \-h \ "scheme" If \fB\-h\fP is specified, one of the following RFC 2307 schemes may be specified: .BR {CRYPT} , .BR {MD5} , .BR {SMD5} , .BR {SSHA} ", and" .BR {SHA} . The default is .BR {SSHA} . Note that scheme names may need to be protected, due to .B { and .BR } , from expansion by the user's command interpreter. .B {SHA} and .B {SSHA} use the SHA-1 algorithm (FIPS 160-1), the latter with a seed. .B {MD5} and .B {SMD5} use the MD5 algorithm (RFC 1321), the latter with a seed. .B {CRYPT} uses the .BR crypt (3). .B {CLEARTEXT} indicates that the new password should be added to userPassword as clear text. Unless .I {CLEARTEXT} is used, this flag is incompatible with option .BR \-g . .TP .BI \-c \ crypt-salt-format Specify the format of the salt passed to .BR crypt (3) when generating {CRYPT} passwords. This string needs to be in .BR sprintf (3) format and may include one (and only one) .B %s conversion. This conversion will be substituted with a string of random characters from [A\-Za\-z0\-9./]. For example, .RB ' %.2s ' provides a two character salt and .RB ' $1$%.8s ' tells some versions of .BR crypt (3) to use an MD5 algorithm and provides 8 random characters of salt. The default is .RB ' %s ' , which provides 31 characters of salt. .TP .BI \-n Omit the trailing newline; useful to pipe the credentials into a command. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf module\-path= (see `\fBmodulepath\fP' in slapd.conf(5)) module\-load= (see `\fBmoduleload\fP' in slapd.conf(5)) .in You can load a dynamically loadable password hash module by using this option. .SH LIMITATIONS The practice of storing hashed passwords in userPassword violates Standard Track (RFC 4519) schema specifications and may hinder interoperability. A new attribute type, authPassword, to hold hashed passwords has been defined (RFC 3112), but is not yet implemented in .BR slapd (8). .LP It should also be noted that the behavior of .BR crypt (3) is platform specific. .SH "SECURITY CONSIDERATIONS" Use of hashed passwords does not protect passwords during protocol transfer. TLS or other eavesdropping protections should be in-place before using LDAP simple bind. .LP The hashed password values should be protected as if they were clear text passwords. .SH "SEE ALSO" .BR ldappasswd (1), .BR ldapmodify (1), .BR slapd (8), .BR slapd.conf (5), .BR slapd\-config (5), .B RFC 2307\fP, .B RFC 4519\fP, .B RFC 3112 .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1a000081a400000000000000000000000151244f54000013a7000000b600010002ffffffffffffffff0000002800000000root/usr/local/share/man/man8/slapcat.8.TH SLAPCAT 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapcat \- SLAPD database to LDIF utility .SH SYNOPSIS .B /usr/local/sbin/slapcat [\c .BI \-a filter\fR] [\c .BI \-b suffix\fR] [\c .BR \-c ] [\c .BI \-d debug-level\fR] [\c .BI \-f slapd.conf\fR] [\c .BI \-F confdir\fR] [\c .BR \-g ] [\c .BI \-H URI\fR] [\c .BI \-l ldif-file\fR] [\c .BI \-n dbnum\fR] [\c .BI \-o option\fR[ = value\fR]] [\c .BI \-s subtree-dn\fR] [\c .BR \-v ] .LP .SH DESCRIPTION .LP .B Slapcat is used to generate an LDAP Directory Interchange Format (LDIF) output based upon the contents of a .BR slapd (8) database. It opens the given database determined by the database number or suffix and writes the corresponding LDIF to standard output or the specified file. Databases configured as .B subordinate of this one are also output, unless \fB\-g\fP is specified. .LP The entry records are presented in database order, not superior first order. The entry records will include all (user and operational) attributes stored in the database. The entry records will not include dynamically generated attributes (such as subschemaSubentry). .LP The output of slapcat is intended to be used as input to .BR slapadd (8). The output of slapcat cannot generally be used as input to .BR ldapadd (1) or other LDAP clients without first editing the output. This editing would normally include reordering the records into superior first order and removing no-user-modification operational attributes. .SH OPTIONS .TP .BI \-a \ filter Only dump entries matching the asserted filter. For example slapcat \-a \\ "(!(entryDN:dnSubtreeMatch:=ou=People,dc=example,dc=com))" will dump all but the "ou=People,dc=example,dc=com" subtree of the "dc=example,dc=com" database. Deprecated; use \fB-H\fP \fIldap:///???(filter)\fP instead. .TP .BI \-b \ suffix Use the specified \fIsuffix\fR to determine which database to generate output for. The \fB\-b\fP cannot be used in conjunction with the .B \-n option. .TP .B \-c Enable continue (ignore errors) mode. Multiple occorrences of .B \-c make .BR slapcat (8) try harder. .TP .BI \-d \ debug-level Enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf Specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .B \-g disable subordinate gluing. Only the specified database will be processed, and not its glued subordinates (if any). .TP .B \-H \ URI use dn, scope and filter from URI to only handle matching entries. .TP .BI \-l \ ldif-file Write LDIF to specified file instead of standard output. .TP .BI \-n \ dbnum Generate output for the \fIdbnum\fR-th database listed in the configuration file. The config database .BR slapd\-config (5), is always the first database, so use .B \-n 0 to select it. The .B \-n cannot be used in conjunction with the .B \-b option. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) ldif-wrap={no|} .in \fIn\fP is the number of columns allowed for the LDIF output (\fIn\fP equal to \fI0\fP uses the default, corresponding to 76). Use \fIno\fP for no wrap. .TP .BI \-s \ subtree-dn Only dump entries in the subtree specified by this DN. Implies \fB\-b\fP \fIsubtree-dn\fP if no .B \-b or .B \-n option is given. Deprecated; use \fB-H\fP \fIldap:///subtree-dn\fP instead. .TP .B \-v Enable verbose mode. .SH LIMITATIONS For some backend types, your .BR slapd (8) should not be running (at least, not in read-write mode) when you do this to ensure consistency of the database. It is always safe to run .B slapcat with the .BR slapd\-bdb (5), .BR slapd\-hdb (5), and .BR slapd\-null (5) backends. .SH EXAMPLES To make a text backup of your SLAPD database and put it in a file called .BR ldif , give the command: .LP .nf .ft tt /usr/local/sbin/slapcat \-l ldif .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR ldif (5), .BR slapadd (8), .BR ldapadd (1), .BR slapd (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b18000081a400000000000000000000000151244f540000158a000000b600010002ffffffffffffffff0000002800000000root/usr/local/share/man/man8/slapadd.8.TH SLAPADD 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapadd \- Add entries to a SLAPD database .SH SYNOPSIS .B /usr/local/sbin/slapadd [\c .BI \-b \ suffix\fR] [\c .BR \-c ] [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BR \-g ] [\c .BI \-j \ lineno\fR] [\c .BI \-l \ ldif-file\fR] [\c .BI \-n \ dbnum\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BR \-q ] [\c .BR \-s ] [\c .BI \-S \ SID\fR] [\c .BR \-u ] [\c .BR \-v ] [\c .BR \-w ] .SH DESCRIPTION .LP .B Slapadd is used to add entries specified in LDAP Directory Interchange Format (LDIF) to a .BR slapd (8) database. It opens the given database determined by the database number or suffix and adds entries corresponding to the provided LDIF to the database. Databases configured as .B subordinate of this one are also updated, unless \fB\-g\fP is specified. The LDIF input is read from standard input or the specified file. All files eventually created by .BR slapadd will belong to the identity .BR slapadd is run as, so make sure you either run .BR slapadd with the same identity .BR slapd (8) will be run as (see option .B \-u in .BR slapd (8)), or change file ownership before running .BR slapd (8). Note: slapadd will also perform the relevant indexing whilst adding the database if any are configured. For specfic details, please see .BR slapindex (8). .SH OPTIONS .TP .BI \-b \ suffix Use the specified \fIsuffix\fR to determine which database to add entries to. The \fB\-b\fP cannot be used in conjunction with the .B \-n option. .TP .B \-c enable continue (ignore errors) mode. .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. If dry-run mode is also specified, no conversion will occur. .TP .B \-g disable subordinate gluing. Only the specified database will be processed, and not its glued subordinates (if any). .TP .BI \-j \ lineno Jump to the specified line number in the LDIF file before processing any entries. This allows a load that was aborted due to errors in the input LDIF to be resumed after the errors are corrected. .TP .BI \-l \ ldif-file Read LDIF from the specified file instead of standard input. .TP .BI \-n \ dbnum Add entries to the \fIdbnum\fR-th database listed in the configuration file. The .B \-n cannot be used in conjunction with the .B \-b option. To populate the config database .BR slapd\-config (5), use .B \-n 0 as it is always the first database. It must physically exist on the filesystem prior to this, however. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) schema-check={yes|no} value-check={yes|no} .in The \fIschema\-check\fR option toggles schema checking (default on); the \fIvalue\-check\fR option toggles value checking (default off). The latter is incompatible with \fB-q\fR. .TP .B \-q enable quick (fewer integrity checks) mode. Does fewer consistency checks on the input data, and no consistency checks when writing the database. Improves the load time but if any errors or interruptions occur the resulting database will be unusable. .TP .B \-s disable schema checking. This option is intended to be used when loading databases containing special objects, such as fractional objects on a partial replica. Loading normal objects which do not conform to schema may result in unexpected and ill behavior. .TP .BI \-S \ SID Server ID to use in generated entryCSN. Also used for contextCSN if \fB\-w\fP is set as well. Defaults to \fB0\fP. .TP .B \-u enable dry-run (don't write to backend) mode. .TP .B \-v enable verbose mode. .TP .BI \-w write syncrepl context information. After all entries are added, the contextCSN will be updated with the greatest CSN in the database. .SH LIMITATIONS Your .BR slapd (8) should not be running when you do this to ensure consistency of the database. .LP .B slapadd may not provide naming or schema checks. It is advisable to use .BR ldapadd (1) when adding new entries into an existing directory. .SH EXAMPLES To import the entries specified in file .B ldif into your .BR slapd (8) database give the command: .LP .nf .ft tt /usr/local/sbin/slapadd \-l ldif .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR ldif (5), .BR slapcat (8), .BR slapindex (8), .BR ldapadd (1), .BR slapd (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1d000081a400000000000000000000000151244f540000106e000000b600010002ffffffffffffffff0000002a00000000root/usr/local/share/man/man8/slapindex.8.TH SLAPINDEX 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapindex \- Reindex entries in a SLAPD database .SH SYNOPSIS .B /usr/local/sbin/slapindex [\c .BI \-b \ suffix\fR] [\c .BR \-c ] [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BR \-g ] [\c .BI \-n \ dbnum\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BR \-q ] [\c .BR \-t ] [\c .BR \-v ] [\c .IR attr [ ... ]] .B .LP .SH DESCRIPTION .LP .B Slapindex is used to regenerate .BR slapd (8) indices based upon the current contents of a database. It opens the given database determined by the database number or suffix and updates the indices for all values of all attributes of all entries. If a list of specific attributes is provided on the command line, only the indices for those attributes will be regenerated. Databases configured as .B subordinate of this one are also re-indexed, unless \fB\-g\fP is specified. All files eventually created by .BR slapindex will belong to the identity .BR slapindex is run as, so make sure you either run .BR slapindex with the same identity .BR slapd (8) will be run as (see option .B \-u in .BR slapd (8)), or change file ownership before running .BR slapd (8). .SH OPTIONS .TP .BI \-b \ suffix Use the specified \fIsuffix\fR to determine which database to generate output for. The \fB\-b\fP cannot be used in conjunction with the .B \-n option. .TP .B \-c enable continue (ignore errors) mode. .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .B \-g disable subordinate gluing. Only the specified database will be processed, and not its glued subordinates (if any). .TP .BI \-n \ dbnum Generate output for the \fIdbnum\fR-th database listed in the configuration file. The config database .BR slapd\-config (5), is always the first database, so use .B \-n 0 The .B \-n cannot be used in conjunction with the .B \-b option. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .TP .B \-q enable quick (fewer integrity checks) mode. Performs no consistency checks when writing the database. Improves indexing time, .B however the database will most likely be unusable if any errors or interruptions occur. .TP .B \-t enable truncate mode. Truncates (empties) an index database before indexing any entries. May only be used with Quick mode. .TP .B \-v enable verbose mode. .SH LIMITATIONS Your .BR slapd (8) should not be running (at least, not in read-write mode) when you do this to ensure consistency of the database. .LP This command provides ample opportunity for the user to obtain and drink their favorite beverage. .SH EXAMPLES To reindex your SLAPD database, give the command: .LP .nf .ft tt /usr/local/sbin/slapindex .ft .fi To regenerate the index for only a specific attribute, e.g. "uid", give the command: .LP .nf .ft tt /usr/local/sbin/slapindex uid .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR ldif (5), .BR slapadd (8), .BR ldapadd (1), .BR slapd (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b20000081a400000000000000000000000151244f5400000ad0000000b600010002ffffffffffffffff0000002900000000root/usr/local/share/man/man8/slaptest.8.TH SLAPTEST 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2004-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slaptest \- Check the suitability of the OpenLDAP slapd configuration .SH SYNOPSIS .B /usr/local/sbin/slaptest [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BI \-n dbnum\fR] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BR \-Q ] [\c .BR \-u ] [\c .BR \-v ] .LP .SH DESCRIPTION .LP .B Slaptest is used to check the conformance of the .BR slapd (8) configuration. It opens the .BR slapd.conf (5) configuration file or the .BR slapd\-config (5) backend, and parses it according to the general and the backend-specific rules, checking its sanity. .LP .SH OPTIONS .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, slaptest will attempt to read the default config directory before trying to use the default config file. If a valid config directory exists then the default config file is ignored. If dry-run mode is also specified, no conversion will occur. .TP .BI \-n \ dbnum Just open and test the \fIdbnum\fR-th database listed in the configuration file. To only test the config database .BR slapd\-config (5), use .B \-n 0 as it is always the first database. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .TP .BI \-Q Be extremely quiet: only the exit code indicates success (0) or not (any other value). .TP .B \-u enable dry-run mode (i.e. don't fail if databases cannot be opened, but config is fine). .TP .B \-v enable verbose mode. .SH EXAMPLES To check a .BR slapd.conf (5) give the command: .LP .nf .ft tt /usr/local/sbin/slaptest \-f //usr/local/etc/openldap/slapd.conf \-v .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR slapd (8), .BR slapdn (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1c000081a400000000000000000000000151244f5400000a2a000000b600010002ffffffffffffffff0000002700000000root/usr/local/share/man/man8/slapdn.8.TH SLAPDN 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2004-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapdn \- Check a list of string-represented LDAP DNs based on schema syntax .SH SYNOPSIS .B /usr/local/sbin/slapdn [\c .BI \-d \ debug-level\fR] [\c .BI \-f \ slapd.conf\fR] [\c .BI \-F \ confdir\fR] [\c .BR \-N | \-P ] [\c .BI \-o \ option\fR[ = value\fR]] [\c .BR \-v ] .IR DN \ [...] .LP .SH DESCRIPTION .LP .B Slapdn is used to check the conformance of a DN based on the schema defined in .BR slapd (8) and that loaded via .BR slapd.conf (5). It opens the .BR slapd.conf (5) configuration file or the slapd\-config (5) backend, reads in the schema definitions, and then parses the .I DN list given on the command-line. .LP .SH OPTIONS .TP .BI \-d \ debug-level enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .BI \-N only output a normalized form of the \fIDN\fP, suitable to be used in a normalization tool; incompatible with .BR \-P . .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .TP .BI \-P only output a prettified form of the \fIDN\fP, suitable to be used in a check and beautification tool; incompatible with .BR \-N . .TP .B \-v enable verbose mode. .SH EXAMPLES To check a .B DN give the command: .LP .nf .ft tt /usr/local/sbin/slapdn \-f //usr/local/etc/openldap/slapd.conf \-v DN .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR slapd (8), .BR slaptest (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031b1f000081a400000000000000000000000151244f540000137a000000b600010002ffffffffffffffff0000002b00000000root/usr/local/share/man/man8/slapschema.8.TH SLAPSCHEMA 8C "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapschema \- SLAPD in-database schema checking utility .SH SYNOPSIS .B /usr/local/sbin/slapschema [\c .BI \-a filter\fR] [\c .BI \-b suffix\fR] [\c .BR \-c ] [\c .BI \-d debug-level\fR] [\c .BI \-f slapd.conf\fR] [\c .BI \-F confdir\fR] [\c .BR \-g ] [\c .BI \-H URI\fR] [\c .BI \-l error-file\fR] [\c .BI \-n dbnum\fR] [\c .BI \-o option\fR[ = value\fR]] [\c .BI \-s subtree-dn\fR] [\c .BR \-v ] .LP .SH DESCRIPTION .LP .B Slapschema is used to check schema compliance of the contents of a .BR slapd (8) database. It opens the given database determined by the database number or suffix and checks the compliance of its contents with the corresponding schema. Errors are written to standard output or the specified file. Databases configured as .B subordinate of this one are also output, unless \fB\-g\fP is specified. .LP Administrators may need to modify existing schema items, including adding new required attributes to objectClasses, removing existing required or allowed attributes from objectClasses, entirely removing objectClasses, or any other change that may result in making perfectly valid entries no longer compliant with the modified schema. The execution of the .B slapschema tool after modifying the schema can point out inconsistencies that would otherwise surface only when inconsistent entries need to be modified. .LP The entry records are checked in database order, not superior first order. The entry records will be checked considering all (user and operational) attributes stored in the database. Dynamically generated attributes (such as subschemaSubentry) will not be considered. .SH OPTIONS .TP .BI \-a \ filter Only check entries matching the asserted filter. For example slapschema \-a \\ "(!(entryDN:dnSubtreeMatch:=ou=People,dc=example,dc=com))" will check all but the "ou=People,dc=example,dc=com" subtree of the "dc=example,dc=com" database. Deprecated; use \fB-H\fP \fIldap:///???(filter)\fP instead. .TP .BI \-b \ suffix Use the specified \fIsuffix\fR to determine which database to check. The \fB\-b\fP cannot be used in conjunction with the .B \-n option. .TP .B \-c Enable continue (ignore errors) mode. .TP .BI \-d \ debug-level Enable debugging messages as defined by the specified .IR debug-level ; see .BR slapd (8) for details. .TP .BI \-f \ slapd.conf Specify an alternative .BR slapd.conf (5) file. .TP .BI \-F \ confdir specify a config directory. If both .B \-f and .B \-F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. .TP .B \-g disable subordinate gluing. Only the specified database will be processed, and not its glued subordinates (if any). .TP .B \-H \ URI use dn, scope and filter from URI to only handle matching entries. .TP .BI \-l \ error-file Write errors to specified file instead of standard output. .TP .BI \-n \ dbnum Check the \fIdbnum\fR\-th database listed in the configuration file. The config database .BR slapd\-config (5), is always the first database, so use .B \-n 0 The .B \-n cannot be used in conjunction with the .B \-b option. .TP .BI \-o \ option\fR[ = value\fR] Specify an .I option with a(n optional) .IR value . Possible generic options/values are: .LP .nf syslog= (see `\-s' in slapd(8)) syslog\-level= (see `\-S' in slapd(8)) syslog\-user= (see `\-l' in slapd(8)) .fi .TP .BI \-s \ subtree-dn Only check entries in the subtree specified by this DN. Implies \fB\-b\fP \fIsubtree-dn\fP if no .B \-b nor .B \-n option is given. Deprecated; use \fB-H\fP \fIldap:///subtree-dn\fP instead. .TP .B \-v Enable verbose mode. .SH LIMITATIONS For some backend types, your .BR slapd (8) should not be running (at least, not in read-write mode) when you do this to ensure consistency of the database. It is always safe to run .B slapschema with the .BR slapd\-bdb (5), .BR slapd\-hdb (5), and .BR slapd\-null (5) backends. .SH EXAMPLES To check the schema compliance of your SLAPD database after modifications to the schema, and put any error in a file called .BR errors.ldif , give the command: .LP .nf .ft tt /usr/local/sbin/slapcat \-l errors.ldif .ft .fi .SH "SEE ALSO" .BR ldap (3), .BR ldif (5), .BR slapd (8) .LP "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) .SH ACKNOWLEDGEMENTS .\" Shared Project Acknowledgement Text .B "OpenLDAP Software" is developed and maintained by The OpenLDAP Project . .B "OpenLDAP Software" is derived from University of Michigan LDAP 3.3 Release. 07070100031ae9000041ed0000000000000000000000025124535600000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man507070100031af9000081a400000000000000000000000151244f5300001929000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man5/slapd-relay.5.TH SLAPD-RELAY 5 "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapd\-relay \- relay backend to slapd .SH SYNOPSIS /usr/local/etc/openldap/slapd.conf .SH DESCRIPTION The primary purpose of this .BR slapd (8) backend is to map a naming context defined in a database running in the same .BR slapd (8) instance into a virtual naming context, with attributeType and objectClass manipulation, if required. It requires the .BR slapo\-rwm (5) overlay. .LP This backend and the above mentioned overlay are experimental. .SH CONFIGURATION The following .B slapd.conf directives apply to the relay backend database. That is, they must follow a "database relay" line and come before any subsequent "backend" or "database" lines. Other database options are described in the .BR slapd.conf (5) manual page; only the .B suffix directive is allowed by the .I relay backend. .TP .B relay The naming context of the database that is presented under a virtual naming context. The presence of this directive implies that one specific database, i.e. the one serving the .BR "real naming context" , will be presented under a virtual naming context. .SH MASSAGING The .B relay database does not automatically rewrite the naming context of requests and responses. For this purpose, the .BR slapo\-rwm (5) overlay must be explicitly instantiated, and configured as appropriate. Usually, the .B rwm\-suffixmassage directive suffices if only naming context rewriting is required. .SH ACCESS RULES One important issue is that access rules are based on the identity that issued the operation. After massaging from the virtual to the real naming context, the frontend sees the operation as performed by the identity in the real naming context. Moreover, since .B back\-relay bypasses the real database frontend operations by short-circuiting operations through the internal backend API, the original database access rules do not apply but in selected cases, i.e. when the backend itself applies access control. As a consequence, the instances of the relay database must provide own access rules that are consistent with those of the original database, possibly adding further specific restrictions. So, access rules in the .B relay database must refer to identities in the real naming context. Examples are reported in the EXAMPLES section. .SH SCENARIOS .LP If no .B relay directive is given, the .I relay database does not refer to any specific database, but the most appropriate one is looked-up after rewriting the request DN for the operation that is being handled. .LP This allows to write carefully crafted rewrite rules that cause some of the requests to be directed to one database, and some to another; e.g., authentication can be mapped to one database, and searches to another, or different target databases can be selected based on the DN of the request, and so. .LP Another possibility is to map the same operation to different databases based on details of the virtual naming context, e.g. groups on one database and persons on another. .LP .SH EXAMPLES To implement a plain virtual naming context mapping that refers to a single database, use .LP .nf database relay suffix "dc=virtual,dc=naming,dc=context" relay "dc=real,dc=naming,dc=context" overlay rwm rwm\-suffixmassage "dc=real,dc=naming,dc=context" .fi .LP To implement a plain virtual naming context mapping that looks up the real naming context for each operation, use .LP .nf database relay suffix "dc=virtual,dc=naming,dc=context" overlay rwm rwm\-suffixmassage "dc=real,dc=naming,dc=context" .fi .LP This is useful, for instance, to relay different databases that share the terminal portion of the naming context (the one that is rewritten). .LP To implement the old-fashioned suffixalias, e.g. mapping the virtual to the real naming context, but not the results back from the real to the virtual naming context, use .LP .nf database relay suffix "dc=virtual,dc=naming,dc=context" relay "dc=real,dc=naming,dc=context" overlay rwm rwm\-rewriteEngine on rwm\-rewriteContext default rwm\-rewriteRule "dc=virtual,dc=naming,dc=context" "dc=real,dc=naming,dc=context" ":@" rwm\-rewriteContext searchFilter rwm\-rewriteContext searchEntryDN rwm\-rewriteContext searchAttrDN rwm\-rewriteContext matchedDN .fi .LP Note that the .BR slapo\-rwm (5) overlay is instantiated, but the rewrite rules are written explicitly, rather than automatically as with the .B rwm\-suffixmassage statement, to map all the virtual to real naming context data flow, but none of the real to virtual. .LP Access rules: .LP .nf database bdb suffix "dc=example,dc=com" # skip... access to dn.subtree="dc=example,dc=com" by dn.exact="cn=Supervisor,dc=example,dc=com" write by * read database relay suffix "o=Example,c=US" relay "dc=example,dc=com" overlay rwm rwm\-suffixmassage "dc=example,dc=com" # skip ... access to dn.subtree="o=Example,c=US" by dn.exact="cn=Supervisor,dc=example,dc=com" write by dn.exact="cn=Relay Supervisor,dc=example,dc=com" write by * read .fi .LP Note that, in both databases, the identities (the .B clause) are in the .BR "real naming context" , i.e. .BR "`dc=example,dc=com'" , while the targets (the .B clause) are in the .B real and in the .BR "virtual naming context" , respectively. .SH ACCESS CONTROL The .B relay backend does not honor any of the access control semantics described in .BR slapd.access (5); all access control is delegated to the relayed database(s). Only .B read (=r) access to the .B entry pseudo-attribute and to the other attribute values of the entries returned by the .B search operation is honored, which is performed by the frontend. .SH FILES .TP /usr/local/etc/openldap/slapd.conf default slapd configuration file .SH SEE ALSO .BR slapd.conf (5), .BR slapd\-config (5), .BR slapo\-rwm (5), .BR slapd (8). 07070100031b13000081a400000000000000000000000151244f540000123d000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/man/man5/slapo-translucent.5.TH SLAPO-TRANSLUCENT 5 "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2004-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapo\-translucent \- Translucent Proxy overlay to slapd .SH SYNOPSIS /usr/local/etc/openldap/slapd.conf .SH DESCRIPTION The Translucent Proxy overlay can be used with a backend database such as .BR slapd\-bdb (5) to create a "translucent proxy". Entries retrieved from a remote LDAP server may have some or all attributes overridden, or new attributes added, by entries in the local database before being presented to the client. .LP A .BR search operation is first populated with entries from the remote LDAP server, the attributes of which are then overridden with any attributes defined in the local database. Local overrides may be populated with the .BR add , .B modify , and .B modrdn operations, the use of which is restricted to the root user. .LP A .BR compare operation will perform a comparison with attributes defined in the local database record (if any) before any comparison is made with data in the remote database. .SH CONFIGURATION The Translucent Proxy overlay uses a proxied database, typically a (set of) remote LDAP server(s), which is configured with the options shown in .BR slapd\-ldap (5), .BR slapd\-meta (5) or similar. These .B slapd.conf options are specific to the Translucent Proxy overlay; they must appear after the .B overlay directive that instantiates the .B translucent overlay. .TP .B translucent_strict By default, attempts to delete attributes in either the local or remote databases will be silently ignored. The .B translucent_strict directive causes these modifications to fail with a Constraint Violation. .TP .B translucent_no_glue This configuration option disables the automatic creation of "glue" records for an .B add or .B modrdn operation, such that all parents of an entry added to the local database must be created by hand. Glue records are always created for a .B modify operation. .TP .B translucent_local Specify a list of attributes that should be searched for in the local database when used in a search filter. By default, search filters are only handled by the remote database. With this directive, search filters will be split into a local and remote portion, and local attributes will be searched locally. .TP .B translucent_remote Specify a list of attributes that should be searched for in the remote database when used in a search filter. This directive complements the .B translucent_local directive. Attributes may be specified as both local and remote if desired. .LP If neither .B translucent_local nor .B translucent_remote are specified, the default behavior is to search the remote database with the complete search filter. If only .B translucent_local is specified, searches will only be run on the local database. Likewise, if only .B translucent_remote is specified, searches will only be run on the remote database. In any case, both the local and remote entries corresponding to a search result will be merged before being returned to the client. .TP .B translucent_bind_local Enable looking for locally stored credentials for simple bind when binding to the remote database fails. Disabled by default. .TP .B translucent_pwmod_local Enable RFC 3062 Password Modification extended operation on locally stored credentials. The operation only applies to entries that exist in the remote database. Disabled by default. .SH ACCESS CONTROL Access control is delegated to either the remote DSA(s) or to the local database backend for .B auth and .B write operations. It is delegated to the remote DSA(s) and to the frontend for .B read operations. Local access rules involving data returned by the remote DSA(s) should be designed with care. In fact, entries are returned by the remote DSA(s) only based on the remote fraction of the data, based on the identity the operation is performed as. As a consequence, local rules might only be allowed to see a portion of the remote data. .SH CAVEATS .LP The Translucent Proxy overlay will disable schema checking in the local database, so that an entry consisting of overlay attributes need not adhere to the complete schema. .LP Because the translucent overlay does not perform any DN rewrites, the local and remote database instances must have the same suffix. Other configurations will probably fail with No Such Object and other errors. .SH FILES .TP /usr/local/etc/openldap/slapd.conf default slapd configuration file .SH SEE ALSO .BR slapd.conf (5), .BR slapd\-config (5), .BR slapd\-ldap (5). 07070100031af7000081a400000000000000000000000151244f53000005f8000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man5/slapd-passwd.5.TH SLAPD-PASSWD 5 "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ .SH NAME slapd\-passwd \- /etc/passwd backend to slapd .SH SYNOPSIS /usr/local/etc/openldap/slapd.conf .SH DESCRIPTION The PASSWD backend to .BR slapd (8) serves up the user account information listed in the system .BR passwd (5) file. This backend is provided for demonstration purposes only. The DN of each entry is "uid=,". Note that non-base searches scan the the entire passwd file, and are best suited for hosts with small passwd files. .SH CONFIGURATION This .B slapd.conf option applies to the PASSWD backend database. That is, it must follow a "database passwd" line and come before any subsequent "backend" or "database" lines. Other database options are described in the .BR slapd.conf (5) manual page. .TP .B file Specifies an alternate passwd file to use. The default is .BR /etc/passwd . .SH ACCESS CONTROL The .B passwd backend does not honor any of the access control semantics described in .BR slapd.access (5). Only .B read (=r) access to the .B entry pseudo-attribute and to the other attribute values of the entries returned by the .B search operation is honored, which is performed by the frontend. .SH FILES .TP /usr/local/etc/openldap/slapd.conf default slapd configuration file .TP /etc/passwd user account information .SH SEE ALSO .BR slapd.conf (5), .BR slapd (8), .BR passwd (5). 07070100031b04000081a400000000000000000000000151244f54000016d7000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man5/slapo-chain.5.TH SLAPO-CHAIN 5 "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 1998-2012 The OpenLDAP Foundation, All Rights Reserved. .\" Copying restrictions apply. See the COPYRIGHT file. .\" $OpenLDAP$ .SH NAME slapo\-chain \- chain overlay to slapd .SH SYNOPSIS /usr/local/etc/openldap/slapd.conf .SH DESCRIPTION The .B chain overlay to .BR slapd (8) allows automatic referral chasing. Any time a referral is returned (except for bind operations), it is chased by using an instance of the ldap backend. If operations are performed with an identity (i.e. after a bind), that identity can be asserted while chasing the referrals by means of the \fIidentity assertion\fP feature of back-ldap (see .BR slapd\-ldap (5) for details), which is essentially based on the .B proxied authorization control [RFC 4370]. Referral chasing can be controlled by the client by issuing the \fBchaining\fP control (see \fIdraft-sermersheim-ldap-chaining\fP for details.) .LP The config directives that are specific to the .B chain overlay are prefixed by .BR chain\- , to avoid potential conflicts with directives specific to the underlying database or to other stacked overlays. .LP There are very few chain overlay specific directives; however, directives related to the instances of the \fIldap\fP backend that may be implicitly instantiated by the overlay may assume a special meaning when used in conjunction with this overlay. They are described in .BR slapd\-ldap (5), and they also need to be prefixed by .BR chain\- . Note: this overlay is built into the \fIldap\fP backend; it is not a separate module. .TP .B overlay chain This directive adds the chain overlay to the current backend. The chain overlay may be used with any backend, but it is mainly intended for use with local storage backends that may return referrals. It is useless in conjunction with the \fIslapd\-ldap\fP and \fIslapd\-meta\fP backends because they already exploit the libldap specific referral chase feature. [Note: this may change in the future, as the \fBldap\fP(5) and \fBmeta\fP(5) backends might no longer chase referrals on their own.] .TP .B chain\-cache\-uri {FALSE|true} This directive instructs the \fIchain\fP overlay to cache connections to URIs parsed out of referrals that are not predefined, to be reused for later chaining. These URIs inherit the properties configured for the underlying \fBslapd\-ldap\fP(5) before any occurrence of the \fBchain\-uri\fP directive; basically, they are chained anonymously. .TP .B chain\-chaining [resolve=] [continuation=] [critical] This directive enables the \fIchaining\fP control (see \fIdraft-sermersheim-ldap-chaining\fP for details) with the desired resolve and continuation behaviors and criticality. The \fBresolve\fP parameter refers to the behavior while discovering a resource, namely when accessing the object indicated by the request DN; the \fBcontinuation\fP parameter refers to the behavior while handling intermediate responses, which is mostly significant for the search operation, but may affect extended operations that return intermediate responses. The values \fBr\fP and \fBc\fP can be any of .BR chainingPreferred , .BR chainingRequired , .BR referralsPreferred , .BR referralsRequired . If the \fBcritical\fP flag affects the control criticality if provided. [This control is experimental and its support may change in the future.] .TP .B chain\-max\-depth In case a referral is returned during referral chasing, further chasing occurs at most \fB\fP levels deep. Set to \fB1\fP (the default) to disable further referral chasing. .TP .B chain\-return\-error {FALSE|true} In case referral chasing fails, the real error is returned instead of the original referral. In case multiple referral URIs are present, only the first error is returned. This behavior may not be always appropriate nor desirable, since failures in referral chasing might be better resolved by the client (e.g. when caused by distributed authentication issues). .TP .B chain\-uri This directive instantiates a new underlying \fIldap\fP database and instructs it about which URI to contact to chase referrals. As opposed to what stated in \fBslapd\-ldap\fP(5), only one URI can appear after this directive; all subsequent \fBslapd\-ldap\fP(5) directives prefixed by \fBchain\-\fP refer to this specific instance of a remote server. .LP Directives for configuring the underlying ldap database may also be required, as shown in this example: .LP .RS .nf overlay chain chain\-rebind\-as\-user FALSE chain\-uri "ldap://ldap1.example.com" chain\-rebind\-as\-user TRUE chain\-idassert\-bind bindmethod="simple" binddn="cn=Auth,dc=example,dc=com" credentials="secret" mode="self" chain\-uri "ldap://ldap2.example.com" chain\-idassert\-bind bindmethod="simple" binddn="cn=Auth,dc=example,dc=com" credentials="secret" mode="none" .fi .RE .LP Any valid directives for the ldap database may be used; see .BR slapd\-ldap (5) for details. Multiple occurrences of the \fBchain\-uri\fP directive may appear, to define multiple "trusted" URIs where operations with \fIidentity assertion\fP are chained. All URIs not listed in the configuration are chained anonymously. All \fBslapd\-ldap\fP(5) directives appearing before the first occurrence of \fBchain\-uri\fP are inherited by all URIs, unless specifically overridden inside each URI configuration. .SH FILES .TP /usr/local/etc/openldap/slapd.conf default slapd configuration file .SH SEE ALSO .BR slapd.conf (5), .BR slapd\-config (5), .BR slapd\-ldap (5), .BR slapd (8). .SH AUTHOR Originally implemented by Howard Chu; extended by Pierangelo Masarati. 07070100031b0b000081a400000000000000000000000151244f5400000588000000b600010002ffffffffffffffff0000002c00000000root/usr/local/share/man/man5/slapo-pbind.5.TH SLAPO-PBIND 5 "2012/10/10" "OpenLDAP 2.4.33" .\" Copyright 2010-2012 The OpenLDAP Foundation, All Rights Reserved. .\" Copying restrictions apply. See the COPYRIGHT file. .\" $OpenLDAP$ .SH NAME slapo\-pbind \- proxy bind overlay to slapd .SH SYNOPSIS /usr/local/etc/openldap/slapd.conf .SH DESCRIPTION The .B pbind overlay to .BR slapd (8) forwards Simple Binds on a local database to a remote LDAP server instead of processing them locally. The remote connection is managed using an instance of the ldap backend. .LP The .B pbind overlay uses a subset of the \fIldap\fP backend's config directives. They are described in more detail in .BR slapd\-ldap (5). Note: this overlay is built into the \fIldap\fP backend; it is not a separate module. .TP .B overlay pbind This directive adds the proxy bind overlay to the current backend. The proxy bind overlay may be used with any backend, but it is mainly intended for use with local storage backends. .TP .B uri LDAP server to use. .TP .B tls Specify the use of TLS. .TP .B network\-timeout