mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
libwbclient: Add wbcPingDc2
Add wbcPingDc2 that optionally returns the DC that was attempted to ping. wbcPing is implemented as a wrapper around wbcPingDc2. Signed-off-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
bd23c8f1ce
commit
bdb1f23e1d
76
nsswitch/libwbclient/ABI/wbclient-0.10.sigs
Normal file
76
nsswitch/libwbclient/ABI/wbclient-0.10.sigs
Normal file
@ -0,0 +1,76 @@
|
||||
wbcAddNamedBlob: wbcErr (size_t *, struct wbcNamedBlob **, const char *, uint32_t, uint8_t *, size_t)
|
||||
wbcAllocateGid: wbcErr (gid_t *)
|
||||
wbcAllocateMemory: void *(size_t, size_t, void (*)(void *))
|
||||
wbcAllocateStringArray: const char **(int)
|
||||
wbcAllocateUid: wbcErr (uid_t *)
|
||||
wbcAuthenticateUser: wbcErr (const char *, const char *)
|
||||
wbcAuthenticateUserEx: wbcErr (const struct wbcAuthUserParams *, struct wbcAuthUserInfo **, struct wbcAuthErrorInfo **)
|
||||
wbcChangeTrustCredentials: wbcErr (const char *, struct wbcAuthErrorInfo **)
|
||||
wbcChangeUserPassword: wbcErr (const char *, const char *, const char *)
|
||||
wbcChangeUserPasswordEx: wbcErr (const struct wbcChangePasswordParams *, struct wbcAuthErrorInfo **, enum wbcPasswordChangeRejectReason *, struct wbcUserPasswordPolicyInfo **)
|
||||
wbcCheckTrustCredentials: wbcErr (const char *, struct wbcAuthErrorInfo **)
|
||||
wbcCredentialCache: wbcErr (struct wbcCredentialCacheParams *, struct wbcCredentialCacheInfo **, struct wbcAuthErrorInfo **)
|
||||
wbcCredentialSave: wbcErr (const char *, const char *)
|
||||
wbcDcInfo: wbcErr (const char *, size_t *, const char ***, const char ***)
|
||||
wbcDomainInfo: wbcErr (const char *, struct wbcDomainInfo **)
|
||||
wbcEndgrent: wbcErr (void)
|
||||
wbcEndpwent: wbcErr (void)
|
||||
wbcErrorString: const char *(wbcErr)
|
||||
wbcFreeMemory: void (void *)
|
||||
wbcGetDisplayName: wbcErr (const struct wbcDomainSid *, char **, char **, enum wbcSidType *)
|
||||
wbcGetGroups: wbcErr (const char *, uint32_t *, gid_t **)
|
||||
wbcGetSidAliases: wbcErr (const struct wbcDomainSid *, struct wbcDomainSid *, uint32_t, uint32_t **, uint32_t *)
|
||||
wbcGetgrent: wbcErr (struct group **)
|
||||
wbcGetgrgid: wbcErr (gid_t, struct group **)
|
||||
wbcGetgrlist: wbcErr (struct group **)
|
||||
wbcGetgrnam: wbcErr (const char *, struct group **)
|
||||
wbcGetpwent: wbcErr (struct passwd **)
|
||||
wbcGetpwnam: wbcErr (const char *, struct passwd **)
|
||||
wbcGetpwsid: wbcErr (struct wbcDomainSid *, struct passwd **)
|
||||
wbcGetpwuid: wbcErr (uid_t, struct passwd **)
|
||||
wbcGidToSid: wbcErr (gid_t, struct wbcDomainSid *)
|
||||
wbcGuidToString: wbcErr (const struct wbcGuid *, char **)
|
||||
wbcInterfaceDetails: wbcErr (struct wbcInterfaceDetails **)
|
||||
wbcLibraryDetails: wbcErr (struct wbcLibraryDetails **)
|
||||
wbcListGroups: wbcErr (const char *, uint32_t *, const char ***)
|
||||
wbcListTrusts: wbcErr (struct wbcDomainInfo **, size_t *)
|
||||
wbcListUsers: wbcErr (const char *, uint32_t *, const char ***)
|
||||
wbcLogoffUser: wbcErr (const char *, uid_t, const char *)
|
||||
wbcLogoffUserEx: wbcErr (const struct wbcLogoffUserParams *, struct wbcAuthErrorInfo **)
|
||||
wbcLogonUser: wbcErr (const struct wbcLogonUserParams *, struct wbcLogonUserInfo **, struct wbcAuthErrorInfo **, struct wbcUserPasswordPolicyInfo **)
|
||||
wbcLookupDomainController: wbcErr (const char *, uint32_t, struct wbcDomainControllerInfo **)
|
||||
wbcLookupDomainControllerEx: wbcErr (const char *, struct wbcGuid *, const char *, uint32_t, struct wbcDomainControllerInfoEx **)
|
||||
wbcLookupName: wbcErr (const char *, const char *, struct wbcDomainSid *, enum wbcSidType *)
|
||||
wbcLookupRids: wbcErr (struct wbcDomainSid *, int, uint32_t *, const char **, const char ***, enum wbcSidType **)
|
||||
wbcLookupSid: wbcErr (const struct wbcDomainSid *, char **, char **, enum wbcSidType *)
|
||||
wbcLookupSids: wbcErr (const struct wbcDomainSid *, int, struct wbcDomainInfo **, int *, struct wbcTranslatedName **)
|
||||
wbcLookupUserSids: wbcErr (const struct wbcDomainSid *, bool, uint32_t *, struct wbcDomainSid **)
|
||||
wbcPing: wbcErr (void)
|
||||
wbcPingDc: wbcErr (const char *, struct wbcAuthErrorInfo **)
|
||||
wbcPingDc2: wbcErr (const char *, struct wbcAuthErrorInfo **, char **)
|
||||
wbcQueryGidToSid: wbcErr (gid_t, struct wbcDomainSid *)
|
||||
wbcQuerySidToGid: wbcErr (const struct wbcDomainSid *, gid_t *)
|
||||
wbcQuerySidToUid: wbcErr (const struct wbcDomainSid *, uid_t *)
|
||||
wbcQueryUidToSid: wbcErr (uid_t, struct wbcDomainSid *)
|
||||
wbcRemoveGidMapping: wbcErr (gid_t, const struct wbcDomainSid *)
|
||||
wbcRemoveUidMapping: wbcErr (uid_t, const struct wbcDomainSid *)
|
||||
wbcRequestResponse: wbcErr (int, struct winbindd_request *, struct winbindd_response *)
|
||||
wbcRequestResponsePriv: wbcErr (int, struct winbindd_request *, struct winbindd_response *)
|
||||
wbcResolveWinsByIP: wbcErr (const char *, char **)
|
||||
wbcResolveWinsByName: wbcErr (const char *, char **)
|
||||
wbcSetGidHwm: wbcErr (gid_t)
|
||||
wbcSetGidMapping: wbcErr (gid_t, const struct wbcDomainSid *)
|
||||
wbcSetUidHwm: wbcErr (uid_t)
|
||||
wbcSetUidMapping: wbcErr (uid_t, const struct wbcDomainSid *)
|
||||
wbcSetgrent: wbcErr (void)
|
||||
wbcSetpwent: wbcErr (void)
|
||||
wbcSidToGid: wbcErr (const struct wbcDomainSid *, gid_t *)
|
||||
wbcSidToString: wbcErr (const struct wbcDomainSid *, char **)
|
||||
wbcSidToStringBuf: int (const struct wbcDomainSid *, char *, int)
|
||||
wbcSidToUid: wbcErr (const struct wbcDomainSid *, uid_t *)
|
||||
wbcSidTypeString: const char *(enum wbcSidType)
|
||||
wbcSidsToUnixIds: wbcErr (const struct wbcDomainSid *, uint32_t, struct wbcUnixId *)
|
||||
wbcStrDup: char *(const char *)
|
||||
wbcStringToGuid: wbcErr (const char *, struct wbcGuid *)
|
||||
wbcStringToSid: wbcErr (const char *, struct wbcDomainSid *)
|
||||
wbcUidToSid: wbcErr (uid_t, struct wbcDomainSid *)
|
@ -611,6 +611,16 @@ wbcErr wbcChangeTrustCredentials(const char *domain,
|
||||
* wbcCheckTrustCredentials
|
||||
*/
|
||||
wbcErr wbcPingDc(const char *domain, struct wbcAuthErrorInfo **error)
|
||||
{
|
||||
return wbcPingDc2(domain, error, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Trigger a no-op NETLOGON call. Lightweight version of
|
||||
* wbcCheckTrustCredentials, optionally return attempted DC
|
||||
*/
|
||||
wbcErr wbcPingDc2(const char *domain, struct wbcAuthErrorInfo **error,
|
||||
char **dcname)
|
||||
{
|
||||
struct winbindd_request request;
|
||||
struct winbindd_response response;
|
||||
@ -633,6 +643,17 @@ wbcErr wbcPingDc(const char *domain, struct wbcAuthErrorInfo **error)
|
||||
wbc_status = wbcRequestResponse(WINBINDD_PING_DC,
|
||||
&request,
|
||||
&response);
|
||||
|
||||
if (dcname && response.extra_data.data) {
|
||||
size_t len;
|
||||
|
||||
len = response.length - sizeof(struct winbindd_response);
|
||||
*dcname = wbcAllocateMemory(1, len, NULL);
|
||||
BAIL_ON_PTR_ERROR(*dcname, wbc_status);
|
||||
|
||||
strlcpy(*dcname, response.extra_data.data, len);
|
||||
}
|
||||
|
||||
if (response.data.auth.nt_status != 0) {
|
||||
if (error) {
|
||||
wbc_status = wbc_create_error_info(&response,
|
||||
|
@ -69,9 +69,10 @@ const char *wbcErrorString(wbcErr error);
|
||||
* 0.7: Added wbcSidToStringBuf()
|
||||
* 0.8: Added wbcSidsToUnixIds() and wbcLookupSids()
|
||||
* 0.9: Added support for WBC_ID_TYPE_BOTH
|
||||
* 0.10: Added wbcPingDc2()
|
||||
**/
|
||||
#define WBCLIENT_MAJOR_VERSION 0
|
||||
#define WBCLIENT_MINOR_VERSION 9
|
||||
#define WBCLIENT_MINOR_VERSION 10
|
||||
#define WBCLIENT_VENDOR_VERSION "Samba libwbclient"
|
||||
struct wbcLibraryDetails {
|
||||
uint16_t major_version;
|
||||
@ -1327,6 +1328,21 @@ wbcErr wbcChangeTrustCredentials(const char *domain,
|
||||
**/
|
||||
wbcErr wbcPingDc(const char *domain, struct wbcAuthErrorInfo **error);
|
||||
|
||||
/**
|
||||
* @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);
|
||||
|
||||
/**********************************************************
|
||||
* Helper functions
|
||||
**********************************************************/
|
||||
|
@ -3,7 +3,7 @@
|
||||
import Options, Logs
|
||||
|
||||
# Remember to also update wbclient.h
|
||||
VERSION="0.9"
|
||||
VERSION="0.10"
|
||||
|
||||
# It may be useful at some point to allow Samba to build against a
|
||||
# system libwbclient, such as the one provided by Likewise. To to
|
||||
|
Loading…
Reference in New Issue
Block a user