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_PUBLIC_ const char *smbcli_errstr(struct smbcli_tree *tree) 30{ 31 switch (tree->session->transport->error.etype) { 32 case ETYPE_SMB: 33 return nt_errstr(tree->session->transport->error.e.nt_status); 34 35 case ETYPE_SOCKET: 36 return "socket_error"; 37 38 case ETYPE_NBT: 39 return "nbt_error"; 40 41 case ETYPE_NONE: 42 return "no_error"; 43 } 44 return NULL; 45} 46 47 48/* Return the 32-bit NT status code from the last packet */ 49_PUBLIC_ NTSTATUS smbcli_nt_error(struct smbcli_tree *tree) 50{ 51 switch (tree->session->transport->error.etype) { 52 case ETYPE_SMB: 53 return tree->session->transport->error.e.nt_status; 54 55 case ETYPE_SOCKET: 56 return NT_STATUS_UNSUCCESSFUL; 57 58 case ETYPE_NBT: 59 return NT_STATUS_UNSUCCESSFUL; 60 61 case ETYPE_NONE: 62 return NT_STATUS_OK; 63 } 64 65 return NT_STATUS_UNSUCCESSFUL; 66} 67 68 69/* Return true if the last packet was an error */ 70bool smbcli_is_error(struct smbcli_tree *tree) 71{ 72 return NT_STATUS_IS_ERR(smbcli_nt_error(tree)); 73} 74