2007-12-21 20:57:34 +03:00
/*
Unix SMB / CIFS implementation .
Winbind client API
Copyright ( C ) Gerald ( Jerry ) Carter 2007
2009-12-21 23:50:43 +03:00
Copyright ( C ) Volker Lendecke 2009
2015-02-21 03:19:32 +03:00
Copyright ( C ) Matthew Newton 2015
2007-12-21 20:57:34 +03:00
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 3 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
Library General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef _WBCLIENT_H
# define _WBCLIENT_H
# include <pwd.h>
2008-01-15 12:24:09 +03:00
# include <grp.h>
/* Define error types */
/**
* @ brief Status codes returned from wbc functions
* */
enum _wbcErrType {
WBC_ERR_SUCCESS = 0 , /**< Successful completion **/
WBC_ERR_NOT_IMPLEMENTED , /**< Function not implemented **/
WBC_ERR_UNKNOWN_FAILURE , /**< General failure **/
WBC_ERR_NO_MEMORY , /**< Memory allocation error **/
WBC_ERR_INVALID_SID , /**< Invalid SID format **/
WBC_ERR_INVALID_PARAM , /**< An Invalid parameter was supplied **/
WBC_ERR_WINBIND_NOT_AVAILABLE , /**< Winbind daemon is not available **/
WBC_ERR_DOMAIN_NOT_FOUND , /**< Domain is not trusted or cannot be found **/
2008-04-17 19:49:53 +04:00
WBC_ERR_INVALID_RESPONSE , /**< Winbind returned an invalid response **/
2008-01-24 16:05:59 +03:00
WBC_ERR_NSS_ERROR , /**< NSS_STATUS error **/
2008-05-13 21:52:20 +04:00
WBC_ERR_AUTH_ERROR , /**< Authentication failed **/
WBC_ERR_UNKNOWN_USER , /**< User account cannot be found */
2008-08-15 04:00:46 +04:00
WBC_ERR_UNKNOWN_GROUP , /**< Group account cannot be found */
WBC_ERR_PWD_CHANGE_FAILED /**< Password Change has failed */
2008-01-15 12:24:09 +03:00
} ;
typedef enum _wbcErrType wbcErr ;
# define WBC_ERROR_IS_OK(x) ((x) == WBC_ERR_SUCCESS)
2008-02-11 18:29:28 +03:00
const char * wbcErrorString ( wbcErr error ) ;
2007-12-21 20:57:34 +03:00
2008-05-23 16:18:42 +04:00
/**
* @ brief Some useful details about the wbclient library
*
2008-10-28 09:37:55 +03:00
* 0.1 : Initial version
* 0.2 : Added wbcRemoveUidMapping ( )
* Added wbcRemoveGidMapping ( )
2009-02-10 22:06:44 +03:00
* 0.3 : Added wbcGetpwsid ( )
2009-02-11 00:59:10 +03:00
* Added wbcGetSidAliases ( )
2009-08-12 19:41:23 +04:00
* 0.4 : Added wbcSidTypeString ( )
2009-10-16 18:07:31 +04:00
* 0.5 : Added wbcChangeTrustCredentials ( )
2009-02-15 13:01:44 +03:00
* 0.6 : Made struct wbcInterfaceDetails char * members non - const
2011-03-04 07:38:04 +03:00
* 0.7 : Added wbcSidToStringBuf ( )
2011-03-23 20:30:32 +03:00
* 0.8 : Added wbcSidsToUnixIds ( ) and wbcLookupSids ( )
2012-04-19 08:59:43 +04:00
* 0.9 : Added support for WBC_ID_TYPE_BOTH
2012-08-10 19:25:14 +04:00
* 0.10 : Added wbcPingDc2 ( )
2012-09-21 06:46:31 +04:00
* 0.11 : Extended wbcAuthenticateUserEx to provide PAC parsing
2015-03-02 02:14:07 +03:00
* 0.12 : Added wbcCtxCreate and friends
2015-08-14 12:55:37 +03:00
* 0.13 : Added wbcCtxUnixIdsToSids and wbcUnixIdsToSids
2017-01-29 19:51:53 +03:00
* 0.14 : Added " authoritative " to wbcAuthErrorInfo
2017-03-20 15:56:03 +03:00
* Added WBC_SID_NAME_LABEL
2018-11-02 20:57:05 +03:00
* 0.15 : Added wbcSetClientProcessName ( )
2008-05-23 16:18:42 +04:00
* */
2011-02-10 13:04:06 +03:00
# define WBCLIENT_MAJOR_VERSION 0
2018-11-02 20:57:05 +03:00
# define WBCLIENT_MINOR_VERSION 15
2008-05-23 16:18:42 +04:00
# define WBCLIENT_VENDOR_VERSION "Samba libwbclient"
struct wbcLibraryDetails {
uint16_t major_version ;
uint16_t minor_version ;
const char * vendor_version ;
} ;
2008-03-28 18:52:18 +03:00
/**
* @ brief Some useful details about the running winbindd
*
* */
struct wbcInterfaceDetails {
uint32_t interface_version ;
2009-02-15 13:01:44 +03:00
char * winbind_version ;
2008-03-28 18:52:18 +03:00
char winbind_separator ;
2009-02-15 13:01:44 +03:00
char * netbios_name ;
char * netbios_domain ;
char * dns_domain ;
2008-03-28 18:52:18 +03:00
} ;
2015-02-21 03:19:32 +03:00
/**
* @ brief Library context data
*
* */
struct wbcContext ;
2007-12-21 20:57:34 +03:00
/*
* Data types used by the Winbind Client API
*/
2008-05-23 15:59:53 +04:00
# ifndef WBC_MAXSUBAUTHS
# define WBC_MAXSUBAUTHS 15 /* max sub authorities in a SID */
2007-12-21 20:57:34 +03:00
# endif
/**
* @ brief Windows Security Identifier
*
* */
struct wbcDomainSid {
uint8_t sid_rev_num ;
uint8_t num_auths ;
uint8_t id_auth [ 6 ] ;
2008-05-23 15:59:53 +04:00
uint32_t sub_auths [ WBC_MAXSUBAUTHS ] ;
2007-12-21 20:57:34 +03:00
} ;
/**
* @ brief Security Identifier type
* */
enum wbcSidType {
WBC_SID_NAME_USE_NONE = 0 ,
WBC_SID_NAME_USER = 1 ,
WBC_SID_NAME_DOM_GRP = 2 ,
WBC_SID_NAME_DOMAIN = 3 ,
WBC_SID_NAME_ALIAS = 4 ,
WBC_SID_NAME_WKN_GRP = 5 ,
WBC_SID_NAME_DELETED = 6 ,
WBC_SID_NAME_INVALID = 7 ,
WBC_SID_NAME_UNKNOWN = 8 ,
2017-03-20 15:56:03 +03:00
WBC_SID_NAME_COMPUTER = 9 ,
WBC_SID_NAME_LABEL = 10
2007-12-21 20:57:34 +03:00
} ;
2008-01-24 16:05:59 +03:00
/**
* @ brief Security Identifier with attributes
* */
struct wbcSidWithAttr {
struct wbcDomainSid sid ;
uint32_t attributes ;
} ;
/* wbcSidWithAttr->attributes */
# define WBC_SID_ATTR_GROUP_MANDATORY 0x00000001
# define WBC_SID_ATTR_GROUP_ENABLED_BY_DEFAULT 0x00000002
# define WBC_SID_ATTR_GROUP_ENABLED 0x00000004
# define WBC_SID_ATTR_GROUP_OWNER 0x00000008
# define WBC_SID_ATTR_GROUP_USEFOR_DENY_ONLY 0x00000010
# define WBC_SID_ATTR_GROUP_RESOURCE 0x20000000
# define WBC_SID_ATTR_GROUP_LOGON_ID 0xC0000000
2008-10-02 15:06:50 +04:00
/**
* @ brief Windows GUID
*
* */
struct wbcGuid {
uint32_t time_low ;
uint16_t time_mid ;
uint16_t time_hi_and_version ;
uint8_t clock_seq [ 2 ] ;
uint8_t node [ 6 ] ;
} ;
2007-12-21 20:57:34 +03:00
/**
* @ brief Domain Information
* */
struct wbcDomainInfo {
char * short_name ;
char * dns_name ;
struct wbcDomainSid sid ;
2008-04-17 20:06:10 +04:00
uint32_t domain_flags ;
uint32_t trust_flags ;
uint32_t trust_type ;
2017-12-19 19:26:46 +03:00
char * trust_routing ;
2007-12-21 20:57:34 +03:00
} ;
2008-04-17 20:06:10 +04:00
/* wbcDomainInfo->domain_flags */
2007-12-21 20:57:34 +03:00
2008-04-22 21:22:59 +04:00
# define WBC_DOMINFO_DOMAIN_UNKNOWN 0x00000000
# define WBC_DOMINFO_DOMAIN_NATIVE 0x00000001
# define WBC_DOMINFO_DOMAIN_AD 0x00000002
# define WBC_DOMINFO_DOMAIN_PRIMARY 0x00000004
2008-04-23 00:29:53 +04:00
# define WBC_DOMINFO_DOMAIN_OFFLINE 0x00000008
2007-12-21 20:57:34 +03:00
2008-04-17 20:06:10 +04:00
/* wbcDomainInfo->trust_flags */
# define WBC_DOMINFO_TRUST_TRANSITIVE 0x00000001
# define WBC_DOMINFO_TRUST_INCOMING 0x00000002
# define WBC_DOMINFO_TRUST_OUTGOING 0x00000004
/* wbcDomainInfo->trust_type */
# define WBC_DOMINFO_TRUSTTYPE_NONE 0x00000000
# define WBC_DOMINFO_TRUSTTYPE_FOREST 0x00000001
# define WBC_DOMINFO_TRUSTTYPE_IN_FOREST 0x00000002
# define WBC_DOMINFO_TRUSTTYPE_EXTERNAL 0x00000003
2017-12-19 19:26:46 +03:00
# define WBC_DOMINFO_TRUSTTYPE_LOCAL 0x00000004
# define WBC_DOMINFO_TRUSTTYPE_WKSTA 0x00000005
# define WBC_DOMINFO_TRUSTTYPE_RWDC 0x00000006
# define WBC_DOMINFO_TRUSTTYPE_RODC 0x00000007
# define WBC_DOMINFO_TRUSTTYPE_PDC 0x00000008
2008-04-17 20:06:10 +04:00
2012-07-19 01:38:47 +04:00
/**
* @ brief Generic Blob
* */
struct wbcBlob {
uint8_t * data ;
size_t length ;
} ;
/**
* @ brief Named Blob
* */
struct wbcNamedBlob {
const char * name ;
uint32_t flags ;
struct wbcBlob blob ;
} ;
2008-01-24 16:05:59 +03:00
/**
* @ brief Auth User Parameters
* */
struct wbcAuthUserParams {
const char * account_name ;
const char * domain_name ;
const char * workstation_name ;
uint32_t flags ;
uint32_t parameter_control ;
enum wbcAuthUserLevel {
WBC_AUTH_USER_LEVEL_PLAIN = 1 ,
WBC_AUTH_USER_LEVEL_HASH = 2 ,
2012-07-19 01:38:47 +04:00
WBC_AUTH_USER_LEVEL_RESPONSE = 3 ,
WBC_AUTH_USER_LEVEL_PAC = 4
2008-01-24 16:05:59 +03:00
} level ;
union {
const char * plaintext ;
struct {
uint8_t nt_hash [ 16 ] ;
uint8_t lm_hash [ 16 ] ;
} hash ;
struct {
uint8_t challenge [ 8 ] ;
uint32_t nt_length ;
uint8_t * nt_data ;
uint32_t lm_length ;
uint8_t * lm_data ;
} response ;
2012-07-19 01:38:47 +04:00
struct wbcBlob pac ;
2008-01-24 16:05:59 +03:00
} password ;
} ;
2008-10-10 17:18:02 +04:00
/**
* @ brief Logon User Parameters
* */
struct wbcLogonUserParams {
const char * username ;
const char * password ;
size_t num_blobs ;
struct wbcNamedBlob * blobs ;
} ;
2008-08-15 04:00:46 +04:00
/**
* @ brief ChangePassword Parameters
* */
struct wbcChangePasswordParams {
const char * account_name ;
const char * domain_name ;
uint32_t flags ;
enum wbcChangePasswordLevel {
WBC_CHANGE_PASSWORD_LEVEL_PLAIN = 1 ,
WBC_CHANGE_PASSWORD_LEVEL_RESPONSE = 2
} level ;
union {
const char * plaintext ;
struct {
uint32_t old_nt_hash_enc_length ;
uint8_t * old_nt_hash_enc_data ;
uint32_t old_lm_hash_enc_length ;
uint8_t * old_lm_hash_enc_data ;
} response ;
} old_password ;
union {
const char * plaintext ;
struct {
uint32_t nt_length ;
uint8_t * nt_data ;
uint32_t lm_length ;
uint8_t * lm_data ;
} response ;
} new_password ;
} ;
2008-01-24 16:05:59 +03:00
/* wbcAuthUserParams->parameter_control */
# define WBC_MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 0x00000002
# define WBC_MSV1_0_UPDATE_LOGON_STATISTICS 0x00000004
# define WBC_MSV1_0_RETURN_USER_PARAMETERS 0x00000008
# define WBC_MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x00000020
# define WBC_MSV1_0_RETURN_PROFILE_PATH 0x00000200
# define WBC_MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x00000800
2015-12-09 20:47:47 +03:00
# define WBC_MSV1_0_ALLOW_MSVCHAPV2 0x00010000
2008-01-24 16:05:59 +03:00
/* wbcAuthUserParams->flags */
# define WBC_AUTH_PARAM_FLAGS_INTERACTIVE_LOGON 0x00000001
/**
* @ brief Auth User Information
*
* Some of the strings are maybe NULL
* */
struct wbcAuthUserInfo {
uint32_t user_flags ;
char * account_name ;
char * user_principal ;
char * full_name ;
char * domain_name ;
char * dns_domain_name ;
uint32_t acct_flags ;
uint8_t user_session_key [ 16 ] ;
uint8_t lm_session_key [ 8 ] ;
uint16_t logon_count ;
uint16_t bad_password_count ;
uint64_t logon_time ;
uint64_t logoff_time ;
uint64_t kickoff_time ;
uint64_t pass_last_set_time ;
uint64_t pass_can_change_time ;
uint64_t pass_must_change_time ;
char * logon_server ;
char * logon_script ;
char * profile_path ;
char * home_directory ;
char * home_drive ;
/*
* the 1 st one is the account sid
* the 2 nd one is the primary_group sid
* followed by the rest of the groups
*/
uint32_t num_sids ;
struct wbcSidWithAttr * sids ;
} ;
2008-10-10 17:18:02 +04:00
/**
* @ brief Logon User Information
*
* Some of the strings are maybe NULL
* */
struct wbcLogonUserInfo {
struct wbcAuthUserInfo * info ;
size_t num_blobs ;
struct wbcNamedBlob * blobs ;
} ;
2008-01-24 16:05:59 +03:00
/* wbcAuthUserInfo->user_flags */
# define WBC_AUTH_USER_INFO_GUEST 0x00000001
# define WBC_AUTH_USER_INFO_NOENCRYPTION 0x00000002
# define WBC_AUTH_USER_INFO_CACHED_ACCOUNT 0x00000004
# define WBC_AUTH_USER_INFO_USED_LM_PASSWORD 0x00000008
2008-10-28 09:36:36 +03:00
# define WBC_AUTH_USER_INFO_EXTRA_SIDS 0x00000020
2008-01-24 16:05:59 +03:00
# define WBC_AUTH_USER_INFO_SUBAUTH_SESSION_KEY 0x00000040
# define WBC_AUTH_USER_INFO_SERVER_TRUST_ACCOUNT 0x00000080
# define WBC_AUTH_USER_INFO_NTLMV2_ENABLED 0x00000100
# define WBC_AUTH_USER_INFO_RESOURCE_GROUPS 0x00000200
# define WBC_AUTH_USER_INFO_PROFILE_PATH_RETURNED 0x00000400
# define WBC_AUTH_USER_INFO_GRACE_LOGON 0x01000000
/* wbcAuthUserInfo->acct_flags */
# define WBC_ACB_DISABLED 0x00000001 /* 1 User account disabled */
# define WBC_ACB_HOMDIRREQ 0x00000002 /* 1 Home directory required */
# define WBC_ACB_PWNOTREQ 0x00000004 /* 1 User password not required */
# define WBC_ACB_TEMPDUP 0x00000008 /* 1 Temporary duplicate account */
# define WBC_ACB_NORMAL 0x00000010 /* 1 Normal user account */
# define WBC_ACB_MNS 0x00000020 /* 1 MNS logon user account */
# define WBC_ACB_DOMTRUST 0x00000040 /* 1 Interdomain trust account */
# define WBC_ACB_WSTRUST 0x00000080 /* 1 Workstation trust account */
# define WBC_ACB_SVRTRUST 0x00000100 /* 1 Server trust account */
# define WBC_ACB_PWNOEXP 0x00000200 /* 1 User password does not expire */
# define WBC_ACB_AUTOLOCK 0x00000400 /* 1 Account auto locked */
# define WBC_ACB_ENC_TXT_PWD_ALLOWED 0x00000800 /* 1 Encryped text password is allowed */
# define WBC_ACB_SMARTCARD_REQUIRED 0x00001000 /* 1 Smart Card required */
# define WBC_ACB_TRUSTED_FOR_DELEGATION 0x00002000 /* 1 Trusted for Delegation */
# define WBC_ACB_NOT_DELEGATED 0x00004000 /* 1 Not delegated */
# define WBC_ACB_USE_DES_KEY_ONLY 0x00008000 /* 1 Use DES key only */
# define WBC_ACB_DONT_REQUIRE_PREAUTH 0x00010000 /* 1 Preauth not required */
2008-10-28 09:36:36 +03:00
# define WBC_ACB_PW_EXPIRED 0x00020000 /* 1 Password Expired */
2008-01-24 16:05:59 +03:00
# define WBC_ACB_NO_AUTH_DATA_REQD 0x00080000 /* 1 = No authorization data required */
struct wbcAuthErrorInfo {
uint32_t nt_status ;
char * nt_string ;
int32_t pam_error ;
char * display_string ;
2017-01-29 19:51:53 +03:00
uint8_t authoritative ;
2008-01-24 16:05:59 +03:00
} ;
2008-08-15 04:00:46 +04:00
/**
* @ brief User Password Policy Information
* */
/* wbcUserPasswordPolicyInfo->password_properties */
# define WBC_DOMAIN_PASSWORD_COMPLEX 0x00000001
# define WBC_DOMAIN_PASSWORD_NO_ANON_CHANGE 0x00000002
# define WBC_DOMAIN_PASSWORD_NO_CLEAR_CHANGE 0x00000004
# define WBC_DOMAIN_PASSWORD_LOCKOUT_ADMINS 0x00000008
# define WBC_DOMAIN_PASSWORD_STORE_CLEARTEXT 0x00000010
# define WBC_DOMAIN_REFUSE_PASSWORD_CHANGE 0x00000020
struct wbcUserPasswordPolicyInfo {
uint32_t min_length_password ;
uint32_t password_history ;
uint32_t password_properties ;
uint64_t expire ;
uint64_t min_passwordage ;
} ;
/**
* @ brief Change Password Reject Reason
* */
enum wbcPasswordChangeRejectReason {
2009-10-08 12:57:51 +04:00
WBC_PWD_CHANGE_NO_ERROR = 0 ,
WBC_PWD_CHANGE_PASSWORD_TOO_SHORT = 1 ,
WBC_PWD_CHANGE_PWD_IN_HISTORY = 2 ,
WBC_PWD_CHANGE_USERNAME_IN_PASSWORD = 3 ,
WBC_PWD_CHANGE_FULLNAME_IN_PASSWORD = 4 ,
WBC_PWD_CHANGE_NOT_COMPLEX = 5 ,
WBC_PWD_CHANGE_MACHINE_NOT_DEFAULT = 6 ,
WBC_PWD_CHANGE_FAILED_BY_FILTER = 7 ,
WBC_PWD_CHANGE_PASSWORD_TOO_LONG = 8
2008-08-15 04:00:46 +04:00
} ;
2009-10-12 18:28:34 +04:00
/* Note: this defines exist for compatibility reasons with existing code */
# define WBC_PWD_CHANGE_REJECT_OTHER WBC_PWD_CHANGE_NO_ERROR
# define WBC_PWD_CHANGE_REJECT_TOO_SHORT WBC_PWD_CHANGE_PASSWORD_TOO_SHORT
# define WBC_PWD_CHANGE_REJECT_IN_HISTORY WBC_PWD_CHANGE_PWD_IN_HISTORY
# define WBC_PWD_CHANGE_REJECT_COMPLEXITY WBC_PWD_CHANGE_NOT_COMPLEX
2008-08-15 15:53:23 +04:00
/**
* @ brief Logoff User Parameters
* */
struct wbcLogoffUserParams {
const char * username ;
size_t num_blobs ;
struct wbcNamedBlob * blobs ;
} ;
2008-11-23 17:16:17 +03:00
/** @brief Credential cache log-on parameters
*
*/
struct wbcCredentialCacheParams {
const char * account_name ;
const char * domain_name ;
enum wbcCredentialCacheLevel {
WBC_CREDENTIAL_CACHE_LEVEL_NTLMSSP = 1
} level ;
size_t num_blobs ;
struct wbcNamedBlob * blobs ;
} ;
/** @brief Info returned by credential cache auth
*
*/
struct wbcCredentialCacheInfo {
size_t num_blobs ;
struct wbcNamedBlob * blobs ;
} ;
2008-05-13 21:52:20 +04:00
/*
* DomainControllerInfo struct
*/
struct wbcDomainControllerInfo {
char * dc_name ;
} ;
2008-09-27 05:29:01 +04:00
/*
* DomainControllerInfoEx struct
*/
struct wbcDomainControllerInfoEx {
const char * dc_unc ;
const char * dc_address ;
uint16_t dc_address_type ;
struct wbcGuid * domain_guid ;
const char * domain_name ;
const char * forest_name ;
uint32_t dc_flags ;
const char * dc_site_name ;
const char * client_site_name ;
} ;
2008-05-13 21:52:20 +04:00
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* Memory Management
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2008-12-09 15:18:06 +03:00
/**
* @ brief Free library allocated memory
*
2009-04-14 18:27:05 +04:00
* @ param * Pointer to free
2008-12-09 15:18:06 +03:00
*
* @ return void
* */
2007-12-21 20:57:34 +03:00
void wbcFreeMemory ( void * ) ;
2015-02-21 03:19:32 +03:00
/**********************************************************
* Context Management
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/**
* @ brief Create a new wbcContext context
*
* @ return wbcContext
* */
struct wbcContext * wbcCtxCreate ( void ) ;
/**
* @ brief Free a library context
*
* @ param ctx wbcContext to free
*
* @ return void
* */
void wbcCtxFree ( struct wbcContext * ctx ) ;
2007-12-21 20:57:34 +03:00
/*
* Utility functions for dealing with SIDs
*/
2009-08-12 19:41:23 +04:00
/**
* @ brief Get a string representation of the SID type
*
* @ param type type of the SID
*
* @ return string representation of the SID type
*/
const char * wbcSidTypeString ( enum wbcSidType type ) ;
2011-03-04 07:38:04 +03:00
# define WBC_SID_STRING_BUFLEN (15*11+25)
/*
* @ brief Print a sid into a buffer
*
* @ param sid Binary Security Identifier
* @ param buf Target buffer
* @ param buflen Target buffer length
*
* @ return Resulting string length .
*/
int wbcSidToStringBuf ( const struct wbcDomainSid * sid , char * buf , int buflen ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a binary SID to a character string
*
* @ param sid Binary Security Identifier
* @ param * * sid_string Resulting character string
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcSidToString ( const struct wbcDomainSid * sid ,
char * * sid_string ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a character string to a binary SID
*
2009-04-14 18:27:05 +04:00
* @ param * sid_string Character string in the form of S - . . .
2008-12-09 15:18:06 +03:00
* @ param sid Resulting binary SID
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcStringToSid ( const char * sid_string ,
struct wbcDomainSid * sid ) ;
2008-10-02 15:11:31 +04:00
/*
* Utility functions for dealing with GUIDs
*/
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a binary GUID to a character string
*
* @ param guid Binary Guid
* @ param * * guid_string Resulting character string
*
* @ return # wbcErr
* */
2008-10-02 15:11:31 +04:00
wbcErr wbcGuidToString ( const struct wbcGuid * guid ,
char * * guid_string ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a character string to a binary GUID
*
2009-04-14 18:27:05 +04:00
* @ param * guid_string Character string
2008-12-09 15:18:06 +03:00
* @ param guid Resulting binary GUID
*
* @ return # wbcErr
* */
2008-10-02 15:11:31 +04:00
wbcErr wbcStringToGuid ( const char * guid_string ,
struct wbcGuid * guid ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Ping winbindd to see if the daemon is running
*
* @ param * ctx wbclient Context
*
* @ return # wbcErr
* */
wbcErr wbcCtxPing ( struct wbcContext * ctx ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Ping winbindd to see if the daemon is running
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcPing ( void ) ;
2008-05-23 16:18:42 +04:00
wbcErr wbcLibraryDetails ( struct wbcLibraryDetails * * details ) ;
2015-02-22 01:30:11 +03:00
wbcErr wbcCtxInterfaceDetails ( struct wbcContext * ctx ,
struct wbcInterfaceDetails * * details ) ;
2008-03-28 18:52:18 +03:00
wbcErr wbcInterfaceDetails ( struct wbcInterfaceDetails * * details ) ;
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* Name / SID conversion
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a domain and name to SID
*
* @ param * ctx wbclient Context
* @ param dom_name Domain name ( possibly " " )
* @ param name User or group name
* @ param * sid Pointer to the resolved domain SID
* @ param * name_type Pointer to the SID type
*
* @ return # wbcErr
* */
wbcErr wbcCtxLookupName ( struct wbcContext * ctx ,
const char * dom_name ,
const char * name ,
struct wbcDomainSid * sid ,
enum wbcSidType * name_type ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a domain and name to SID
*
2009-04-14 18:27:05 +04:00
* @ param dom_name Domain name ( possibly " " )
2008-12-09 15:18:06 +03:00
* @ param name User or group name
* @ param * sid Pointer to the resolved domain SID
* @ param * name_type Pointer to the SID type
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcLookupName ( const char * dom_name ,
const char * name ,
struct wbcDomainSid * sid ,
enum wbcSidType * name_type ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a SID to a domain and name
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * sid Pointer to the domain SID to be resolved
* @ param domain Resolved Domain name ( possibly " " )
* @ param name Resolved User or group name
* @ param * name_type Pointer to the resolved SID type
*
* @ return # wbcErr
* */
wbcErr wbcCtxLookupSid ( struct wbcContext * ctx ,
const struct wbcDomainSid * sid ,
char * * domain ,
char * * name ,
enum wbcSidType * name_type ) ;
/**
* @ brief Convert a SID to a domain and name
*
* @ param * sid Pointer to the domain SID to be resolved
2009-04-14 18:27:05 +04:00
* @ param domain Resolved Domain name ( possibly " " )
* @ param name Resolved User or group name
* @ param * name_type Pointer to the resolved SID type
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcLookupSid ( const struct wbcDomainSid * sid ,
char * * domain ,
char * * name ,
enum wbcSidType * name_type ) ;
2011-03-08 20:01:21 +03:00
struct wbcTranslatedName {
enum wbcSidType type ;
char * name ;
int domain_index ;
} ;
2015-02-22 01:30:11 +03:00
wbcErr wbcCtxLookupSids ( struct wbcContext * ctx ,
const struct wbcDomainSid * sids , int num_sids ,
struct wbcDomainInfo * * domains , int * num_domains ,
struct wbcTranslatedName * * names ) ;
2011-03-08 20:01:21 +03:00
wbcErr wbcLookupSids ( const struct wbcDomainSid * sids , int num_sids ,
struct wbcDomainInfo * * domains , int * num_domains ,
struct wbcTranslatedName * * names ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Translate a collection of RIDs within a domain to names
*/
wbcErr wbcCtxLookupRids ( struct wbcContext * ctx ,
struct wbcDomainSid * dom_sid ,
int num_rids ,
uint32_t * rids ,
const char * * domain_name ,
const char * * * names ,
enum wbcSidType * * types ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Translate a collection of RIDs within a domain to names
*/
2007-12-21 20:57:34 +03:00
wbcErr wbcLookupRids ( struct wbcDomainSid * dom_sid ,
int num_rids ,
uint32_t * rids ,
const char * * domain_name ,
const char * * * names ,
enum wbcSidType * * types ) ;
2015-02-22 01:30:11 +03:00
/*
* @ brief Get the groups a user belongs to
* */
wbcErr wbcCtxLookupUserSids ( struct wbcContext * ctx ,
const struct wbcDomainSid * user_sid ,
bool domain_groups_only ,
uint32_t * num_sids ,
struct wbcDomainSid * * sids ) ;
2008-12-09 15:18:06 +03:00
/*
* @ brief Get the groups a user belongs to
* */
2008-03-21 12:18:54 +03:00
wbcErr wbcLookupUserSids ( const struct wbcDomainSid * user_sid ,
bool domain_groups_only ,
uint32_t * num_sids ,
struct wbcDomainSid * * sids ) ;
2015-02-22 01:30:11 +03:00
/*
* @ brief Get alias membership for sids
* */
wbcErr wbcCtxGetSidAliases ( struct wbcContext * ctx ,
const struct wbcDomainSid * dom_sid ,
struct wbcDomainSid * sids ,
uint32_t num_sids ,
uint32_t * * alias_rids ,
uint32_t * num_alias_rids ) ;
2009-02-11 00:59:10 +03:00
/*
* @ brief Get alias membership for sids
* */
wbcErr wbcGetSidAliases ( const struct wbcDomainSid * dom_sid ,
struct wbcDomainSid * sids ,
uint32_t num_sids ,
uint32_t * * alias_rids ,
uint32_t * num_alias_rids ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Lists Users
* */
wbcErr wbcCtxListUsers ( struct wbcContext * ctx ,
const char * domain_name ,
uint32_t * num_users ,
const char * * * users ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Lists Users
* */
2008-03-24 22:31:37 +03:00
wbcErr wbcListUsers ( const char * domain_name ,
uint32_t * num_users ,
const char * * * users ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Lists Groups
* */
wbcErr wbcCtxListGroups ( struct wbcContext * ctx ,
const char * domain_name ,
uint32_t * num_groups ,
const char * * * groups ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Lists Groups
* */
2008-03-24 22:31:37 +03:00
wbcErr wbcListGroups ( const char * domain_name ,
uint32_t * num_groups ,
const char * * * groups ) ;
2015-02-22 01:30:11 +03:00
wbcErr wbcCtxGetDisplayName ( struct wbcContext * ctx ,
const struct wbcDomainSid * sid ,
char * * pdomain ,
char * * pfullname ,
enum wbcSidType * pname_type ) ;
2008-10-21 19:11:29 +04:00
wbcErr wbcGetDisplayName ( const struct wbcDomainSid * sid ,
char * * pdomain ,
char * * pfullname ,
enum wbcSidType * pname_type ) ;
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* SID / uid / gid Mappings
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a Windows SID to a Unix uid , allocating an uid if needed
*
* @ param * ctx wbclient Context
* @ param * sid Pointer to the domain SID to be resolved
* @ param * puid Pointer to the resolved uid_t value
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxSidToUid ( struct wbcContext * ctx ,
const struct wbcDomainSid * sid ,
uid_t * puid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Windows SID to a Unix uid , allocating an uid if needed
*
* @ param * sid Pointer to the domain SID to be resolved
* @ param * puid Pointer to the resolved uid_t value
*
* @ return # wbcErr
*
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcSidToUid ( const struct wbcDomainSid * sid ,
uid_t * puid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Windows SID to a Unix uid if there already is a mapping
*
* @ param * sid Pointer to the domain SID to be resolved
* @ param * puid Pointer to the resolved uid_t value
*
* @ return # wbcErr
*
* */
2008-11-23 02:57:33 +03:00
wbcErr wbcQuerySidToUid ( const struct wbcDomainSid * sid ,
uid_t * puid ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a Unix uid to a Windows SID , allocating a SID if needed
*
* @ param * ctx wbclient Context
* @ param uid Unix uid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxUidToSid ( struct wbcContext * ctx , uid_t uid ,
struct wbcDomainSid * sid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Unix uid to a Windows SID , allocating a SID if needed
*
* @ param uid Unix uid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcUidToSid ( uid_t uid ,
struct wbcDomainSid * sid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Unix uid to a Windows SID if there already is a mapping
*
* @ param uid Unix uid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
2008-11-23 02:57:33 +03:00
wbcErr wbcQueryUidToSid ( uid_t uid ,
struct wbcDomainSid * sid ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a Windows SID to a Unix gid , allocating a gid if needed
*
* @ param * ctx wbclient Context
* @ param * sid Pointer to the domain SID to be resolved
* @ param * pgid Pointer to the resolved gid_t value
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxSidToGid ( struct wbcContext * ctx ,
const struct wbcDomainSid * sid ,
gid_t * pgid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Windows SID to a Unix gid , allocating a gid if needed
*
* @ param * sid Pointer to the domain SID to be resolved
* @ param * pgid Pointer to the resolved gid_t value
*
* @ return # wbcErr
*
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcSidToGid ( const struct wbcDomainSid * sid ,
gid_t * pgid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Windows SID to a Unix gid if there already is a mapping
*
* @ param * sid Pointer to the domain SID to be resolved
* @ param * pgid Pointer to the resolved gid_t value
*
* @ return # wbcErr
*
* */
2008-11-23 02:57:33 +03:00
wbcErr wbcQuerySidToGid ( const struct wbcDomainSid * sid ,
gid_t * pgid ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a Unix gid to a Windows SID , allocating a SID if needed
*
* @ param * ctx wbclient Context
* @ param gid Unix gid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxGidToSid ( struct wbcContext * ctx , gid_t gid ,
struct wbcDomainSid * sid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Unix gid to a Windows SID , allocating a SID if needed
*
* @ param gid Unix gid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGidToSid ( gid_t gid ,
struct wbcDomainSid * sid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Convert a Unix gid to a Windows SID if there already is a mapping
*
* @ param gid Unix gid to be resolved
* @ param * sid Pointer to the resolved domain SID
*
* @ return # wbcErr
*
* */
2008-11-23 02:57:33 +03:00
wbcErr wbcQueryGidToSid ( gid_t gid ,
struct wbcDomainSid * sid ) ;
2011-03-23 20:30:32 +03:00
enum wbcIdType {
WBC_ID_TYPE_NOT_SPECIFIED ,
WBC_ID_TYPE_UID ,
2011-07-26 05:05:38 +04:00
WBC_ID_TYPE_GID ,
WBC_ID_TYPE_BOTH
2011-03-23 20:30:32 +03:00
} ;
union wbcUnixIdContainer {
uid_t uid ;
gid_t gid ;
} ;
struct wbcUnixId {
enum wbcIdType type ;
union wbcUnixIdContainer id ;
} ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Convert a list of sids to unix ids
*
* @ param * ctx wbclient Context
* @ param sids Pointer to an array of SIDs to convert
* @ param num_sids Number of SIDs
* @ param ids Preallocated output array for translated IDs
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxSidsToUnixIds ( struct wbcContext * ctx ,
const struct wbcDomainSid * sids , uint32_t num_sids ,
struct wbcUnixId * ids ) ;
2011-03-23 20:30:32 +03:00
/**
* @ brief Convert a list of sids to unix ids
*
* @ param sids Pointer to an array of SIDs to convert
* @ param num_sids Number of SIDs
* @ param ids Preallocated output array for translated IDs
*
* @ return # wbcErr
*
* */
wbcErr wbcSidsToUnixIds ( const struct wbcDomainSid * sids , uint32_t num_sids ,
struct wbcUnixId * ids ) ;
2015-08-14 12:55:37 +03:00
wbcErr wbcCtxUnixIdsToSids ( struct wbcContext * ctx ,
const struct wbcUnixId * ids , uint32_t num_ids ,
struct wbcDomainSid * sids ) ;
wbcErr wbcUnixIdsToSids ( const struct wbcUnixId * ids , uint32_t num_ids ,
struct wbcDomainSid * sids ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Obtain a new uid from Winbind
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * puid Pointer to the allocated uid
*
* @ return # wbcErr
* */
wbcErr wbcCtxAllocateUid ( struct wbcContext * ctx , uid_t * puid ) ;
/**
* @ brief Obtain a new uid from Winbind
*
* @ param * puid Pointer to the allocated uid
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcAllocateUid ( uid_t * puid ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Obtain a new gid from Winbind
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * pgid Pointer to the allocated gid
*
* @ return # wbcErr
* */
wbcErr wbcCtxAllocateGid ( struct wbcContext * ctx , gid_t * pgid ) ;
/**
* @ brief Obtain a new gid from Winbind
*
* @ param * pgid Pointer to the allocated gid
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2008-04-06 13:27:36 +04:00
wbcErr wbcAllocateGid ( gid_t * pgid ) ;
2007-12-21 20:57:34 +03:00
2011-02-10 13:04:32 +03:00
/**
* @ brief Set an user id mapping
*
* @ param uid Uid of the desired mapping .
2013-05-16 17:06:49 +04:00
* @ param * sid Pointer to the sid of the desired mapping .
2011-02-10 13:04:32 +03:00
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:32 +03:00
* */
wbcErr wbcSetUidMapping ( uid_t uid , const struct wbcDomainSid * sid ) ;
2011-02-10 13:04:27 +03:00
/**
* @ brief Set a group id mapping
*
* @ param gid Gid of the desired mapping .
2013-05-16 17:06:49 +04:00
* @ param * sid Pointer to the sid of the desired mapping .
2011-02-10 13:04:27 +03:00
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:27 +03:00
* */
wbcErr wbcSetGidMapping ( gid_t gid , const struct wbcDomainSid * sid ) ;
2011-02-10 13:04:23 +03:00
/**
* @ brief Remove a user id mapping
*
* @ param uid Uid of the mapping to remove .
* @ param * sid Pointer to the sid of the mapping to remove .
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:23 +03:00
* */
wbcErr wbcRemoveUidMapping ( uid_t uid , const struct wbcDomainSid * sid ) ;
2011-02-10 13:04:19 +03:00
/**
* @ brief Remove a group id mapping
*
* @ param gid Gid of the mapping to remove .
* @ param * sid Pointer to the sid of the mapping to remove .
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:19 +03:00
* */
wbcErr wbcRemoveGidMapping ( gid_t gid , const struct wbcDomainSid * sid ) ;
2011-02-10 13:04:15 +03:00
/**
* @ brief Set the highwater mark for allocated uids .
*
* @ param uid_hwm The new uid highwater mark value
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:15 +03:00
* */
wbcErr wbcSetUidHwm ( uid_t uid_hwm ) ;
2011-02-10 13:04:11 +03:00
/**
* @ brief Set the highwater mark for allocated gids .
*
* @ param gid_hwm The new gid highwater mark value
*
* @ return # wbcErr
2011-02-10 14:48:01 +03:00
*
* @ deprecated This method is not impemented any more and should
* be removed in the next major version change .
2011-02-10 13:04:11 +03:00
* */
wbcErr wbcSetGidHwm ( gid_t gid_hwm ) ;
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* NSS Lookup User / Group details
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on username
*
* @ param * ctx wbclient Context
* @ param * name Username to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetpwnam ( struct wbcContext * ctx ,
const char * name , struct passwd * * pwd ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on username
*
* @ param * name Username to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetpwnam ( const char * name , struct passwd * * pwd ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on uid
*
* @ param * ctx wbclient Context
* @ param uid Uid to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetpwuid ( struct wbcContext * ctx ,
uid_t uid , struct passwd * * pwd ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on uid
*
* @ param uid Uid to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetpwuid ( uid_t uid , struct passwd * * pwd ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on sid
*
* @ param * ctx wbclient Context
* @ param sid Sid to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetpwsid ( struct wbcContext * ctx ,
struct wbcDomainSid * sid , struct passwd * * pwd ) ;
2009-02-10 22:06:44 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on sid
*
* @ param sid Sid to lookup
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcGetpwsid ( struct wbcDomainSid * sid , struct passwd * * pwd ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on username
*
* @ param * ctx wbclient Context
* @ param * name Username to lookup
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetgrnam ( struct wbcContext * ctx ,
const char * name , struct group * * grp ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on username
*
* @ param * name Username to lookup
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetgrnam ( const char * name , struct group * * grp ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on uid
*
* @ param * ctx wbclient Context
* @ param gid Uid to lookup
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetgrgid ( struct wbcContext * ctx ,
gid_t gid , struct group * * grp ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Fill in a struct passwd * for a domain user based
* on uid
*
* @ param gid Uid to lookup
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetgrgid ( gid_t gid , struct group * * grp ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Reset the passwd iterator
*
* @ param * ctx wbclient Context
*
* @ return # wbcErr
* */
wbcErr wbcCtxSetpwent ( struct wbcContext * ctx ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Reset the passwd iterator
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcSetpwent ( void ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Close the passwd iterator
*
* @ param * ctx wbclient Context
*
* @ return # wbcErr
* */
wbcErr wbcCtxEndpwent ( struct wbcContext * ctx ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Close the passwd iterator
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcEndpwent ( void ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Return the next struct passwd * entry from the pwent iterator
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * * pwd Pointer to resulting struct passwd * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetpwent ( struct wbcContext * ctx , struct passwd * * pwd ) ;
/**
* @ brief Return the next struct passwd * entry from the pwent iterator
*
* @ param * * pwd Pointer to resulting struct passwd * from the query .
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetpwent ( struct passwd * * pwd ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Reset the group iterator
*
* @ param * ctx wbclient Context
*
* @ return # wbcErr
* */
wbcErr wbcCtxSetgrent ( struct wbcContext * ctx ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Reset the group iterator
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcSetgrent ( void ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Close the group iterator
*
* @ param * ctx wbclient Context
*
* @ return # wbcErr
* */
wbcErr wbcCtxEndgrent ( struct wbcContext * ctx ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Close the group iterator
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcEndgrent ( void ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Return the next struct group * entry from the pwent iterator
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetgrent ( struct wbcContext * ctx , struct group * * grp ) ;
/**
* @ brief Return the next struct group * entry from the pwent iterator
*
* @ param * * grp Pointer to resulting struct group * from the query .
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcGetgrent ( struct group * * grp ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Return the next struct group * entry from the pwent iterator
*
* This is similar to # wbcGetgrent , just that the member list is empty
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param * * grp Pointer to resulting struct group * from the query .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetgrlist ( struct wbcContext * ctx , struct group * * grp ) ;
/**
* @ brief Return the next struct group * entry from the pwent iterator
*
* This is similar to # wbcGetgrent , just that the member list is empty
*
* @ param * * grp Pointer to resulting struct group * from the query .
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2008-11-23 13:17:42 +03:00
wbcErr wbcGetgrlist ( struct group * * grp ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Return the unix group array belonging to the given user
*
* @ param * ctx wbclient Context
* @ param * account The given user name
* @ param * num_groups Number of elements returned in the groups array
* @ param * * _groups Pointer to resulting gid_t array .
*
* @ return # wbcErr
* */
wbcErr wbcCtxGetGroups ( struct wbcContext * ctx ,
const char * account ,
uint32_t * num_groups ,
gid_t * * _groups ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Return the unix group array belonging to the given user
*
* @ param * account The given user name
* @ param * num_groups Number of elements returned in the groups array
* @ param * * _groups Pointer to resulting gid_t array .
*
* @ return # wbcErr
* */
2008-04-06 13:55:57 +04:00
wbcErr wbcGetGroups ( const char * account ,
uint32_t * num_groups ,
gid_t * * _groups ) ;
2007-12-21 20:57:34 +03:00
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* Lookup Domain information
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2008-12-09 15:18:06 +03:00
/**
* @ brief Lookup the current status of a trusted domain
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param domain The domain to query
*
* @ param dinfo A pointer to store the returned domain_info struct .
*
* @ return # wbcErr
* */
wbcErr wbcCtxDomainInfo ( struct wbcContext * ctx ,
const char * domain ,
struct wbcDomainInfo * * dinfo ) ;
/**
* @ brief Lookup the current status of a trusted domain
*
* @ param domain The domain to query
2010-05-05 17:33:09 +04:00
*
* @ param dinfo A pointer to store the returned domain_info struct .
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
* */
2007-12-21 20:57:34 +03:00
wbcErr wbcDomainInfo ( const char * domain ,
2010-05-05 17:33:09 +04:00
struct wbcDomainInfo * * dinfo ) ;
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Lookup the currently contacted DCs
*
* @ param * ctx wbclient Context
* @ param domain The domain to query
*
* @ param num_dcs Number of DCs currently known
* @ param dc_names Names of the currently known DCs
* @ param dc_ips IP addresses of the currently known DCs
*
* @ return # wbcErr
* */
wbcErr wbcCtxDcInfo ( struct wbcContext * ctx ,
const char * domain , size_t * num_dcs ,
const char * * * dc_names , const char * * * dc_ips ) ;
2011-01-10 19:25:00 +03:00
/**
* @ brief Lookup the currently contacted DCs
*
* @ param domain The domain to query
*
* @ param num_dcs Number of DCs currently known
* @ param dc_names Names of the currently known DCs
* @ param dc_ips IP addresses of the currently known DCs
*
* @ return # wbcErr
* */
wbcErr wbcDcInfo ( const char * domain , size_t * num_dcs ,
const char * * * dc_names , const char * * * dc_ips ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Enumerate the domain trusts known by Winbind
*
* @ param * ctx wbclient Context
* @ param * * domains Pointer to the allocated domain list array
* @ param * num_domains Pointer to number of domains returned
*
* @ return # wbcErr
* */
wbcErr wbcCtxListTrusts ( struct wbcContext * ctx ,
struct wbcDomainInfo * * domains ,
size_t * num_domains ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Enumerate the domain trusts known by Winbind
*
* @ param * * domains Pointer to the allocated domain list array
* @ param * num_domains Pointer to number of domains returned
*
* @ return # wbcErr
* */
2008-12-16 11:30:16 +03:00
wbcErr wbcListTrusts ( struct wbcDomainInfo * * domains ,
2008-04-17 20:06:10 +04:00
size_t * num_domains ) ;
2008-05-13 21:52:20 +04:00
/* Flags for wbcLookupDomainController */
# define WBC_LOOKUP_DC_FORCE_REDISCOVERY 0x00000001
# define WBC_LOOKUP_DC_DS_REQUIRED 0x00000010
# define WBC_LOOKUP_DC_DS_PREFERRED 0x00000020
# define WBC_LOOKUP_DC_GC_SERVER_REQUIRED 0x00000040
# define WBC_LOOKUP_DC_PDC_REQUIRED 0x00000080
# define WBC_LOOKUP_DC_BACKGROUND_ONLY 0x00000100
# define WBC_LOOKUP_DC_IP_REQUIRED 0x00000200
# define WBC_LOOKUP_DC_KDC_REQUIRED 0x00000400
# define WBC_LOOKUP_DC_TIMESERV_REQUIRED 0x00000800
# define WBC_LOOKUP_DC_WRITABLE_REQUIRED 0x00001000
# define WBC_LOOKUP_DC_GOOD_TIMESERV_PREFERRED 0x00002000
# define WBC_LOOKUP_DC_AVOID_SELF 0x00004000
# define WBC_LOOKUP_DC_ONLY_LDAP_NEEDED 0x00008000
# define WBC_LOOKUP_DC_IS_FLAT_NAME 0x00010000
# define WBC_LOOKUP_DC_IS_DNS_NAME 0x00020000
# define WBC_LOOKUP_DC_TRY_NEXTCLOSEST_SITE 0x00040000
# define WBC_LOOKUP_DC_DS_6_REQUIRED 0x00080000
# define WBC_LOOKUP_DC_RETURN_DNS_NAME 0x40000000
# define WBC_LOOKUP_DC_RETURN_FLAT_NAME 0x80000000
2015-02-22 01:30:11 +03:00
/**
* @ brief Enumerate the domain trusts known by Winbind
*
* @ param * ctx wbclient Context
* @ param domain Name of the domain to query for a DC
* @ param flags Bit flags used to control the domain location query
* @ param * dc_info Pointer to the returned domain controller information
*
* @ return # wbcErr
* */
wbcErr wbcCtxLookupDomainController ( struct wbcContext * ctx ,
const char * domain ,
uint32_t flags ,
struct wbcDomainControllerInfo * * dc_info ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Enumerate the domain trusts known by Winbind
*
* @ param domain Name of the domain to query for a DC
* @ param flags Bit flags used to control the domain location query
* @ param * dc_info Pointer to the returned domain controller information
*
* @ return # wbcErr
* */
2008-05-13 21:52:20 +04:00
wbcErr wbcLookupDomainController ( const char * domain ,
uint32_t flags ,
struct wbcDomainControllerInfo * * dc_info ) ;
2008-09-27 05:29:01 +04:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Get extended domain controller information
*
* @ param * ctx wbclient Context
* @ param domain Name of the domain to query for a DC
* @ param guid Guid of the domain to query for a DC
* @ param site Site of the domain to query for a DC
* @ param flags Bit flags used to control the domain location query
* @ param * dc_info Pointer to the returned extended domain controller information
*
* @ return # wbcErr
* */
wbcErr wbcCtxLookupDomainControllerEx ( struct wbcContext * ctx ,
const char * domain ,
struct wbcGuid * guid ,
const char * site ,
uint32_t flags ,
struct wbcDomainControllerInfoEx * * dc_info ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Get extended domain controller information
*
* @ param domain Name of the domain to query for a DC
* @ param guid Guid of the domain to query for a DC
* @ param site Site of the domain to query for a DC
* @ param flags Bit flags used to control the domain location query
* @ param * dc_info Pointer to the returned extended domain controller information
*
* @ return # wbcErr
* */
2008-09-27 05:29:01 +04:00
wbcErr wbcLookupDomainControllerEx ( const char * domain ,
struct wbcGuid * guid ,
const char * site ,
uint32_t flags ,
struct wbcDomainControllerInfoEx * * dc_info ) ;
2008-04-17 20:06:10 +04:00
2008-12-09 15:18:06 +03:00
/**********************************************************
2007-12-21 20:57:34 +03:00
* Athenticate functions
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Authenticate a username / password pair
*
* @ param * ctx wbclient Context
* @ param username Name of user to authenticate
* @ param password Clear text password os user
*
* @ return # wbcErr
* */
wbcErr wbcCtxAuthenticateUser ( struct wbcContext * ctx ,
const char * username ,
const char * password ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Authenticate a username / password pair
*
* @ param username Name of user to authenticate
* @ param password Clear text password os user
*
* @ return # wbcErr
* */
2008-01-03 14:10:27 +03:00
wbcErr wbcAuthenticateUser ( const char * username ,
2007-12-21 20:57:34 +03:00
const char * password ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Authenticate with more detailed information
*
* @ param * ctx wbclient Context
* @ param params Input parameters , WBC_AUTH_USER_LEVEL_HASH
* is not supported yet
* @ param info Output details on WBC_ERR_SUCCESS
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcCtxAuthenticateUserEx ( struct wbcContext * ctx ,
const struct wbcAuthUserParams * params ,
struct wbcAuthUserInfo * * info ,
struct wbcAuthErrorInfo * * error ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Authenticate with more detailed information
*
* @ param params Input parameters , WBC_AUTH_USER_LEVEL_HASH
* is not supported yet
* @ param info Output details on WBC_ERR_SUCCESS
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
2008-01-24 16:05:59 +03:00
wbcErr wbcAuthenticateUserEx ( const struct wbcAuthUserParams * params ,
struct wbcAuthUserInfo * * info ,
struct wbcAuthErrorInfo * * error ) ;
2007-12-21 20:57:34 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Logon a User
*
* @ param [ in ] * ctx wbclient Context
* @ param [ in ] params Pointer to a wbcLogonUserParams structure
* @ param [ out ] info Pointer to a pointer to a wbcLogonUserInfo structure
* @ param [ out ] error Pointer to a pointer to a wbcAuthErrorInfo structure
* @ param [ out ] policy Pointer to a pointer to a wbcUserPasswordPolicyInfo structure
*
* @ return # wbcErr
* */
wbcErr wbcCtxLogonUser ( struct wbcContext * ctx ,
const struct wbcLogonUserParams * params ,
struct wbcLogonUserInfo * * info ,
struct wbcAuthErrorInfo * * error ,
struct wbcUserPasswordPolicyInfo * * policy ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Logon a User
*
* @ param [ in ] params Pointer to a wbcLogonUserParams structure
* @ param [ out ] info Pointer to a pointer to a wbcLogonUserInfo structure
* @ param [ out ] error Pointer to a pointer to a wbcAuthErrorInfo structure
* @ param [ out ] policy Pointer to a pointer to a wbcUserPasswordPolicyInfo structure
*
* @ return # wbcErr
* */
2008-10-10 17:18:02 +04:00
wbcErr wbcLogonUser ( const struct wbcLogonUserParams * params ,
struct wbcLogonUserInfo * * info ,
struct wbcAuthErrorInfo * * error ,
struct wbcUserPasswordPolicyInfo * * policy ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger a logoff notification to Winbind for a specific user
*
* @ param * ctx wbclient Context
* @ param username Name of user to remove from Winbind ' s list of
* logged on users .
* @ param uid Uid assigned to the username
* @ param ccfilename Absolute path to the Krb5 credentials cache to
* be removed
*
* @ return # wbcErr
* */
wbcErr wbcCtxLogoffUser ( struct wbcContext * ctx ,
const char * username , uid_t uid ,
const char * ccfilename ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Trigger a logoff notification to Winbind for a specific user
*
* @ param username Name of user to remove from Winbind ' s list of
* logged on users .
* @ param uid Uid assigned to the username
* @ param ccfilename Absolute path to the Krb5 credentials cache to
* be removed
*
* @ return # wbcErr
* */
2008-05-13 21:52:20 +04:00
wbcErr wbcLogoffUser ( const char * username ,
uid_t uid ,
const char * ccfilename ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger an extended logoff notification to Winbind for a specific user
*
* @ param * ctx wbclient Context
* @ param params A wbcLogoffUserParams structure
* @ param error User output details on error
*
* @ return # wbcErr
* */
wbcErr wbcCtxLogoffUserEx ( struct wbcContext * ctx ,
const struct wbcLogoffUserParams * params ,
struct wbcAuthErrorInfo * * error ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Trigger an extended logoff notification to Winbind for a specific user
*
* @ param params A wbcLogoffUserParams structure
* @ param error User output details on error
*
* @ return # wbcErr
* */
2008-08-15 15:53:23 +04:00
wbcErr wbcLogoffUserEx ( const struct wbcLogoffUserParams * params ,
struct wbcAuthErrorInfo * * error ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Change a password for a user
*
* @ param * ctx wbclient Context
* @ param username Name of user to authenticate
* @ param old_password Old clear text password of user
* @ param new_password New clear text password of user
*
* @ return # wbcErr
* */
wbcErr wbcCtxChangeUserPassword ( struct wbcContext * ctx ,
const char * username ,
const char * old_password ,
const char * new_password ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Change a password for a user
*
* @ param username Name of user to authenticate
* @ param old_password Old clear text password of user
* @ param new_password New clear text password of user
*
* @ return # wbcErr
* */
2008-08-15 04:00:46 +04:00
wbcErr wbcChangeUserPassword ( const char * username ,
const char * old_password ,
const char * new_password ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Change a password for a user with more detailed information upon
* failure
*
* @ param * ctx wbclient Context
* @ param params Input parameters
* @ param error User output details on WBC_ERR_PWD_CHANGE_FAILED
* @ param reject_reason New password reject reason on WBC_ERR_PWD_CHANGE_FAILED
* @ param policy Password policy output details on WBC_ERR_PWD_CHANGE_FAILED
*
* @ return # wbcErr
* */
wbcErr wbcCtxChangeUserPasswordEx ( struct wbcContext * ctx ,
const struct wbcChangePasswordParams * params ,
struct wbcAuthErrorInfo * * error ,
enum wbcPasswordChangeRejectReason * reject_reason ,
struct wbcUserPasswordPolicyInfo * * policy ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Change a password for a user with more detailed information upon
* failure
*
* @ param params Input parameters
* @ param error User output details on WBC_ERR_PWD_CHANGE_FAILED
* @ param reject_reason New password reject reason on WBC_ERR_PWD_CHANGE_FAILED
* @ param policy Password policy output details on WBC_ERR_PWD_CHANGE_FAILED
*
* @ return # wbcErr
* */
2008-08-15 04:00:46 +04:00
wbcErr wbcChangeUserPasswordEx ( const struct wbcChangePasswordParams * params ,
struct wbcAuthErrorInfo * * error ,
enum wbcPasswordChangeRejectReason * reject_reason ,
struct wbcUserPasswordPolicyInfo * * policy ) ;
2008-05-13 21:52:20 +04:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Authenticate a user with cached credentials
*
* @ param * ctx wbclient Context
* @ param * params Pointer to a wbcCredentialCacheParams structure
* @ param * * info Pointer to a pointer to a wbcCredentialCacheInfo structure
* @ param * * error Pointer to a pointer to a wbcAuthErrorInfo structure
*
* @ return # wbcErr
* */
wbcErr wbcCtxCredentialCache ( struct wbcContext * ctx ,
struct wbcCredentialCacheParams * params ,
struct wbcCredentialCacheInfo * * info ,
struct wbcAuthErrorInfo * * error ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Authenticate a user with cached credentials
*
* @ param * params Pointer to a wbcCredentialCacheParams structure
* @ param * * info Pointer to a pointer to a wbcCredentialCacheInfo structure
* @ param * * error Pointer to a pointer to a wbcAuthErrorInfo structure
*
* @ return # wbcErr
* */
2008-11-23 17:16:17 +03:00
wbcErr wbcCredentialCache ( struct wbcCredentialCacheParams * params ,
struct wbcCredentialCacheInfo * * info ,
struct wbcAuthErrorInfo * * error ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Save a password with winbind for doing wbcCredentialCache ( ) later
*
* @ param * ctx wbclient Context
* @ param * user Username
* @ param * password Password
*
* @ return # wbcErr
* */
wbcErr wbcCtxCredentialSave ( struct wbcContext * ctx ,
const char * user , const char * password ) ;
2010-01-09 22:20:36 +03:00
/**
* @ brief Save a password with winbind for doing wbcCredentialCache ( ) later
*
* @ param * user Username
* @ param * password Password
*
* @ return # wbcErr
* */
wbcErr wbcCredentialSave ( const char * user , const char * password ) ;
2008-12-09 15:18:06 +03:00
/**********************************************************
2008-04-14 11:31:46 +04:00
* Resolve functions
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2015-02-22 01:30:11 +03:00
/**
* @ brief Resolve a NetbiosName via WINS
*
* @ param * ctx wbclient Context
* @ param name Name to resolve
* @ param * ip Pointer to the ip address string
*
* @ return # wbcErr
* */
wbcErr wbcCtxResolveWinsByName ( struct wbcContext * ctx ,
const char * name , char * * ip ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Resolve a NetbiosName via WINS
*
* @ param name Name to resolve
* @ param * ip Pointer to the ip address string
*
* @ return # wbcErr
* */
2008-04-21 00:13:40 +04:00
wbcErr wbcResolveWinsByName ( const char * name , char * * ip ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Resolve an IP address via WINS into a NetbiosName
*
2015-02-22 01:30:11 +03:00
* @ param * ctx wbclient Context
* @ param ip The ip address string
* @ param * name Pointer to the name
*
* @ return # wbcErr
*
* */
wbcErr wbcCtxResolveWinsByIP ( struct wbcContext * ctx ,
const char * ip , char * * name ) ;
/**
* @ brief Resolve an IP address via WINS into a NetbiosName
*
* @ param ip The ip address string
* @ param * name Pointer to the name
2008-12-09 15:18:06 +03:00
*
* @ return # wbcErr
*
* */
2008-04-21 00:17:39 +04:00
wbcErr wbcResolveWinsByIP ( const char * ip , char * * name ) ;
2008-04-14 11:31:46 +04:00
2008-12-09 15:18:06 +03:00
/**********************************************************
2008-04-17 01:35:12 +04:00
* Trusted domain functions
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger a verification of the trust credentials of a specific domain
*
* @ param * ctx wbclient Context
* @ param * domain The name of the domain .
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcCtxCheckTrustCredentials ( struct wbcContext * ctx , const char * domain ,
struct wbcAuthErrorInfo * * error ) ;
2008-12-09 15:18:06 +03:00
/**
* @ brief Trigger a verification of the trust credentials of a specific domain
*
2009-10-06 19:45:24 +04:00
* @ param * domain The name of the domain .
2008-12-09 15:18:06 +03:00
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
2008-04-17 01:35:12 +04:00
wbcErr wbcCheckTrustCredentials ( const char * domain ,
struct wbcAuthErrorInfo * * error ) ;
2008-12-09 15:18:06 +03:00
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger a change of the trust credentials for a specific domain
*
* @ param * ctx wbclient Context
* @ param * domain The name of the domain .
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcCtxChangeTrustCredentials ( struct wbcContext * ctx , const char * domain ,
struct wbcAuthErrorInfo * * error ) ;
2009-10-06 20:15:08 +04:00
/**
* @ brief Trigger a change of the trust credentials for a specific domain
*
* @ param * domain The name of the domain .
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcChangeTrustCredentials ( const char * domain ,
struct wbcAuthErrorInfo * * error ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger a no - op call through the NETLOGON pipe . Low - cost
* version of wbcCheckTrustCredentials
*
* @ param * ctx wbclient Context
* @ param * domain The name of the domain , only NULL for the default domain is
* supported yet . Other values than NULL will result in
* WBC_ERR_NOT_IMPLEMENTED .
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcCtxPingDc ( struct wbcContext * ctx , const char * domain ,
struct wbcAuthErrorInfo * * error ) ;
2009-12-21 23:50:43 +03:00
/**
* @ brief Trigger a no - op call through the NETLOGON pipe . Low - cost
* version of wbcCheckTrustCredentials
*
* @ param * domain The name of the domain , only NULL for the default domain is
* supported yet . Other values than NULL will result in
* WBC_ERR_NOT_IMPLEMENTED .
* @ param error Output details on WBC_ERR_AUTH_ERROR
*
* @ return # wbcErr
* */
wbcErr wbcPingDc ( const char * domain , struct wbcAuthErrorInfo * * error ) ;
2015-02-22 01:30:11 +03:00
/**
* @ brief Trigger a no - op call through the NETLOGON pipe . Low - cost
* version of wbcCheckTrustCredentials
*
* @ param * ctx wbclient Context
* @ param * domain The name of the domain , only NULL for the default domain is
* supported yet . Other values than NULL will result in
* WBC_ERR_NOT_IMPLEMENTED .
* @ param error Output details on WBC_ERR_AUTH_ERROR
* @ param dcname DC that was attempted to ping
*
* @ return # wbcErr
* */
wbcErr wbcCtxPingDc2 ( struct wbcContext * ctx , const char * domain ,
struct wbcAuthErrorInfo * * error ,
char * * dcname ) ;
2012-08-10 19:25:14 +04:00
/**
* @ brief Trigger a no - op call through the NETLOGON pipe . Low - cost
* version of wbcCheckTrustCredentials
*
* @ param * domain The name of the domain , only NULL for the default domain is
* supported yet . Other values than NULL will result in
* WBC_ERR_NOT_IMPLEMENTED .
* @ param error Output details on WBC_ERR_AUTH_ERROR
* @ param dcname DC that was attempted to ping
*
* @ return # wbcErr
* */
wbcErr wbcPingDc2 ( const char * domain , struct wbcAuthErrorInfo * * error ,
char * * dcname ) ;
2008-12-09 15:18:06 +03:00
/**********************************************************
2008-09-25 03:31:12 +04:00
* Helper functions
2008-12-09 15:18:06 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/**
* @ brief Initialize a named blob and add to list of blobs
*
* @ param [ in , out ] num_blobs Pointer to the number of blobs
* @ param [ in , out ] blobs Pointer to an array of blobs
* @ param [ in ] name Name of the new named blob
* @ param [ in ] flags Flags of the new named blob
* @ param [ in ] data Blob data of new blob
* @ param [ in ] length Blob data length of new blob
*
* @ return # wbcErr
* */
2008-09-25 03:31:12 +04:00
wbcErr wbcAddNamedBlob ( size_t * num_blobs ,
struct wbcNamedBlob * * blobs ,
const char * name ,
uint32_t flags ,
uint8_t * data ,
size_t length ) ;
2008-05-13 21:52:20 +04:00
2018-11-02 20:57:05 +03:00
/**
* @ brief Set the name of the process which call wbclient .
*
* By default wbclient will figure out the process name . This should just be
* used in special cases like pam modules or similar . Only alpha numeric
* chars in ASCII are allowed .
*
* This function should only be called once !
*
* @ param [ in ] name The process name to set .
*/
void wbcSetClientProcessName ( const char * name ) ;
2007-12-21 20:57:34 +03:00
# endif /* _WBCLIENT_H */