s3-nterr: add NT_STATUS_RPC_NT_CALL_FAILED.
[ira/wip.git] / source3 / libsmb / nterr.c
index cf443f23390d4d0227720e75f57fb8022f896a83..e9084c0f4dce4e56a10787596d7add0a6da5de43 100644 (file)
@@ -534,10 +534,13 @@ static const nt_err_code_struct nt_errs[] =
        { "NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE },
        { "NT_STATUS_DS_NO_MORE_RIDS", NT_STATUS_DS_NO_MORE_RIDS },
        { "NT_STATUS_NOT_A_REPARSE_POINT", NT_STATUS_NOT_A_REPARSE_POINT },
+       { "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED },
         { "NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES },
        { "STATUS_MORE_ENTRIES", STATUS_MORE_ENTRIES },
        { "STATUS_SOME_UNMAPPED", STATUS_SOME_UNMAPPED },
        { "STATUS_NO_MORE_FILES", STATUS_NO_MORE_FILES },
+       { "NT_STATUS_RPC_CANNOT_SUPPORT", NT_STATUS_RPC_CANNOT_SUPPORT },
+       { "NT_STATUS_RPC_NT_CALL_FAILED", NT_STATUS_RPC_NT_CALL_FAILED },
        { NULL, NT_STATUS(0) }
 };
 
@@ -651,11 +654,16 @@ const char *nt_errstr(NTSTATUS nt_code)
        char *result;
 
 #ifdef HAVE_LDAP
-        if (NT_STATUS_TYPE(nt_code) == NT_STATUS_TYPE_LDAP) {
+        if (NT_STATUS_IS_LDAP(nt_code)) {
                 return ldap_err2string(NT_STATUS_LDAP_CODE(nt_code));
        }
 #endif
 
+       if (NT_STATUS_IS_DOS(nt_code)) {
+               return smb_dos_err_name(NT_STATUS_DOS_CLASS(nt_code),
+                                       NT_STATUS_DOS_CODE(nt_code));
+       }
+
        while (nt_errs[idx].nt_errstr != NULL) {
                if (NT_STATUS_EQUAL(nt_errs[idx].nt_errcode, nt_code)) {
                         return nt_errs[idx].nt_errstr;
@@ -716,7 +724,7 @@ const char *get_nt_error_c_code(NTSTATUS nt_code)
  Returns the NT_STATUS constant matching the string supplied (as an NTSTATUS)
  *****************************************************************************/
 
-NTSTATUS nt_status_string_to_code(char *nt_status_str)
+NTSTATUS nt_status_string_to_code(const char *nt_status_str)
 {
         int idx = 0;