libcli/smb2: sign SMB2 Logoff requests
[tprouty/samba.git] / source4 / libcli / smb2 / logoff.c
index a73c7ee92ec7f8d281e8616ea749da4105c1b290..e3f83f27d884f6de9786a84fae8c7f672d2b09a7 100644 (file)
@@ -7,7 +7,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
-#include "libcli/raw/libcliraw.h"
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
 /*
   send a logoff request
 */
-struct smb2_request *smb2_logoff_send(struct smb2_tree *tree)
+struct smb2_request *smb2_logoff_send(struct smb2_session *session)
 {
        struct smb2_request *req;
 
-       req = smb2_request_init_tree(tree, SMB2_OP_LOGOFF, 0x04, 0);
+       req = smb2_request_init(session->transport, SMB2_OP_LOGOFF, 0x04, false, 0);
        if (req == NULL) return NULL;
 
+       req->session = session;
+
+       SBVAL(req->out.hdr,  SMB2_HDR_SESSION_ID, session->uid);
+
        SSVAL(req->out.body, 0x02, 0);
 
        smb2_transport_send(req);
@@ -49,19 +51,19 @@ struct smb2_request *smb2_logoff_send(struct smb2_tree *tree)
 NTSTATUS smb2_logoff_recv(struct smb2_request *req)
 {
        if (!smb2_request_receive(req) || 
-           smb2_request_is_error(req)) {
+           !smb2_request_is_ok(req)) {
                return smb2_request_destroy(req);
        }
 
-       SMB2_CHECK_PACKET_RECV(req, 0x04, False);
+       SMB2_CHECK_PACKET_RECV(req, 0x04, false);
        return smb2_request_destroy(req);
 }
 
 /*
   sync logoff request
 */
-NTSTATUS smb2_logoff(struct smb2_tree *tree)
+NTSTATUS smb2_logoff(struct smb2_session *session)
 {
-       struct smb2_request *req = smb2_logoff_send(tree);
+       struct smb2_request *req = smb2_logoff_send(session);
        return smb2_logoff_recv(req);
 }