talloc_get_type_abort(private_data,
struct smbd_smb2_request);
struct smbd_smb2_request_pending_state *state = NULL;
- int i = req->current_idx;
uint8_t *outhdr = NULL;
const uint8_t *inhdr = NULL;
uint8_t *hdr = NULL;
TALLOC_FREE(req->async_te);
/* Ensure our final reply matches the interim one. */
- inhdr = (const uint8_t *)req->in.vector[i].iov_base;
- outhdr = (uint8_t *)req->out.vector[i].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
+ outhdr = SMBD_SMB2_OUT_HDR_PTR(req);
flags = IVAL(outhdr, SMB2_HDR_FLAGS);
message_id = BVAL(outhdr, SMB2_HDR_MESSAGE_ID);
the credits now, and zero credits on the final
response. */
smb2_set_operation_credit(req->sconn,
- &req->in.vector[i],
+ SMBD_SMB2_IN_HDR_IOV(req),
&state->vector[1]);
SIVAL(hdr, SMB2_HDR_FLAGS, flags | SMB2_HDR_FLAG_ASYNC);
struct smbd_server_connection *sconn = req->sconn;
struct smbd_smb2_request *cur;
const uint8_t *inhdr;
- int i = req->current_idx;
uint32_t flags;
uint64_t search_message_id;
uint64_t search_async_id;
uint64_t found_id;
- inhdr = (const uint8_t *)req->in.vector[i].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
flags = IVAL(inhdr, SMB2_HDR_FLAGS);
search_message_id = BVAL(inhdr, SMB2_HDR_MESSAGE_ID);
uint64_t message_id;
uint64_t async_id;
- i = cur->current_idx;
-
- outhdr = (const uint8_t *)cur->out.vector[i].iov_base;
+ outhdr = SMBD_SMB2_OUT_HDR_PTR(cur);
message_id = BVAL(outhdr, SMB2_HDR_MESSAGE_ID);
async_id = BVAL(outhdr, SMB2_HDR_PID);
}
if (cur && cur->subreq) {
- inhdr = (const uint8_t *)cur->in.vector[i].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(cur);
DEBUG(10,("smbd_smb2_request_process_cancel: attempting to "
"cancel opcode[%s] mid %llu\n",
smb2_opcode_name((uint16_t)IVAL(inhdr, SMB2_HDR_OPCODE)),
static NTSTATUS smbd_smb2_request_check_tcon(struct smbd_smb2_request *req)
{
const uint8_t *inhdr;
- int i = req->current_idx;
uint32_t in_flags;
uint32_t in_tid;
struct smbXsrv_tcon *tcon;
req->tcon = NULL;
- inhdr = (const uint8_t *)req->in.vector[i+0].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
in_flags = IVAL(inhdr, SMB2_HDR_FLAGS);
in_tid = IVAL(inhdr, SMB2_HDR_TID);
static NTSTATUS smbd_smb2_request_check_session(struct smbd_smb2_request *req)
{
const uint8_t *inhdr;
- int i = req->current_idx;
uint32_t in_flags;
uint16_t in_opcode;
uint64_t in_session_id;
req->session = NULL;
req->tcon = NULL;
- inhdr = (const uint8_t *)req->in.vector[i+0].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
in_flags = IVAL(inhdr, SMB2_HDR_FLAGS);
in_opcode = IVAL(inhdr, SMB2_HDR_OPCODE);
uint16_t needed_charge;
uint16_t credit_charge = 1;
const uint8_t *inhdr;
- int i = req->current_idx;
- inhdr = (const uint8_t *)req->in.vector[i+0].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
if (req->sconn->smb2.supports_multicredit) {
credit_charge = SVAL(inhdr, SMB2_HDR_CREDIT_CHARGE);
NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req)
{
const uint8_t *inhdr;
- int i = req->current_idx;
uint16_t opcode;
uint32_t flags;
uint64_t mid;
struct smbXsrv_session *x = NULL;
bool signing_required = false;
- inhdr = (const uint8_t *)req->in.vector[i].iov_base;
+ inhdr = SMBD_SMB2_IN_HDR_PTR(req);
/* TODO: verify more things */
req->do_signing = true;
status = smb2_signing_check_pdu(signing_key,
conn->protocol,
- &req->in.vector[i], 3);
+ SMBD_SMB2_IN_HDR_IOV(req), 3);
if (!NT_STATUS_IS_OK(status)) {
return smbd_smb2_request_error(req, status);
}
{
DATA_BLOB body;
int i = req->current_idx;
- uint8_t *outhdr = (uint8_t *)req->out.vector[i].iov_base;
+ uint8_t *outhdr = SMBD_SMB2_OUT_HDR_PTR(req);
DEBUG(10,("smbd_smb2_request_error_ex: idx[%d] status[%s] |%s| at %s\n",
i, nt_errstr(status), info ? " +info" : "",