librpc/rpc: add dcerpc_fault_from_nt_status()
authorStefan Metzmacher <metze@samba.org>
Wed, 19 Mar 2014 21:22:58 +0000 (22:22 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 3 Jul 2015 00:00:28 +0000 (02:00 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
librpc/rpc/dcerpc_error.c
librpc/rpc/rpc_common.h

index 3366f63e91627ab3b60734cd92d7f2e7a0f16076..2b90334bf724202970f17e3c29a278a4e9f0cbb5 100644 (file)
@@ -129,3 +129,24 @@ _PUBLIC_ NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code)
 
        return werror_to_ntstatus(werr);
 }
+
+_PUBLIC_ uint32_t dcerpc_fault_from_nt_status(NTSTATUS nt_status)
+{
+       int idx = 0;
+       WERROR werr;
+
+       if (NT_STATUS_IS_OK(nt_status)) {
+               return DCERPC_NCA_S_PROTO_ERROR;
+       }
+
+       while (dcerpc_faults[idx].errstr != NULL) {
+               if (NT_STATUS_EQUAL(dcerpc_faults[idx].nt_status, nt_status)) {
+                       return dcerpc_faults[idx].faultcode;
+               }
+               idx++;
+       }
+
+       werr = ntstatus_to_werror(nt_status);
+
+       return W_ERROR_V(werr);
+}
index 61a8eab71d15b84e7c16fc2ca96921f74558930e..4210228d1d1b73d0d55c208131e04dedb7da23bd 100644 (file)
@@ -108,6 +108,7 @@ struct dcerpc_binding;
 
 const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
 NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code);
+uint32_t dcerpc_fault_from_nt_status(NTSTATUS nt_status);
 
 /* The following definitions come from ../librpc/rpc/binding.c  */