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 73 : _PUBLIC_ const char *smbcli_errstr(struct smbcli_tree *tree) 30 : { 31 73 : switch (tree->session->transport->error.etype) { 32 67 : case ETYPE_SMB: 33 67 : 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 6991 : _PUBLIC_ NTSTATUS smbcli_nt_error(struct smbcli_tree *tree) 50 : { 51 6991 : switch (tree->session->transport->error.etype) { 52 6979 : case ETYPE_SMB: 53 6979 : 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 12 : case ETYPE_NONE: 62 12 : 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 : }