diff options
author | Volker Lendecke <vlendec@samba.org> | 2006-08-18 15:10:46 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:38:42 -0500 |
commit | 41a4496b20e510dc47fe2b816196cef6fe937cea (patch) | |
tree | 7a0b8a73a40de63c75bfe910fe49d7a267c134b1 /source3/libads | |
parent | 0b56ff1ea3bab9f5aebf43e3dfc4847b3f912553 (diff) | |
download | samba-41a4496b20e510dc47fe2b816196cef6fe937cea.tar.gz samba-41a4496b20e510dc47fe2b816196cef6fe937cea.tar.bz2 samba-41a4496b20e510dc47fe2b816196cef6fe937cea.zip |
r17606: Introduce krb5_to_ntstatus.
Thanks to Michael Adam <ma@sernet.de>
Volker
(This used to be commit 6e641c90b8f52a822a83701cdf305c60416d7f0c)
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/ads_status.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/source3/libads/ads_status.c b/source3/libads/ads_status.c index 5a4165c2f9..00427936ad 100644 --- a/source3/libads/ads_status.c +++ b/source3/libads/ads_status.c @@ -69,30 +69,29 @@ ADS_STATUS ads_build_nt_error(enum ads_error_type etype, */ NTSTATUS ads_ntstatus(ADS_STATUS status) { - if (status.error_type == ENUM_ADS_ERROR_NT){ + switch (status.error_type) { + case ENUM_ADS_ERROR_NT: return status.err.nt_status; - } - if (status.error_type == ENUM_ADS_ERROR_SYSTEM) { + case ENUM_ADS_ERROR_SYSTEM: return map_nt_error_from_unix(status.err.rc); - } #ifdef HAVE_LDAP - if ((status.error_type == ENUM_ADS_ERROR_LDAP) - && (status.err.rc == LDAP_NO_MEMORY)) { - return NT_STATUS_NO_MEMORY; - } + case ENUM_ADS_ERROR_LDAP: + if (status.err.rc == LDAP_NO_MEMORY) { + return NT_STATUS_NO_MEMORY; + } + break; #endif #ifdef HAVE_KRB5 - if (status.error_type == ENUM_ADS_ERROR_KRB5) { - if (status.err.rc == KRB5KDC_ERR_PREAUTH_FAILED) { - return NT_STATUS_LOGON_FAILURE; - } else if (status.err.rc == KRB5_KDC_UNREACH) { - return NT_STATUS_NO_LOGON_SERVERS; - } else if (status.err.rc == KRB5KRB_AP_ERR_SKEW) { - return NT_STATUS_TIME_DIFFERENCE_AT_DC; - } - } + case ENUM_ADS_ERROR_KRB5: + return krb5_to_ntstatus(status.err.rc); #endif - if (ADS_ERR_OK(status)) return NT_STATUS_OK; + default: + break; + } + + if (ADS_ERR_OK(status)) { + return NT_STATUS_OK; + } return NT_STATUS_UNSUCCESSFUL; } |