wbclient.h revision 885386b7e3f1c3e74b354576b98a092b0835d64e
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek Unix SMB/CIFS implementation.
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek Winbind client API
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek Copyright (C) Gerald (Jerry) Carter 2007
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek Copyright (C) Volker Lendecke 2009
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek This library is free software; you can redistribute it and/or
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek modify it under the terms of the GNU Lesser General Public
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek License as published by the Free Software Foundation; either
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek version 3 of the License, or (at your option) any later version.
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek This library is distributed in the hope that it will be useful,
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek but WITHOUT ANY WARRANTY; without even the implied warranty of
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek Library General Public License for more details.
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek You should have received a copy of the GNU Lesser General Public License
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek along with this program. If not, see <http://www.gnu.org/licenses/>.
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek/* Define error types */
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * @brief Status codes returned from wbc functions
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_SUCCESS = 0, /**< Successful completion **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_NOT_IMPLEMENTED, /**< Function not implemented **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_UNKNOWN_FAILURE, /**< General failure **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_NO_MEMORY, /**< Memory allocation error **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_INVALID_SID, /**< Invalid SID format **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_INVALID_PARAM, /**< An Invalid parameter was supplied **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_WINBIND_NOT_AVAILABLE, /**< Winbind daemon is not available **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_DOMAIN_NOT_FOUND, /**< Domain is not trusted or cannot be found **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_INVALID_RESPONSE, /**< Winbind returned an invalid response **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_AUTH_ERROR, /**< Authentication failed **/
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_UNKNOWN_USER, /**< User account cannot be found */
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek WBC_ERR_UNKNOWN_GROUP, /**< Group account cannot be found */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov WBC_ERR_PWD_CHANGE_FAILED /**< Password Change has failed */
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek#define WBC_ERROR_IS_OK(x) ((x) == WBC_ERR_SUCCESS)
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * @brief Some useful details about the wbclient library
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.1: Initial version
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.2: Added wbcRemoveUidMapping()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * Added wbcRemoveGidMapping()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.3: Added wbcGetpwsid()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * Added wbcGetSidAliases()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.4: Added wbcSidTypeString()
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov * 0.5: Added wbcChangeTrustCredentials()
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov * 0.6: Made struct wbcInterfaceDetails char* members non-const
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.7: Added wbcSidToStringBuf()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.8: Added wbcSidsToUnixIds() and wbcLookupSids()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.9: Added support for WBC_ID_TYPE_BOTH
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.10: Added wbcPingDc2()
3b08dec5ee634f83ee18e1753d5ffe0ac5e3c458Jakub Hrozek * 0.11: Extended wbcAuthenticateUserEx to provide PAC parsing
struct wbcLibraryDetails {
const char *vendor_version;
struct wbcInterfaceDetails {
char *winbind_version;
char winbind_separator;
char *netbios_name;
char *netbios_domain;
char *dns_domain;
#ifndef WBC_MAXSUBAUTHS
struct wbcDomainSid {
enum wbcSidType {
struct wbcSidWithAttr {
struct wbcGuid {
struct wbcDomainInfo {
char *short_name;
char *dns_name;
struct wbcBlob {
struct wbcNamedBlob {
const char *name;
struct wbcAuthUserParams {
const char *account_name;
const char *domain_name;
const char *workstation_name;
enum wbcAuthUserLevel {
} level;
const char *plaintext;
} hash;
} response;
} password;
struct wbcLogonUserParams {
const char *username;
const char *password;
struct wbcChangePasswordParams {
const char *account_name;
const char *domain_name;
enum wbcChangePasswordLevel {
} level;
const char *plaintext;
} response;
} old_password;
const char *plaintext;
} response;
} new_password;
struct wbcAuthUserInfo {
char *account_name;
char *user_principal;
char *full_name;
char *domain_name;
char *dns_domain_name;
char *logon_server;
char *logon_script;
char *profile_path;
char *home_directory;
char *home_drive;
struct wbcLogonUserInfo {
struct wbcAuthErrorInfo {
char *nt_string;
char *display_string;
struct wbcUserPasswordPolicyInfo {
struct wbcLogoffUserParams {
const char *username;
struct wbcCredentialCacheParams {
const char *account_name;
const char *domain_name;
enum wbcCredentialCacheLevel {
} level;
struct wbcCredentialCacheInfo {
struct wbcDomainControllerInfo {
char *dc_name;
struct wbcDomainControllerInfoEx {
const char *dc_unc;
const char *dc_address;
const char *domain_name;
const char *forest_name;
const char *dc_site_name;
const char *client_site_name;
void wbcFreeMemory(void*);
char **sid_string);
char **guid_string);
const char *name,
char **domain,
char **name,
struct wbcTranslatedName {
char *name;
int domain_index;
int num_rids,
const char **domain_name,
const char ***names,
bool domain_groups_only,
const char ***users);
const char ***groups);
char **pdomain,
char **pfullname,
enum wbcIdType {
union wbcUnixIdContainer {
struct wbcUnixId {
const char *site,
const char *password);
const char *ccfilename);
const char *old_password,
const char *new_password);
char **dcname);
const char *name,