From d7bef4c4ebe4a2b1788d0214a08d69518e0de3cc Mon Sep 17 00:00:00 2001 From: Steve French Date: Thu, 18 Apr 2019 11:03:58 -0500 Subject: [PATCH] SMB3: Add defines for new negotiate contexts See the latest MS-SMB2 protocol specification updates. These will be needed for implementing compression support on the wire for example. Signed-off-by: Steve French --- fs/cifs/smb2pdu.c | 5 +---- fs/cifs/smb2pdu.h | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index 36cc34318429..a932dccafc5b 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -459,10 +459,7 @@ smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, return rc; } - -#define SMB2_PREAUTH_INTEGRITY_CAPABILITIES cpu_to_le16(1) -#define SMB2_ENCRYPTION_CAPABILITIES cpu_to_le16(2) -#define SMB2_POSIX_EXTENSIONS_AVAILABLE cpu_to_le16(0x100) +/* For explanation of negotiate contexts see MS-SMB2 section 2.2.3.1 */ static void build_preauth_ctxt(struct smb2_preauth_neg_context *pneg_ctxt) diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h index ee8977688e21..58158e91b9d1 100644 --- a/fs/cifs/smb2pdu.h +++ b/fs/cifs/smb2pdu.h @@ -251,6 +251,14 @@ struct smb2_negotiate_req { #define SMB2_NT_FIND 0x00100000 #define SMB2_LARGE_FILES 0x00200000 + +/* Negotiate Contexts - ContextTypes. See MS-SMB2 section 2.2.3.1 for details */ +#define SMB2_PREAUTH_INTEGRITY_CAPABILITIES cpu_to_le16(1) +#define SMB2_ENCRYPTION_CAPABILITIES cpu_to_le16(2) +#define SMB2_COMPRESSION_CAPABILITIES cpu_to_le16(3) +#define SMB2_NETNAME_NEGOTIATE_CONTEXT_ID cpu_to_le16(5) +#define SMB2_POSIX_EXTENSIONS_AVAILABLE cpu_to_le16(0x100) + struct smb2_neg_context { __le16 ContextType; __le16 DataLength; @@ -288,6 +296,24 @@ struct smb2_encryption_neg_context { __le16 Ciphers[1]; /* Ciphers[0] since only one used now */ } __packed; +/* See MS-SMB2 2.2.3.1.3 */ +#define SMB3_COMPRESS_NONE 0x0000 +#define SMB3_COMPRESS_LZNT1 0x0001 +#define SMB3_COMPRESS_LZ77 0x0002 +#define SMB3_COMPRESS_LZ77_HUFF 0x0003 + +struct smb2_compression_capabilities_context { + __le16 CompressionAlgorithmCount; + __u16 Padding; + __u32 Reserved; + __u16 CompressionAlgorithms[1]; +} __packed; + +/* + * For smb2_netname_negotiate_context_id See MS-SMB2 2.2.3.1.4. + * Its struct simply contains NetName, an array of Unicode characters + */ + #define POSIX_CTXT_DATA_LEN 16 struct smb2_posix_neg_context { __le16 ContextType; /* 0x100 */ -- 2.30.2