s3:smb2_read: pass in_flags to smbd_smb2_read_send()
authorStefan Metzmacher <metze@samba.org>
Wed, 6 May 2015 08:52:57 +0000 (10:52 +0200)
committerMichael Adam <obnox@samba.org>
Fri, 8 May 2015 11:00:28 +0000 (13:00 +0200)
For now we still ignore the flags.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
source3/smbd/smb2_read.c

index 4e974a2eee1c5ac0f258338a6068e552c8f36935..03cd54b1f920fd9b9192779d55f866bf697d64ab 100644 (file)
@@ -32,6 +32,7 @@ static struct tevent_req *smbd_smb2_read_send(TALLOC_CTX *mem_ctx,
                                              struct tevent_context *ev,
                                              struct smbd_smb2_request *smb2req,
                                              struct files_struct *in_fsp,
+                                             uint8_t in_flags,
                                              uint32_t in_length,
                                              uint64_t in_offset,
                                              uint32_t in_minimum,
@@ -47,6 +48,7 @@ NTSTATUS smbd_smb2_request_process_read(struct smbd_smb2_request *req)
        struct smbXsrv_connection *xconn = req->xconn;
        NTSTATUS status;
        const uint8_t *inbody;
+       uint8_t in_flags;
        uint32_t in_length;
        uint64_t in_offset;
        uint64_t in_file_id_persistent;
@@ -62,6 +64,11 @@ NTSTATUS smbd_smb2_request_process_read(struct smbd_smb2_request *req)
        }
        inbody = SMBD_SMB2_IN_BODY_PTR(req);
 
+       if (xconn->protocol >= PROTOCOL_SMB3_02) {
+               in_flags                = CVAL(inbody, 0x03);
+       } else {
+               in_flags                = 0;
+       }
        in_length               = IVAL(inbody, 0x04);
        in_offset               = BVAL(inbody, 0x08);
        in_file_id_persistent   = BVAL(inbody, 0x10);
@@ -89,6 +96,7 @@ NTSTATUS smbd_smb2_request_process_read(struct smbd_smb2_request *req)
 
        subreq = smbd_smb2_read_send(req, req->sconn->ev_ctx,
                                     req, in_fsp,
+                                    in_flags,
                                     in_length,
                                     in_offset,
                                     in_minimum_count,
@@ -165,6 +173,7 @@ struct smbd_smb2_read_state {
        struct smbd_smb2_request *smb2req;
        struct smb_request *smbreq;
        files_struct *fsp;
+       uint8_t in_flags;
        uint32_t in_length;
        uint64_t in_offset;
        uint32_t in_minimum;
@@ -422,6 +431,7 @@ static struct tevent_req *smbd_smb2_read_send(TALLOC_CTX *mem_ctx,
                                              struct tevent_context *ev,
                                              struct smbd_smb2_request *smb2req,
                                              struct files_struct *fsp,
+                                             uint8_t in_flags,
                                              uint32_t in_length,
                                              uint64_t in_offset,
                                              uint32_t in_minimum,
@@ -442,6 +452,7 @@ static struct tevent_req *smbd_smb2_read_send(TALLOC_CTX *mem_ctx,
                return NULL;
        }
        state->smb2req = smb2req;
+       state->in_flags = in_flags;
        state->in_length = in_length;
        state->in_offset = in_offset;
        state->in_minimum = in_minimum;