updated SMB2 header defines to match WSPP docs
authorAndrew Tridgell <tridge@samba.org>
Tue, 12 Feb 2008 06:00:35 +0000 (17:00 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 12 Feb 2008 06:00:35 +0000 (17:00 +1100)
(This used to be commit d2c6ad55eca27f50a38fc6e2a85032eddb3f0aae)

12 files changed:
source4/libcli/smb2/cancel.c
source4/libcli/smb2/logoff.c
source4/libcli/smb2/notify.c
source4/libcli/smb2/request.c
source4/libcli/smb2/session.c
source4/libcli/smb2/smb2.h
source4/libcli/smb2/tcon.c
source4/libcli/smb2/transport.c
source4/smb_server/smb2/negprot.c
source4/smb_server/smb2/receive.c
source4/smb_server/smb2/sesssetup.c
source4/smb_server/smb2/tcon.c

index 096919f17751d5d7700e327da2d134d299a99376..80127feea57325a7ba6b50cd7fbc9d5159e2d5c8 100644 (file)
@@ -52,11 +52,11 @@ NTSTATUS smb2_cancel(struct smb2_request *r)
        c->seqnum = 0;
 
        SIVAL(c->out.hdr, SMB2_HDR_FLAGS,       0x00000002);
-       SSVAL(c->out.hdr, SMB2_HDR_UNKNOWN1,    0x0030);
+       SSVAL(c->out.hdr, SMB2_HDR_CREDIT,      0x0030);
        SIVAL(c->out.hdr, SMB2_HDR_PID,         r->cancel.pending_id);
-       SBVAL(c->out.hdr, SMB2_HDR_SEQNUM,      c->seqnum);
+       SBVAL(c->out.hdr, SMB2_HDR_MESSAGE_ID,  c->seqnum);
        if (r->session) {
-               SBVAL(c->out.hdr, SMB2_HDR_UID, r->session->uid);
+               SBVAL(c->out.hdr, SMB2_HDR_SESSION_ID,  r->session->uid);
        }
 
        SSVAL(c->out.body, 0x02, 0);
index 321a4db1a66ed9a73c4a189fc293715feaa7782d..b38a08ca43231ef1dcdf9c5b8785427cfff32896 100644 (file)
@@ -33,7 +33,7 @@ struct smb2_request *smb2_logoff_send(struct smb2_session *session)
        req = smb2_request_init(session->transport, SMB2_OP_LOGOFF, 0x04, false, 0);
        if (req == NULL) return NULL;
 
-       SBVAL(req->out.hdr,  SMB2_HDR_UID, session->uid);
+       SBVAL(req->out.hdr,  SMB2_HDR_SESSION_ID, session->uid);
 
        SSVAL(req->out.body, 0x02, 0);
 
index a3bea41eb09986cd902e68b193821659dfc9cb88..e7c38a27f9559b219f62bd9415ed1792d91e832c 100644 (file)
@@ -35,7 +35,7 @@ struct smb2_request *smb2_notify_send(struct smb2_tree *tree, struct smb2_notify
        req = smb2_request_init_tree(tree, SMB2_OP_NOTIFY, 0x20, false, 0);
        if (req == NULL) return NULL;
 
-       SSVAL(req->out.hdr,  SMB2_HDR_UNKNOWN1, 0x0030);
+       SSVAL(req->out.hdr,  SMB2_HDR_CREDIT,   0x0030);
 
        SSVAL(req->out.body, 0x02, io->in.recursive);
        SIVAL(req->out.body, 0x04, io->in.buffer_size);
index 73c74dcfeb6ff234af3764cbef211069435de28e..46ec24145f096d584eaf98f86cf8c1ea8aeaa155 100644 (file)
@@ -83,17 +83,17 @@ struct smb2_request *smb2_request_init(struct smb2_transport *transport, uint16_
 
        SIVAL(req->out.hdr, 0,                          SMB2_MAGIC);
        SSVAL(req->out.hdr, SMB2_HDR_LENGTH,            SMB2_HDR_BODY);
-       SSVAL(req->out.hdr, SMB2_HDR_PAD1,              0);
+       SSVAL(req->out.hdr, SMB2_HDR_EPOCH,             0);
        SIVAL(req->out.hdr, SMB2_HDR_STATUS,            0);
        SSVAL(req->out.hdr, SMB2_HDR_OPCODE,            opcode);
-       SSVAL(req->out.hdr, SMB2_HDR_UNKNOWN1,          0);
+       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,            0);
        SIVAL(req->out.hdr, SMB2_HDR_FLAGS,             0);
-       SIVAL(req->out.hdr, SMB2_HDR_CHAIN_OFFSET,      0);
-       SBVAL(req->out.hdr, SMB2_HDR_SEQNUM,            req->seqnum);
+       SIVAL(req->out.hdr, SMB2_HDR_NEXT_COMMAND,      0);
+       SBVAL(req->out.hdr, SMB2_HDR_MESSAGE_ID,                req->seqnum);
        SIVAL(req->out.hdr, SMB2_HDR_PID,               0);
        SIVAL(req->out.hdr, SMB2_HDR_TID,               0);
-       SBVAL(req->out.hdr, SMB2_HDR_UID,               0);
-       memset(req->out.hdr+SMB2_HDR_SIG, 0, 16);
+       SBVAL(req->out.hdr, SMB2_HDR_SESSION_ID,                0);
+       memset(req->out.hdr+SMB2_HDR_SIGNATURE, 0, 16);
 
        /* set the length of the fixed body part and +1 if there's a dynamic part also */
        SSVAL(req->out.body, 0, body_fixed_size + (body_dynamic_size?1:0));
@@ -122,7 +122,7 @@ struct smb2_request *smb2_request_init_tree(struct smb2_tree *tree, uint16_t opc
                                                     body_dynamic_size);
        if (req == NULL) return NULL;
 
-       SBVAL(req->out.hdr,  SMB2_HDR_UID, tree->session->uid);
+       SBVAL(req->out.hdr,  SMB2_HDR_SESSION_ID, tree->session->uid);
        SIVAL(req->out.hdr,  SMB2_HDR_TID, tree->tid);
        req->session = tree->session;
        req->tree = tree;
index d06688a5989fe10f40402d05b1881887a1343080..18fe3486a4d1666f7aa9d240a37928364cf0883c 100644 (file)
@@ -74,7 +74,7 @@ struct smb2_request *smb2_session_setup_send(struct smb2_session *session,
                                0x18, true, io->in.secblob.length);
        if (req == NULL) return NULL;
 
-       SBVAL(req->out.hdr,  SMB2_HDR_UID, session->uid);
+       SBVAL(req->out.hdr,  SMB2_HDR_SESSION_ID, session->uid);
        SCVAL(req->out.body, 0x02, io->in.vc_number);
        SCVAL(req->out.body, 0x03, io->in.security_mode);
        SIVAL(req->out.body, 0x04, io->in.capabilities);
@@ -112,7 +112,7 @@ NTSTATUS smb2_session_setup_recv(struct smb2_request *req, TALLOC_CTX *mem_ctx,
        SMB2_CHECK_PACKET_RECV(req, 0x08, true);
 
        io->out.session_flags = SVAL(req->in.body, 0x02);
-       io->out.uid           = BVAL(req->in.hdr,  SMB2_HDR_UID);
+       io->out.uid           = BVAL(req->in.hdr,  SMB2_HDR_SESSION_ID);
        
        status = smb2_pull_o16s16_blob(&req->in, mem_ctx, req->in.body+0x04, &io->out.secblob);
        if (!NT_STATUS_IS_OK(status)) {
index 33876c6f7c5a0f383a3cee482e864503d50c9dc6..60cf3e0173fa54789562042896ce7bc0287c4fa6 100644 (file)
@@ -156,19 +156,20 @@ struct smb2_request {
 
 #define SMB2_MIN_SIZE 0x42
 
-/* offsets into header elements */
+/* offsets into header elements for a sync SMB2 request */
+#define SMB2_HDR_PROTOCOL_ID    0x00
 #define SMB2_HDR_LENGTH                0x04
-#define SMB2_HDR_PAD1          0x06
+#define SMB2_HDR_EPOCH         0x06
 #define SMB2_HDR_STATUS                0x08
 #define SMB2_HDR_OPCODE                0x0c
-#define SMB2_HDR_UNKNOWN1      0x0e
+#define SMB2_HDR_CREDIT        0x0e
 #define SMB2_HDR_FLAGS         0x10
-#define SMB2_HDR_CHAIN_OFFSET  0x14
-#define SMB2_HDR_SEQNUM                0x18
+#define SMB2_HDR_NEXT_COMMAND  0x14
+#define SMB2_HDR_MESSAGE_ID     0x18
 #define SMB2_HDR_PID           0x20
 #define SMB2_HDR_TID           0x24
-#define SMB2_HDR_UID           0x28 /* 64 bit */
-#define SMB2_HDR_SIG           0x30 /* guess ... */
+#define SMB2_HDR_SESSION_ID    0x28
+#define SMB2_HDR_SIGNATURE     0x30 /* 16 bytes */
 #define SMB2_HDR_BODY          0x40
 
 /* SMB2 opcodes */
index ad1ba4c92dcba530e6afd21b1841be7fc3fe85fc..5a09970584a2fa69aef896350e2729f5a2e261e3 100644 (file)
@@ -56,7 +56,7 @@ struct smb2_request *smb2_tree_connect_send(struct smb2_tree *tree,
                                0x08, true, 0);
        if (req == NULL) return NULL;
 
-       SBVAL(req->out.hdr,  SMB2_HDR_UID, tree->session->uid);
+       SBVAL(req->out.hdr,  SMB2_HDR_SESSION_ID, tree->session->uid);
 
        SSVAL(req->out.body, 0x02, io->in.unknown1);
        status = smb2_push_o16s16_string(&req->out, 0x04, io->in.path);
index 83e9436a58e06f74c04e9d5671fe536f5d8167d7..dceb78382a4e487573533e48bfd5bbb755d11e07 100644 (file)
@@ -167,7 +167,7 @@ static NTSTATUS smb2_transport_finish_recv(void *private, DATA_BLOB blob)
        }
 
        flags   = IVAL(hdr, SMB2_HDR_FLAGS);
-       seqnum  = BVAL(hdr, SMB2_HDR_SEQNUM);
+       seqnum  = BVAL(hdr, SMB2_HDR_MESSAGE_ID);
 
        /* match the incoming request against the list of pending requests */
        for (req=transport->pending_recv; req; req=req->next) {
index 043534d7771baa27211a0e4b3bdc90c7fb3e68bb..4f4414760616ef079551f8fc4bff5f3326b033ab 100644 (file)
@@ -238,17 +238,17 @@ void smb2srv_reply_smb_negprot(struct smbsrv_request *smb_req)
 
        SIVAL(req->in.hdr, 0,                           SMB2_MAGIC);
        SSVAL(req->in.hdr, SMB2_HDR_LENGTH,             SMB2_HDR_BODY);
-       SSVAL(req->in.hdr, SMB2_HDR_PAD1,               0);
+       SSVAL(req->in.hdr, SMB2_HDR_EPOCH,              0);
        SIVAL(req->in.hdr, SMB2_HDR_STATUS,             0);
        SSVAL(req->in.hdr, SMB2_HDR_OPCODE,             SMB2_OP_NEGPROT);
-       SSVAL(req->in.hdr, SMB2_HDR_UNKNOWN1,           0);
+       SSVAL(req->in.hdr, SMB2_HDR_CREDIT,             0);
        SIVAL(req->in.hdr, SMB2_HDR_FLAGS,              0);
-       SIVAL(req->in.hdr, SMB2_HDR_CHAIN_OFFSET,       0);
-       SBVAL(req->in.hdr, SMB2_HDR_SEQNUM,             0);
+       SIVAL(req->in.hdr, SMB2_HDR_NEXT_COMMAND,       0);
+       SBVAL(req->in.hdr, SMB2_HDR_MESSAGE_ID,         0);
        SIVAL(req->in.hdr, SMB2_HDR_PID,                0);
        SIVAL(req->in.hdr, SMB2_HDR_TID,                0);
-       SBVAL(req->in.hdr, SMB2_HDR_UID,                0);
-       memset(req->in.hdr+SMB2_HDR_SIG, 0, 16);
+       SBVAL(req->in.hdr, SMB2_HDR_SESSION_ID,         0);
+       memset(req->in.hdr+SMB2_HDR_SIGNATURE, 0, 16);
 
        /* this seems to be a bug, they use 0x24 but the length is 0x26 */
        SSVAL(req->in.body, 0x00, 0x24);
index cfae2dbe52cddebbe632fdaa21f86c7239baf58d..393b3f0cc57d6363d3f09295d7e809fb32fb6708 100644 (file)
@@ -94,17 +94,17 @@ NTSTATUS smb2srv_setup_reply(struct smb2srv_request *req, uint16_t body_fixed_si
 
        SIVAL(req->out.hdr, 0,                          SMB2_MAGIC);
        SSVAL(req->out.hdr, SMB2_HDR_LENGTH,            SMB2_HDR_BODY);
-       SSVAL(req->out.hdr, SMB2_HDR_PAD1,              0);
+       SSVAL(req->out.hdr, SMB2_HDR_EPOCH,             0);
        SIVAL(req->out.hdr, SMB2_HDR_STATUS,            NT_STATUS_V(req->status));
        SSVAL(req->out.hdr, SMB2_HDR_OPCODE,            SVAL(req->in.hdr, SMB2_HDR_OPCODE));
-       SSVAL(req->out.hdr, SMB2_HDR_UNKNOWN1,          0x0001);
+       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,            0x0001);
        SIVAL(req->out.hdr, SMB2_HDR_FLAGS,             flags);
-       SIVAL(req->out.hdr, SMB2_HDR_CHAIN_OFFSET,      0);
-       SBVAL(req->out.hdr, SMB2_HDR_SEQNUM,            req->seqnum);
+       SIVAL(req->out.hdr, SMB2_HDR_NEXT_COMMAND,      0);
+       SBVAL(req->out.hdr, SMB2_HDR_MESSAGE_ID,        req->seqnum);
        SIVAL(req->out.hdr, SMB2_HDR_PID,               pid);
        SIVAL(req->out.hdr, SMB2_HDR_TID,               tid);
-       SBVAL(req->out.hdr, SMB2_HDR_UID,               BVAL(req->in.hdr, SMB2_HDR_UID));
-       memset(req->out.hdr+SMB2_HDR_SIG, 0, 16);
+       SBVAL(req->out.hdr, SMB2_HDR_SESSION_ID,        BVAL(req->in.hdr, SMB2_HDR_SESSION_ID));
+       memset(req->out.hdr+SMB2_HDR_SIGNATURE, 0, 16);
 
        /* set the length of the fixed body part and +1 if there's a dynamic part also */
        SSVAL(req->out.body, 0, body_fixed_size + (body_dynamic_size?1:0));
@@ -259,10 +259,10 @@ static NTSTATUS smb2srv_reply(struct smb2srv_request *req)
        uint64_t uid;
 
        opcode                  = SVAL(req->in.hdr, SMB2_HDR_OPCODE);
-       req->chain_offset       = IVAL(req->in.hdr, SMB2_HDR_CHAIN_OFFSET);
-       req->seqnum             = BVAL(req->in.hdr, SMB2_HDR_SEQNUM);
+       req->chain_offset       = IVAL(req->in.hdr, SMB2_HDR_NEXT_COMMAND);
+       req->seqnum             = BVAL(req->in.hdr, SMB2_HDR_MESSAGE_ID);
        tid                     = IVAL(req->in.hdr, SMB2_HDR_TID);
-       uid                     = BVAL(req->in.hdr, SMB2_HDR_UID);
+       uid                     = BVAL(req->in.hdr, SMB2_HDR_SESSION_ID);
 
        req->session    = smbsrv_session_find(req->smb_conn, uid, req->request_time);
        req->tcon       = smbsrv_smb2_tcon_find(req->session, tid, req->request_time);
index b4c78a2ebd9049bc4937f17f2965e9f9caf8ce52..1aaacf897c62e46310b6c4aa17cdfcc2cddec6a4 100644 (file)
 
 static void smb2srv_sesssetup_send(struct smb2srv_request *req, union smb_sesssetup *io)
 {
-       uint16_t unknown1;
+       uint16_t credit;
 
        if (NT_STATUS_IS_OK(req->status)) {
-               unknown1 = 0x0003;
+               credit = 0x0003;
        } else if (NT_STATUS_EQUAL(req->status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
-               unknown1 = 0x0002;
+               credit = 0x0002;
        } else {
                smb2srv_send_error(req, req->status);
                return;
@@ -45,8 +45,8 @@ static void smb2srv_sesssetup_send(struct smb2srv_request *req, union smb_sessse
 
        SMB2SRV_CHECK(smb2srv_setup_reply(req, 0x08, true, io->smb2.out.secblob.length));
 
-       SSVAL(req->out.hdr, SMB2_HDR_UNKNOWN1,  unknown1);
-       SBVAL(req->out.hdr, SMB2_HDR_UID,       io->smb2.out.uid);
+       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,    credit);
+       SBVAL(req->out.hdr, SMB2_HDR_SESSION_ID,        io->smb2.out.uid);
 
        SSVAL(req->out.body, 0x02, io->smb2.out.session_flags);
        SMB2SRV_CHECK(smb2_push_o16s16_blob(&req->out, 0x04, io->smb2.out.secblob));
@@ -112,7 +112,7 @@ static void smb2srv_sesssetup_backend(struct smb2srv_request *req, union smb_ses
        io->smb2.out.uid        = 0;
        io->smb2.out.secblob = data_blob(NULL, 0);
 
-       vuid = BVAL(req->in.hdr, SMB2_HDR_UID);
+       vuid = BVAL(req->in.hdr, SMB2_HDR_SESSION_ID);
 
        /*
         * only when we got '0' we should allocate a new session
index 6d0d98554c8c2525376741c7fbe72a72a1464134..824a57b4a1e0bc4142670d040de20f11b5652bce 100644 (file)
@@ -57,24 +57,24 @@ static NTSTATUS smb2srv_send_oplock_break(void *p, struct ntvfs_handle *h, uint8
 
        SIVAL(req->in.hdr, 0,                           SMB2_MAGIC);
        SSVAL(req->in.hdr, SMB2_HDR_LENGTH,             SMB2_HDR_BODY);
-       SSVAL(req->in.hdr, SMB2_HDR_PAD1,               0);
+       SSVAL(req->in.hdr, SMB2_HDR_EPOCH,              0);
        SIVAL(req->in.hdr, SMB2_HDR_STATUS,             0);
        SSVAL(req->in.hdr, SMB2_HDR_OPCODE,             SMB2_OP_BREAK);
-       SSVAL(req->in.hdr, SMB2_HDR_UNKNOWN1,           0);
+       SSVAL(req->in.hdr, SMB2_HDR_CREDIT,             0);
        SIVAL(req->in.hdr, SMB2_HDR_FLAGS,              0);
-       SIVAL(req->in.hdr, SMB2_HDR_CHAIN_OFFSET,       0);
-       SBVAL(req->in.hdr, SMB2_HDR_SEQNUM,             0);
+       SIVAL(req->in.hdr, SMB2_HDR_NEXT_COMMAND,       0);
+       SBVAL(req->in.hdr, SMB2_HDR_MESSAGE_ID,         0);
        SIVAL(req->in.hdr, SMB2_HDR_PID,                0);
        SIVAL(req->in.hdr, SMB2_HDR_TID,                0);
-       SBVAL(req->in.hdr, SMB2_HDR_UID,                0);
-       memset(req->in.hdr+SMB2_HDR_SIG, 0, 16);
+       SBVAL(req->in.hdr, SMB2_HDR_SESSION_ID,         0);
+       memset(req->in.hdr+SMB2_HDR_SIGNATURE, 0, 16);
 
        SSVAL(req->in.body, 0, 2);
 
        status = smb2srv_setup_reply(req, 0x18, false, 0);
        NT_STATUS_NOT_OK_RETURN(status);
 
-       SSVAL(req->out.hdr, SMB2_HDR_UNKNOWN1,  0x0000);
+       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,    0x0000);
 
        SSVAL(req->out.body, 0x02, 0x0001);
        SIVAL(req->out.body, 0x04, 0x00000000);
@@ -361,7 +361,7 @@ failed:
 
 static void smb2srv_tcon_send(struct smb2srv_request *req, union smb_tcon *io)
 {
-       uint16_t unknown1;
+       uint16_t credit;
 
        if (!NT_STATUS_IS_OK(req->status)) {
                smb2srv_send_error(req, req->status);
@@ -369,15 +369,15 @@ static void smb2srv_tcon_send(struct smb2srv_request *req, union smb_tcon *io)
        }
        if (io->smb2.out.unknown1 == 0x0002) {
                /* if it's an IPC share vista returns 0x0005 */
-               unknown1 = 0x0005;
+               credit = 0x0005;
        } else {
-               unknown1 = 0x0001;
+               credit = 0x0001;
        }
 
        SMB2SRV_CHECK(smb2srv_setup_reply(req, 0x10, false, 0));
 
        SIVAL(req->out.hdr,     SMB2_HDR_TID,   io->smb2.out.tid);
-       SSVAL(req->out.hdr,     SMB2_HDR_UNKNOWN1,unknown1);
+       SSVAL(req->out.hdr,     SMB2_HDR_CREDIT,credit);
 
        SSVAL(req->out.body,    0x02,           io->smb2.out.unknown1);
        SIVAL(req->out.body,    0x04,           io->smb2.out.unknown2);