const struct iovec *vector,
int count);
+void smbd_server_connection_terminate_ex(struct smbd_server_connection *sconn,
+ const char *reason,
+ const char *location);
+#define smbd_server_connection_terminate(sconn, reason) \
+ smbd_server_connection_terminate_ex(sconn, reason, __location__)
+
bool smbd_is_smb2_header(const uint8_t *inbuf, size_t size);
void reply_smb2002(struct smb_request *req, uint16_t choice);
#define smbd_smb2_request_done(req, body, dyn) \
smbd_smb2_request_done_ex(req, NT_STATUS_OK, body, dyn, __location__)
+NTSTATUS smbd_smb2_send_oplock_break(struct smbd_server_connection *sconn,
+ uint64_t file_id_persistent,
+ uint64_t file_id_volatile,
+ uint8_t oplock_level);
+
NTSTATUS smbd_smb2_request_check_session(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_check_tcon(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_flush(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_read(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_write(struct smbd_smb2_request *req);
+NTSTATUS smbd_smb2_request_process_ioctl(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_keepalive(struct smbd_smb2_request *req);
struct smbd_smb2_request {
int current_idx;
bool do_signing;
+ struct files_struct *compat_chain_fsp;
+
+ NTSTATUS next_status;
+
struct {
/* the NBT header is not allocated */
uint8_t nbt_hdr[4];