Line data Source code
1 : /* 2 : Unix SMB2 implementation. 3 : 4 : Copyright (C) Stefan Metzmacher 2005 5 : 6 : This program is free software; you can redistribute it and/or modify 7 : it under the terms of the GNU General Public License as published by 8 : the Free Software Foundation; either version 3 of the License, or 9 : (at your option) any later version. 10 : 11 : This program is distributed in the hope that it will be useful, 12 : but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : GNU General Public License for more details. 15 : 16 : You should have received a copy of the GNU General Public License 17 : along with this program. If not, see <http://www.gnu.org/licenses/>. 18 : */ 19 : 20 : #include "includes.h" 21 : #include "libcli/smb2/smb2.h" 22 : #include "smb_server/smb_server.h" 23 : #include "smb_server/smb2/smb2_server.h" 24 : 25 1 : static NTSTATUS smb2srv_keepalive_backend(struct smb2srv_request *req) 26 : { 27 : /* TODO: maybe update some flags on the connection struct */ 28 1 : return NT_STATUS_OK; 29 : } 30 : 31 1 : static void smb2srv_keepalive_send(struct smb2srv_request *req) 32 : { 33 0 : NTSTATUS status; 34 : 35 1 : if (NT_STATUS_IS_ERR(req->status)) { 36 0 : smb2srv_send_error(req, req->status); 37 0 : return; 38 : } 39 : 40 1 : status = smb2srv_setup_reply(req, 0x04, false, 0); 41 1 : if (!NT_STATUS_IS_OK(status)) { 42 0 : smbsrv_terminate_connection(req->smb_conn, nt_errstr(status)); 43 0 : talloc_free(req); 44 0 : return; 45 : } 46 : 47 1 : SSVAL(req->out.body, 0x02, 0); 48 : 49 1 : smb2srv_send_reply(req); 50 : } 51 : 52 1 : void smb2srv_keepalive_recv(struct smb2srv_request *req) 53 : { 54 1 : if (req->in.body_size != 0x04) { 55 0 : smb2srv_send_error(req, NT_STATUS_INVALID_PARAMETER); 56 0 : return; 57 : } 58 : 59 1 : if (SVAL(req->in.body, 0x00) != 0x04) { 60 0 : smb2srv_send_error(req, NT_STATUS_INVALID_PARAMETER); 61 0 : return; 62 : } 63 : 64 1 : req->status = smb2srv_keepalive_backend(req); 65 : 66 1 : if (req->control_flags & SMB2SRV_REQ_CTRL_FLAG_NOT_REPLY) { 67 0 : talloc_free(req); 68 0 : return; 69 : } 70 1 : smb2srv_keepalive_send(req); 71 : }