Sweden-Number/dlls/wldap32/libldap.h

625 lines
11 KiB
C

/*
* Copyright 2021 Hans Leidekker for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "wine/unixlib.h"
/* compatible with structures defined in ldap.h */
typedef struct bervalU
{
ULONG_PTR bv_len;
char *bv_val;
} BerValueU;
typedef struct
{
int mod_op;
char *mod_type;
union
{
char **modv_strvals;
struct bervalU **modv_bvals;
} mod_vals;
} LDAPModU;
typedef struct
{
char *ldctl_oid;
struct bervalU ldctl_value;
char ldctl_iscritical;
} LDAPControlU;
typedef struct
{
char *attributeType;
char *orderingRule;
int reverseOrder;
} LDAPSortKeyU;
typedef struct
{
int ldvlv_version;
int ldvlv_before_count;
int ldvlv_after_count;
int ldvlv_offset;
int ldvlv_count;
struct bervalU *ldvlv_attrvalue;
struct bervalU *ldvlv_context;
void *ldvlv_extradata;
} LDAPVLVInfoU;
typedef struct
{
int ldapai_info_version;
int ldapai_api_version;
int ldapai_protocol_version;
char **ldapai_extensions;
char *ldapai_vendor_name;
int ldapai_vendor_version;
} LDAPAPIInfoU;
typedef struct
{
int ldapaif_info_version;
char *ldapaif_name;
int ldapaif_version;
} LDAPAPIFeatureInfoU;
typedef struct timevalU
{
LONG_PTR tv_sec;
LONG_PTR tv_usec;
} LDAP_TIMEVALU;
struct sasl_interactive_bind_id
{
unsigned char* user;
ULONG user_len;
unsigned char* domain;
ULONG domain_len;
unsigned char* password;
ULONG password_len;
};
/* FIXME: we should not be directly returning pointers allocated by the Unix libldap */
struct ber_alloc_t_params
{
int options;
void **ret;
};
struct ber_first_element_params
{
void *ber;
unsigned int *ret_len;
char **last;
};
struct ber_flatten_params
{
void *ber;
struct bervalU **berval;
};
struct ber_free_params
{
void *ber;
int freebuf;
};
struct ber_init_params
{
struct bervalU *berval;
void **ret;
};
struct ber_next_element_params
{
void *ber;
unsigned int *ret_len;
char *last;
};
struct ber_peek_tag_params
{
void *ber;
unsigned int *ret_len;
};
struct ber_printf_params
{
void *ber;
char *fmt;
ULONG_PTR arg1;
ULONG_PTR arg2;
};
struct ber_scanf_params
{
void *ber;
char *fmt;
void *arg1;
void *arg2;
};
struct ber_skip_tag_params
{
void *ber;
unsigned int *ret_len;
};
struct ldap_abandon_ext_params
{
void *ld;
int msgid;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_add_ext_params
{
void *ld;
const char *dn;
LDAPModU **attrs;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
ULONG *msg;
};
struct ldap_add_ext_s_params
{
void *ld;
const char *dn;
LDAPModU **attrs;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_compare_ext_params
{
void *ld;
const char *dn;
const char *attrs;
struct bervalU *value;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
ULONG *msg;
};
struct ldap_compare_ext_s_params
{
void *ld;
const char *dn;
const char *attrs;
struct bervalU *value;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_count_entries_params
{
void *ld;
void *chain;
};
struct ldap_count_references_params
{
void *ld;
void *chain;
};
struct ldap_create_sort_control_params
{
void *ld;
LDAPSortKeyU **keylist;
int critical;
LDAPControlU **control;
};
struct ldap_create_vlv_control_params
{
void *ld;
LDAPVLVInfoU *info;
LDAPControlU **control;
};
struct ldap_delete_ext_params
{
void *ld;
const char *dn;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
ULONG *msg;
};
struct ldap_delete_ext_s_params
{
void *ld;
const char *dn;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_dn2ufn_params
{
const char *dn;
char **ret;
};
struct ldap_explode_dn_params
{
const char *dn;
int notypes;
char ***ret;
};
struct ldap_extended_operation_params
{
void *ld;
const char *oid;
struct bervalU *data;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
ULONG *msg;
};
struct ldap_extended_operation_s_params
{
void *ld;
const char *oid;
struct bervalU *data;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
char **retoid;
struct bervalU **retdata;
};
struct ldap_first_attribute_params
{
void *ld;
void *entry;
void **ber;
char **ret;
};
struct ldap_first_entry_params
{
void *ld;
void *chain;
void **ret;
};
struct ldap_first_reference_params
{
void *ld;
void *chain;
void **ret;
};
struct ldap_get_dn_params
{
void *ld;
void *entry;
char **ret;
};
struct ldap_get_option_params
{
void *ld;
int option;
void *value;
};
struct ldap_get_values_len_params
{
void *ld;
void *entry;
const char *attr;
struct bervalU ***ret;
};
struct ldap_initialize_params
{
void **ld;
const char *url;
};
struct ldap_modify_ext_params
{
void *ld;
const char *dn;
LDAPModU **mods;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
ULONG *msg;
};
struct ldap_modify_ext_s_params
{
void *ld;
const char *dn;
LDAPModU **mods;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_next_attribute_params
{
void *ld;
void *entry;
void *ber;
char **ret;
};
struct ldap_next_entry_params
{
void *ld;
void *entry;
void **ret;
};
struct ldap_next_reference_params
{
void *ld;
void *entry;
void **ret;
};
struct ldap_parse_extended_result_params
{
void *ld;
void *result;
char **retoid;
struct bervalU **retdata;
int free;
};
struct ldap_parse_reference_params
{
void *ld;
void *ref;
char ***referrals;
LDAPControlU ***serverctrls;
int free;
};
struct ldap_parse_result_params
{
void *ld;
void *res;
int *errcode;
char **matcheddn;
char **errmsg;
char ***referrals;
LDAPControlU ***serverctrls;
int free;
};
struct ldap_parse_sortresponse_control_params
{
void *ld;
LDAPControlU *ctrl;
int *result;
char **attr;
};
struct ldap_parse_vlvresponse_control_params
{
void *ld;
LDAPControlU *ctrls;
int *target_pos;
int *list_count;
struct bervalU **ctx;
int *errcode;
};
struct ldap_rename_params
{
void *ld;
const char *dn;
const char *newrdn;
const char *newparent;
int delete;
LDAPControlU **clientctrls;
LDAPControlU **serverctrls;
ULONG *msg;
};
struct ldap_rename_s_params
{
void *ld;
const char *dn;
const char *newrdn;
const char *newparent;
int delete;
LDAPControlU **clientctrls;
LDAPControlU **serverctrls;
};
struct ldap_result_params
{
void *ld;
int msgid;
int all;
struct timevalU *timeout;
void **result;
};
struct ldap_sasl_bind_params
{
void *ld;
const char *dn;
const char *mech;
struct bervalU *cred;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
int *msgid;
};
struct ldap_sasl_bind_s_params
{
void *ld;
const char *dn;
const char *mech;
struct bervalU *cred;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
struct bervalU **servercred;
};
struct ldap_sasl_interactive_bind_s_params
{
void *ld;
const char *dn;
const char *mech;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
unsigned int flags;
void *defaults;
};
struct ldap_search_ext_params
{
void *ld;
const char *base;
int scope;
const char *filter;
char **attrs;
int attrsonly;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
struct timevalU *timeout;
int sizelimit;
ULONG *msg;
};
struct ldap_search_ext_s_params
{
void *ld;
const char *base;
int scope;
const char *filter;
char **attrs;
int attrsonly;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
struct timevalU *timeout;
int sizelimit;
void **result;
};
struct ldap_set_option_params
{
void *ld;
int option;
const void *value;
};
struct ldap_start_tls_s_params
{
void *ld;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_unbind_ext_params
{
void *ld;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
struct ldap_unbind_ext_s_params
{
void *ld;
LDAPControlU **serverctrls;
LDAPControlU **clientctrls;
};
enum unix_ldap_funcs
{
unix_ber_alloc_t,
unix_ber_bvecfree,
unix_ber_bvfree,
unix_ber_first_element,
unix_ber_flatten,
unix_ber_free,
unix_ber_init,
unix_ber_next_element,
unix_ber_peek_tag,
unix_ber_printf,
unix_ber_scanf,
unix_ber_skip_tag,
unix_ldap_abandon_ext,
unix_ldap_add_ext,
unix_ldap_add_ext_s,
unix_ldap_compare_ext,
unix_ldap_compare_ext_s,
unix_ldap_control_free,
unix_ldap_controls_free,
unix_ldap_count_entries,
unix_ldap_count_references,
unix_ldap_count_values_len,
unix_ldap_create_sort_control,
unix_ldap_create_vlv_control,
unix_ldap_delete_ext,
unix_ldap_delete_ext_s,
unix_ldap_dn2ufn,
unix_ldap_explode_dn,
unix_ldap_extended_operation,
unix_ldap_extended_operation_s,
unix_ldap_first_attribute,
unix_ldap_first_entry,
unix_ldap_first_reference,
unix_ldap_get_dn,
unix_ldap_get_option,
unix_ldap_get_values_len,
unix_ldap_initialize,
unix_ldap_memfree,
unix_ldap_memvfree,
unix_ldap_modify_ext,
unix_ldap_modify_ext_s,
unix_ldap_msgfree,
unix_ldap_next_attribute,
unix_ldap_next_entry,
unix_ldap_next_reference,
unix_ldap_parse_extended_result,
unix_ldap_parse_reference,
unix_ldap_parse_result,
unix_ldap_parse_sortresponse_control,
unix_ldap_parse_vlvresponse_control,
unix_ldap_rename,
unix_ldap_rename_s,
unix_ldap_result,
unix_ldap_sasl_bind,
unix_ldap_sasl_bind_s,
unix_ldap_sasl_interactive_bind_s,
unix_ldap_search_ext,
unix_ldap_search_ext_s,
unix_ldap_set_option,
unix_ldap_start_tls_s,
unix_ldap_unbind_ext,
unix_ldap_unbind_ext_s,
unix_ldap_value_free_len,
};
extern unixlib_handle_t ldap_handle DECLSPEC_HIDDEN;
#define LDAP_CALL( func, params ) __wine_unix_call( ldap_handle, unix_ ## func, params )