#include "ext/standard/dl.h"
#include "php_ldap.h"
+#include "ldap_arginfo.h"
#ifdef PHP_WIN32
#include <string.h>
/* }}} */
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
- ZEND_ARG_INFO(0, hostname)
- ZEND_ARG_INFO(0, port)
-#ifdef HAVE_ORALDAP
- ZEND_ARG_INFO(0, wallet)
- ZEND_ARG_INFO(0, wallet_passwd)
- ZEND_ARG_INFO(0, authmode)
-#endif
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_resource, 0, 0, 1)
- ZEND_ARG_INFO(0, link_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_bind, 0, 0, 1)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, bind_rdn)
- ZEND_ARG_INFO(0, bind_password)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_bind_ext, 0, 0, 1)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, bind_rdn)
- ZEND_ARG_INFO(0, bind_password)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-#ifdef HAVE_LDAP_SASL
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_sasl_bind, 0, 0, 1)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, binddn)
- ZEND_ARG_INFO(0, password)
- ZEND_ARG_INFO(0, sasl_mech)
- ZEND_ARG_INFO(0, sasl_realm)
- ZEND_ARG_INFO(0, sasl_authz_id)
- ZEND_ARG_INFO(0, props)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_read, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, base_dn)
- ZEND_ARG_INFO(0, filter)
- ZEND_ARG_INFO(0, attributes)
- ZEND_ARG_INFO(0, attrsonly)
- ZEND_ARG_INFO(0, sizelimit)
- ZEND_ARG_INFO(0, timelimit)
- ZEND_ARG_INFO(0, deref)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_list, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, base_dn)
- ZEND_ARG_INFO(0, filter)
- ZEND_ARG_INFO(0, attributes)
- ZEND_ARG_INFO(0, attrsonly)
- ZEND_ARG_INFO(0, sizelimit)
- ZEND_ARG_INFO(0, timelimit)
- ZEND_ARG_INFO(0, deref)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_search, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, base_dn)
- ZEND_ARG_INFO(0, filter)
- ZEND_ARG_INFO(0, attributes)
- ZEND_ARG_INFO(0, attrsonly)
- ZEND_ARG_INFO(0, sizelimit)
- ZEND_ARG_INFO(0, timelimit)
- ZEND_ARG_INFO(0, deref)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_count_entries, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_entry, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_entry, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_entries, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_attribute, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_attribute, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_attributes, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_values, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
- ZEND_ARG_INFO(0, attribute)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_values_len, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
- ZEND_ARG_INFO(0, attribute)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_dn, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, result_entry_identifier)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_explode_dn, 0, 0, 2)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, with_attrib)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_dn2ufn, 0, 0, 1)
- ZEND_ARG_INFO(0, dn)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_add, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_add_ext, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_delete, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_delete_ext, 0, 0, 2)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_modify, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_modify_batch, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_ARRAY_INFO(0, modifications_info, 0)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_add, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_add_ext, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_replace, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_replace_ext, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_del, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_del_ext, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_err2str, 0, 0, 1)
- ZEND_ARG_INFO(0, errno)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_compare, 0, 0, 4)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, attribute)
- ZEND_ARG_INFO(0, value)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-#ifdef LDAP_CONTROL_PAGEDRESULTS
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, pagesize)
- ZEND_ARG_INFO(0, iscritical)
- ZEND_ARG_INFO(0, cookie)
-ZEND_END_ARG_INFO();
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result_response, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, result)
- ZEND_ARG_INFO(1, cookie)
- ZEND_ARG_INFO(1, estimated)
-ZEND_END_ARG_INFO();
-#endif
-
-#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename, 0, 0, 5)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, newrdn)
- ZEND_ARG_INFO(0, newparent)
- ZEND_ARG_INFO(0, deleteoldrdn)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename_ext, 0, 0, 5)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, newrdn)
- ZEND_ARG_INFO(0, newparent)
- ZEND_ARG_INFO(0, deleteoldrdn)
- ZEND_ARG_INFO(0, servercontrols)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_option, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, option)
- ZEND_ARG_INFO(1, retval)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_set_option, 0, 0, 3)
- ZEND_ARG_INFO(0, link_identifier)
- ZEND_ARG_INFO(0, option)
- ZEND_ARG_INFO(0, newval)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_reference, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, result)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_reference, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, entry)
-ZEND_END_ARG_INFO()
-
-#ifdef HAVE_LDAP_PARSE_REFERENCE
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_reference, 0, 0, 3)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, entry)
- ZEND_ARG_INFO(1, referrals)
-ZEND_END_ARG_INFO()
-#endif
-
-
-#ifdef HAVE_LDAP_PARSE_RESULT
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_result, 0, 0, 3)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, result)
- ZEND_ARG_INFO(1, errcode)
- ZEND_ARG_INFO(1, matcheddn)
- ZEND_ARG_INFO(1, errmsg)
- ZEND_ARG_INFO(1, referrals)
- ZEND_ARG_INFO(1, serverctrls)
-ZEND_END_ARG_INFO()
-#endif
-#endif
-
-#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_set_rebind_proc, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, callback)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_escape, 0, 0, 1)
- ZEND_ARG_INFO(0, value)
- ZEND_ARG_INFO(0, ignore)
- ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-
-#ifdef STR_TRANSLATION
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_t61_to_8859, 0, 0, 1)
- ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_8859_to_t61, 0, 0, 1)
- ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO()
-#endif
-
-#ifdef HAVE_LDAP_EXTENDED_OPERATION_S
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 2)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, reqoid)
- ZEND_ARG_INFO(0, reqdata)
- ZEND_ARG_INFO(0, servercontrols)
- ZEND_ARG_INFO(1, retdata)
- ZEND_ARG_INFO(1, retoid)
-ZEND_END_ARG_INFO()
-#endif
-
-#ifdef HAVE_LDAP_PASSWD
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 1)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, user)
- ZEND_ARG_INFO(0, oldpw)
- ZEND_ARG_INFO(0, newpw)
- ZEND_ARG_INFO(1, serverctrls)
-ZEND_END_ARG_INFO()
-#endif
-
-#ifdef HAVE_LDAP_WHOAMI_S
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 1)
- ZEND_ARG_INFO(0, link)
-ZEND_END_ARG_INFO()
-#endif
-
-#ifdef HAVE_LDAP_REFRESH_S
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_refresh, 0, 0, 3)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, dn)
- ZEND_ARG_INFO(0, ttl)
-ZEND_END_ARG_INFO()
-#endif
-
-#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4)
- ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(0, result)
- ZEND_ARG_INFO(1, retdata)
- ZEND_ARG_INFO(1, retoid)
-ZEND_END_ARG_INFO()
-#endif
-/* }}} */
-
/*
This is just a small subset of the functionality provided by the LDAP library. All the
operations are synchronous. Referrals are not handled automatically.
*/
static const zend_function_entry ldap_functions[] = {
PHP_FE(ldap_connect, arginfo_ldap_connect)
- PHP_FALIAS(ldap_close, ldap_unbind, arginfo_ldap_resource)
+ PHP_FALIAS(ldap_close, ldap_unbind, arginfo_ldap_close)
PHP_FE(ldap_bind, arginfo_ldap_bind)
PHP_FE(ldap_bind_ext, arginfo_ldap_bind_ext)
#ifdef HAVE_LDAP_SASL
PHP_FE(ldap_sasl_bind, arginfo_ldap_sasl_bind)
#endif
- PHP_FE(ldap_unbind, arginfo_ldap_resource)
+ PHP_FE(ldap_unbind, arginfo_ldap_unbind)
PHP_FE(ldap_read, arginfo_ldap_read)
PHP_FE(ldap_list, arginfo_ldap_list)
PHP_FE(ldap_search, arginfo_ldap_search)
- PHP_FE(ldap_free_result, arginfo_ldap_resource)
+ PHP_FE(ldap_free_result, arginfo_ldap_free_result)
PHP_FE(ldap_count_entries, arginfo_ldap_count_entries)
PHP_FE(ldap_first_entry, arginfo_ldap_first_entry)
PHP_FE(ldap_next_entry, arginfo_ldap_next_entry)
PHP_FE(ldap_mod_del_ext, arginfo_ldap_mod_del_ext)
/* end gjt mod */
- PHP_FE(ldap_errno, arginfo_ldap_resource)
+ PHP_FE(ldap_errno, arginfo_ldap_errno)
PHP_FE(ldap_err2str, arginfo_ldap_err2str)
- PHP_FE(ldap_error, arginfo_ldap_resource)
+ PHP_FE(ldap_error, arginfo_ldap_error)
PHP_FE(ldap_compare, arginfo_ldap_compare)
#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
PHP_FE(ldap_parse_result, arginfo_ldap_parse_result)
#endif
#ifdef HAVE_LDAP_START_TLS_S
- PHP_FE(ldap_start_tls, arginfo_ldap_resource)
+ PHP_FE(ldap_start_tls, arginfo_ldap_start_tls)
#endif
#ifdef HAVE_LDAP_EXTENDED_OPERATION_S
PHP_FE(ldap_exop, arginfo_ldap_exop)
--- /dev/null
+<?php
+
+//TODO: missing arginfo functions defined in C using
+
+#ifdef HAVE_ORALDAP
+/** @return resource|false */
+function ldap_connect(string $hostname = UNKNOWN, int $port = 389, string $wallet = UNKNOWN, string $wallet_passwd = UNKNOWN, int $authmode = GSLC_SSL_NO_AUTH) {}
+#else
+/** @return resource|false */
+function ldap_connect(string $hostname = UNKNOWN, int $port = 389) {}
+#endif
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_unbind($link_identifier): bool {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_close($link_identifier): bool {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_bind($link_identifier, string $bind_rdn = UNKNOWN, string $bind_password = UNKNOWN): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_bind_ext($link_identifier, string $bind_rdn = UNKNOWN, string $bind_password = UNKNOWN, array $servercontrols = []) {}
+
+#ifdef HAVE_LDAP_SASL
+/**
+ * @param resource $link
+ */
+function ldap_sasl_bind($link, string $binddn = UNKNOWN, string $password = UNKNOWN, string $sasl_mech = UNKNOWN, string $sasl_realm = UNKNOWN, string $sasl_authc_id = UNKNOWN, string $sasl_authz_id = UNKNOWN, string $props = UNKNOWN): bool {}
+#endif
+
+/**
+ * @param resource|array $link_identifier
+ * @param string|array $base_dn
+ * @param string|array $filter
+ * @return resource|false
+ */
+function ldap_read($link_identifier, $base_dn, $filter, array $attributes = [], int $attrsonly = 0, int $sizelimit = -1, int $timelimit = -1, int $deref = LDAP_DEREF_NEVER, array $servercontrols = []) {}
+
+/**
+ * @param resource|array $link_identifier
+ * @param string|array $base_dn
+ * @param string|array $filter
+ * @return resource|false
+ */
+function ldap_list($link_identifier, $base_dn, $filter, array $attributes = [], int $attrsonly = 0, int $sizelimit = -1, int $timelimit = -1, int $deref = LDAP_DEREF_NEVER, array $servercontrols = []) {}
+
+/**
+ * @param resource|array $link_identifier
+ * @param string|array $base_dn
+ * @param string|array $filter
+ * @return resource|false
+ */
+function ldap_search($link_identifier, $base_dn, $filter, array $attributes = [], int $attrsonly = 0, int $sizelimit = -1, int $timelimit = -1, int $deref = LDAP_DEREF_NEVER, array $servercontrols = []) {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_free_result($link_identifier): bool {}
+
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_identifier
+ */
+function ldap_count_entries($link_identifier, $result_identifier): int {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_identifier
+ * @return resource|false
+ */
+function ldap_first_entry($link_identifier, $result_identifier) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_identifier
+ * @return resource|false
+ */
+function ldap_next_entry($link_identifier, $result_identifier) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_identifier
+ * @return array|false
+ */
+function ldap_get_entries($link_identifier, $result_identifier) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ * @return string|false
+ */
+function ldap_first_attribute($link_identifier, $result_entry_identifier, int $dummy_ber = UNKNOWN) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ * @return string|false
+ */
+function ldap_next_attribute($link_identifier, $result_entry_identifier, int $dummy_ber = UNKNOWN) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ */
+function ldap_get_attributes($link_identifier, $result_entry_identifier): array {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ * @return array|false
+ */
+function ldap_get_values($link_identifier, $result_entry_identifier, string $attribute) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ * @return array|false
+ */
+function ldap_get_values_len($link_identifier, $result_entry_identifier, string $attribute) {}
+
+/**
+ * @param resource $link_identifier
+ * @param resource $result_entry_identifier
+ * @return string|false
+ */
+function ldap_get_dn($link_identifier, $result_entry_identifier) {}
+
+/**
+ * @return array|false
+ */
+function ldap_explode_dn(string $dn, int $with_attrib) {}
+
+/**
+ * @return string|false
+ */
+function ldap_dn2ufn(string $dn) {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_add($link_identifier, string $dn, array $entry, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_add_ext($link_identifier, string $dn, array $entry, array $servercontrols = []) {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_delete($link_identifier, string $dn, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_delete_ext($link_identifier, string $dn, array $servercontrols = []) {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_modify($link_identifier, string $dn, array $entry, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_modify_batch($link_identifier, string $dn, array $modifications_info, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_mod_add($link_identifier, string $dn, array $entry, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_mod_add_ext($link_identifier, string $dn, array $entry, array $servercontrols = []) {}
+
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_mod_replace($link_identifier, string $dn, array $entry, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_mod_replace_ext($link_identifier, string $dn, array $entry, array $servercontrols = []) {}
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_mod_del($link_identifier, string $dn, array $entry, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_mod_del_ext($link_identifier, string $dn, array $entry, array $servercontrols = []) {}
+
+/**
+ * @param resource $link
+ */
+function ldap_errno($link): int {}
+
+/**
+ * @param resource $link
+ */
+function ldap_error($link): string {}
+
+function ldap_err2str(int $errno): string {}
+
+/**
+ * @param resource $link_identifier
+ * @return bool|int
+ */
+function ldap_compare($link_identifier, string $dn, string $attribute, string $value, array $servercontrols = []) {}
+
+
+#ifdef LDAP_CONTROL_PAGEDRESULTS
+/**
+ * @param resource $link
+ */
+function ldap_control_paged_result($link, int $pagesize, bool $iscritical = false, string $cookie = ''): bool {}
+
+/**
+ * @param resource $link
+ * @param resource $result
+ */
+function ldap_control_paged_result_response($link, $result, &$cookie = null, &$estimated = null): bool {}
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+/**
+ * @param resource $link_identifier
+ */
+function ldap_rename($link_identifier, string $dn, string $newrdn, string $newparent, bool $deleteoldrdn, array $servercontrols = []): bool {}
+
+/**
+ * @param resource $link_identifier
+ * @return resource|false
+ */
+function ldap_rename_ext($link_identifier, string $dn, string $newrdn, string $newparent, bool $deleteoldrdn, array $servercontrols = []) {}
+
+
+/**
+ * @param resource $link_identifier
+ */
+function ldap_get_option($link_identifier, int $option, &$retval = null): bool {}
+
+/**
+ * @param ?resource $link_identifier
+ */
+function ldap_set_option($link_identifier, int $option, $newval): bool {}
+
+/**
+ * @param resource $link
+ * @param resource $result
+ * @return resource|false
+ */
+function ldap_first_reference($link, $result) {}
+
+/**
+ * @param resource $link
+ * @param resource $entry
+ * @return resource|false
+ */
+function ldap_next_reference($link, $entry) {}
+
+#ifdef HAVE_LDAP_PARSE_REFERENCE
+/**
+ * @param resource $link
+ * @param resource $entry
+ */
+function ldap_parse_reference($link, $entry, &$referrals): bool {}
+#endif
+
+#ifdef HAVE_LDAP_PARSE_RESULT
+/**
+ * @param resource $link
+ * @param resource $result
+ */
+function ldap_parse_result($link, $result, &$errcode, &$matcheddn = null, &$errmsg = null, &$referrals = null, &$serverctrls = null): bool {}
+#endif
+#endif
+
+#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
+/**
+ * @param resource $link
+ * @param callable $callback
+ */
+function ldap_set_rebind_proc($link, $callback): bool {}
+#endif
+
+#ifdef HAVE_LDAP_START_TLS_S
+function ldap_start_tls($link_identifier): bool {}
+#endif
+
+function ldap_escape(string $value, string $ignore = '', int $flags = 0): string {}
+
+#ifdef STR_TRANSLATION
+/**
+ * @return string|false
+ */
+function ldap_t61_to_8859(string $value) {}
+
+/**
+ * @return string|false
+ */
+function ldap_8859_to_t61(string $value) {}
+#endif
+
+
+#ifdef HAVE_LDAP_EXTENDED_OPERATION_S
+/**
+ * @param resource $link
+ * @return resource|bool
+ */
+function ldap_exop($link, string $reqoid, ?string $reqdata = null, ?array $servercontrols = [], &$retdata = null, &$retoid = null) {}
+#endif
+
+#ifdef HAVE_LDAP_PASSWD
+/**
+ * @param resource $link
+ * @return string|bool
+ */
+function ldap_exop_passwd($link, string $user = '', string $oldpw = '', string $newpw = '', &$serverctrls = null) {}
+#endif
+
+
+#ifdef HAVE_LDAP_WHOAMI_S
+/**
+ * @param resource $link
+ * @return string|bool
+ */
+function ldap_exop_whoami($link) {}
+#endif
+
+
+#ifdef HAVE_LDAP_REFRESH_S
+/**
+ * @param resource $link
+ * @return int|false
+ */
+function ldap_exop_refresh($link, string $dn, $ttl) {}
+#endif
+
+
+#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
+/**
+ * @param resource $link
+ * @param resource $result
+ */
+function ldap_parse_exop($link, $result, &$retdata = null, &$retoid = null): bool {}
+#endif
+
--- /dev/null
+/* This is a generated file, edit the .stub.php file instead. */
+
+#if defined(HAVE_ORALDAP)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, wallet, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, wallet_passwd, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, authmode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if !(defined(HAVE_ORALDAP))
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_unbind, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_close arginfo_ldap_unbind
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_bind, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, bind_rdn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, bind_password, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_bind_ext, 0, 0, 1)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, bind_rdn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, bind_password, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_LDAP_SASL)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_sasl_bind, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_TYPE_INFO(0, binddn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, sasl_mech, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, sasl_realm, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, sasl_authc_id, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, sasl_authz_id, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, props, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_read, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, base_dn)
+ ZEND_ARG_INFO(0, filter)
+ ZEND_ARG_TYPE_INFO(0, attributes, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, attrsonly, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, sizelimit, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, timelimit, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, deref, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_list arginfo_ldap_read
+
+#define arginfo_ldap_search arginfo_ldap_read
+
+#define arginfo_ldap_free_result arginfo_ldap_unbind
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_count_entries, 0, 2, IS_LONG, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_entry, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_next_entry arginfo_ldap_first_entry
+
+#define arginfo_ldap_get_entries arginfo_ldap_first_entry
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_attribute, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ ZEND_ARG_TYPE_INFO(0, dummy_ber, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_next_attribute arginfo_ldap_first_attribute
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_get_attributes, 0, 2, IS_ARRAY, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_values, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ ZEND_ARG_TYPE_INFO(0, attribute, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_get_values_len arginfo_ldap_get_values
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_dn, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_explode_dn, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, with_attrib, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_dn2ufn, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_add, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, entry, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_add_ext, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, entry, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_delete, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_delete_ext, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_modify arginfo_ldap_add
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_modify_batch, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, modifications_info, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_ldap_mod_add arginfo_ldap_add
+
+#define arginfo_ldap_mod_add_ext arginfo_ldap_add_ext
+
+#define arginfo_ldap_mod_replace arginfo_ldap_add
+
+#define arginfo_ldap_mod_replace_ext arginfo_ldap_add_ext
+
+#define arginfo_ldap_mod_del arginfo_ldap_add
+
+#define arginfo_ldap_mod_del_ext arginfo_ldap_add_ext
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_errno, 0, 1, IS_LONG, 0)
+ ZEND_ARG_INFO(0, link)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_error, 0, 1, IS_STRING, 0)
+ ZEND_ARG_INFO(0, link)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_err2str, 0, 1, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, errno, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_compare, 0, 0, 4)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, attribute, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(LDAP_CONTROL_PAGEDRESULTS)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_control_paged_result, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_TYPE_INFO(0, pagesize, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, iscritical, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, cookie, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(LDAP_CONTROL_PAGEDRESULTS)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_control_paged_result_response, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ ZEND_ARG_INFO(1, cookie)
+ ZEND_ARG_INFO(1, estimated)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_rename, 0, 5, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newrdn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newparent, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, deleteoldrdn, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename_ext, 0, 0, 5)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newrdn, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newparent, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, deleteoldrdn, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_get_option, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
+ ZEND_ARG_INFO(1, retval)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_set_option, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
+ ZEND_ARG_INFO(0, newval)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_reference, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_reference, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP && defined(HAVE_LDAP_PARSE_REFERENCE)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_parse_reference, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, entry)
+ ZEND_ARG_INFO(1, referrals)
+ZEND_END_ARG_INFO()
+#endif
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP && defined(HAVE_LDAP_PARSE_RESULT)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_parse_result, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ ZEND_ARG_INFO(1, errcode)
+ ZEND_ARG_INFO(1, matcheddn)
+ ZEND_ARG_INFO(1, errmsg)
+ ZEND_ARG_INFO(1, referrals)
+ ZEND_ARG_INFO(1, serverctrls)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_set_rebind_proc, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, callback)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_LDAP_START_TLS_S)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_start_tls, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link_identifier)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_escape, 0, 1, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, ignore, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(STR_TRANSLATION)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_t61_to_8859, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(STR_TRANSLATION)
+#define arginfo_ldap_8859_to_t61 arginfo_ldap_t61_to_8859
+#endif
+
+#if defined(HAVE_LDAP_EXTENDED_OPERATION_S)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_TYPE_INFO(0, reqoid, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, reqdata, IS_STRING, 1)
+ ZEND_ARG_TYPE_INFO(0, servercontrols, IS_ARRAY, 1)
+ ZEND_ARG_INFO(1, retdata)
+ ZEND_ARG_INFO(1, retoid)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_LDAP_PASSWD)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 1)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_TYPE_INFO(0, user, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, oldpw, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newpw, IS_STRING, 0)
+ ZEND_ARG_INFO(1, serverctrls)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_LDAP_WHOAMI_S)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 1)
+ ZEND_ARG_INFO(0, link)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_LDAP_REFRESH_S)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_refresh, 0, 0, 3)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_TYPE_INFO(0, dn, IS_STRING, 0)
+ ZEND_ARG_INFO(0, ttl)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_LDAP_PARSE_EXTENDED_RESULT)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_parse_exop, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ ZEND_ARG_INFO(1, retdata)
+ ZEND_ARG_INFO(1, retoid)
+ZEND_END_ARG_INFO()
+#endif