static void smb_set_enclen(char *buf,int len,uint16_t enc_ctx_num) { _smb_setlen_nbt(buf,len); SCVAL(buf,4,0xFF); SCVAL(buf,5,'E'); SSVAL(buf,6,enc_ctx_num); }
/* send a reply and destroy the request buffer note that this only looks at req->out.buffer and req->out.size, allowing manually constructed packets to be sent */ void smbsrv_send_reply_nosign(struct smbsrv_request *req) { DATA_BLOB blob; NTSTATUS status; if (req->smb_conn->connection->event.fde == NULL) { /* we are in the process of shutting down this connection */ talloc_free(req); return; } if (req->out.size > NBT_HDR_SIZE) { _smb_setlen_nbt(req->out.buffer, req->out.size - NBT_HDR_SIZE); } blob = data_blob_const(req->out.buffer, req->out.size); status = packet_send(req->smb_conn->packet, blob); if (!NT_STATUS_IS_OK(status)) { smbsrv_terminate_connection(req->smb_conn, nt_errstr(status)); } talloc_free(req); }