]> granicus.if.org Git - php/commitdiff
Adding ldap stubs for arginfo
authorStephen Reay <stephen.reay@me.com>
Mon, 23 Sep 2019 07:43:56 +0000 (09:43 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Wed, 25 Sep 2019 13:09:25 +0000 (15:09 +0200)
ext/ldap/ldap.c
ext/ldap/ldap.stub.php [new file with mode: 0644]
ext/ldap/ldap_arginfo.h [new file with mode: 0644]

index 5c939b5657548c8088c34d60110f8d555bb4bf4d..815aecb5e130e8fa90f0149d83cd9a48980a5e6b 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "ext/standard/dl.h"
 #include "php_ldap.h"
+#include "ldap_arginfo.h"
 
 #ifdef PHP_WIN32
 #include <string.h>
@@ -4375,384 +4376,6 @@ PHP_FUNCTION(ldap_exop_refresh)
 
 /* }}} */
 
-/* {{{ 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.
@@ -4761,17 +4384,17 @@ ZEND_END_ARG_INFO()
  */
 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)
@@ -4800,9 +4423,9 @@ static const zend_function_entry ldap_functions[] = {
        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
@@ -4819,7 +4442,7 @@ static const zend_function_entry ldap_functions[] = {
        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)
diff --git a/ext/ldap/ldap.stub.php b/ext/ldap/ldap.stub.php
new file mode 100644 (file)
index 0000000..236b69e
--- /dev/null
@@ -0,0 +1,370 @@
+<?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
+
diff --git a/ext/ldap/ldap_arginfo.h b/ext/ldap/ldap_arginfo.h
new file mode 100644 (file)
index 0000000..b5060e3
--- /dev/null
@@ -0,0 +1,347 @@
+/* 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