Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : 4 : SMB2 client tdis handling 5 : 6 : Copyright (C) Andrew Tridgell 2005 7 : 8 : This program is free software; you can redistribute it and/or modify 9 : it under the terms of the GNU General Public License as published by 10 : the Free Software Foundation; either version 3 of the License, or 11 : (at your option) any later version. 12 : 13 : This program is distributed in the hope that it will be useful, 14 : but WITHOUT ANY WARRANTY; without even the implied warranty of 15 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 : GNU General Public License for more details. 17 : 18 : You should have received a copy of the GNU General Public License 19 : along with this program. If not, see <http://www.gnu.org/licenses/>. 20 : */ 21 : 22 : #include "includes.h" 23 : #include "libcli/smb2/smb2.h" 24 : #include "libcli/smb2/smb2_calls.h" 25 : 26 : /* 27 : send a tdis request 28 : */ 29 148 : struct smb2_request *smb2_tdis_send(struct smb2_tree *tree) 30 : { 31 2 : struct smb2_request *req; 32 : 33 148 : req = smb2_request_init_tree(tree, SMB2_OP_TDIS, 0x04, false, 0); 34 148 : if (req == NULL) return NULL; 35 : 36 148 : SSVAL(req->out.body, 0x02, 0); 37 : 38 148 : smb2_transport_send(req); 39 : 40 148 : return req; 41 : } 42 : 43 : 44 : /* 45 : recv a tdis reply 46 : */ 47 148 : NTSTATUS smb2_tdis_recv(struct smb2_request *req) 48 : { 49 150 : if (!smb2_request_receive(req) || 50 148 : !smb2_request_is_ok(req)) { 51 17 : return smb2_request_destroy(req); 52 : } 53 : 54 131 : SMB2_CHECK_PACKET_RECV(req, 0x04, false); 55 131 : return smb2_request_destroy(req); 56 : } 57 : 58 : /* 59 : sync tdis request 60 : */ 61 148 : NTSTATUS smb2_tdis(struct smb2_tree *tree) 62 : { 63 148 : struct smb2_request *req = smb2_tdis_send(tree); 64 148 : return smb2_tdis_recv(req); 65 : }