• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/samba-3.5.8/source4/libcli/raw/
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