Line data Source code
1 : /*
2 : Unix SMB/CIFS implementation.
3 : client error handling routines
4 : Copyright (C) Andrew Tridgell 1994-1998
5 : Copyright (C) James Myers 2003
6 :
7 : This program is free software; you can redistribute it and/or modify
8 : it under the terms of the GNU General Public License as published by
9 : the Free Software Foundation; either version 3 of the License, or
10 : (at your option) any later version.
11 :
12 : This program is distributed in the hope that it will be useful,
13 : but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : GNU General Public License for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with this program. If not, see <http://www.gnu.org/licenses/>.
19 : */
20 :
21 : #include "includes.h"
22 : #include "libcli/raw/libcliraw.h"
23 : #include "libcli/raw/raw_proto.h"
24 :
25 :
26 : /***************************************************************************
27 : Return an error message from the last response
28 : ****************************************************************************/
29 30 : _PUBLIC_ const char *smbcli_errstr(struct smbcli_tree *tree)
30 : {
31 30 : switch (tree->session->transport->error.etype) {
32 24 : case ETYPE_SMB:
33 24 : return nt_errstr(tree->session->transport->error.e.nt_status);
34 :
35 0 : case ETYPE_SOCKET:
36 0 : return "socket_error";
37 :
38 0 : case ETYPE_NBT:
39 0 : return "nbt_error";
40 :
41 6 : case ETYPE_NONE:
42 6 : return "no_error";
43 : }
44 0 : return NULL;
45 : }
46 :
47 :
48 : /* Return the 32-bit NT status code from the last packet */
49 1218 : _PUBLIC_ NTSTATUS smbcli_nt_error(struct smbcli_tree *tree)
50 : {
51 1218 : switch (tree->session->transport->error.etype) {
52 1216 : case ETYPE_SMB:
53 1216 : return tree->session->transport->error.e.nt_status;
54 :
55 0 : case ETYPE_SOCKET:
56 0 : return NT_STATUS_UNSUCCESSFUL;
57 :
58 0 : case ETYPE_NBT:
59 0 : return NT_STATUS_UNSUCCESSFUL;
60 :
61 2 : case ETYPE_NONE:
62 2 : return NT_STATUS_OK;
63 : }
64 :
65 0 : return NT_STATUS_UNSUCCESSFUL;
66 : }
67 :
68 :
69 : /* Return true if the last packet was an error */
70 0 : bool smbcli_is_error(struct smbcli_tree *tree)
71 : {
72 0 : return NT_STATUS_IS_ERR(smbcli_nt_error(tree));
73 : }
|