summaryrefslogtreecommitdiff
path: root/source3/smbd/globals.h
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/globals.h')
-rw-r--r--source3/smbd/globals.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index c03da19981..a26311e7da 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -202,6 +202,7 @@ extern int num_children;
struct tstream_context;
struct smbd_smb2_request;
struct smbd_smb2_session;
+struct smbd_smb2_tcon;
DATA_BLOB negprot_spnego(void);
@@ -222,10 +223,12 @@ NTSTATUS smbd_smb2_request_done(struct smbd_smb2_request *req,
DATA_BLOB body, DATA_BLOB *dyn);
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_negprot(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_sesssetup(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_logoff(struct smbd_smb2_request *req);
+NTSTATUS smbd_smb2_request_process_tcon(struct smbd_smb2_request *req);
NTSTATUS smbd_smb2_request_process_keepalive(struct smbd_smb2_request *req);
struct smbd_smb2_request {
@@ -236,6 +239,9 @@ struct smbd_smb2_request {
/* the session the request operates on, maybe NULL */
struct smbd_smb2_session *session;
+ /* the tcon the request operates on, maybe NULL */
+ struct smbd_smb2_tcon *tcon;
+
int current_idx;
struct {
@@ -292,6 +298,23 @@ struct smbd_smb2_session {
NTSTATUS status;
uint64_t vuid;
AUTH_NTLMSSP_STATE *auth_ntlmssp_state;
+
+ struct {
+ /* an id tree used to allocate tids */
+ struct idr_context *idtree;
+
+ /* this is the limit of tid values for this connection */
+ uint32_t limit;
+
+ struct smbd_smb2_tcon *list;
+ } tcons;
+};
+
+struct smbd_smb2_tcon {
+ struct smbd_smb2_tcon *prev, *next;
+ struct smbd_smb2_session *session;
+ uint32_t tid;
+ int snum;
};
struct smbd_server_connection {