Print this page
NEX-14666 Need to provide SMB 2.1 Client
NEX-17187 panic in smbfs_acl_store
NEX-17231 smbfs create xattr files finds wrong file
NEX-17224 smbfs lookup EINVAL should be ENOENT
NEX-17260 SMB1 client fails to list directory after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
and: (cleanup)
NEX-16824 SMB client connection setup rework
NEX-17232 SMB client reconnect failures
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (improve debug)

*** 38,47 **** --- 38,48 ---- * $Id: smb.h,v 1.36.90.1 2005/05/27 02:35:29 lindak Exp $ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. All rights reserved. */ #ifndef _NETSMB_SMB_H_ #define _NETSMB_SMB_H_
*** 64,75 **** SMB_DIALECT_CORE, /* PC NETWORK PROGRAM 1.0, PCLAN1.0 */ SMB_DIALECT_COREPLUS, /* MICROSOFT NETWORKS 1.03 */ SMB_DIALECT_LANMAN1_0, /* MICROSOFT NETWORKS 3.0, LANMAN1.0 */ SMB_DIALECT_LANMAN2_0, /* LM1.2X002, DOS LM1.2X002, Samba */ SMB_DIALECT_LANMAN2_1, /* DOS LANMAN2.1, LANMAN2.1 */ ! SMB_DIALECT_NTLM0_12 /* NT LM 0.12, Windows for Workgroups */ ! /* 3.1a, * NT LANMAN 1.0 */ }; /* * Formats of data/string buffers */ --- 65,76 ---- SMB_DIALECT_CORE, /* PC NETWORK PROGRAM 1.0, PCLAN1.0 */ SMB_DIALECT_COREPLUS, /* MICROSOFT NETWORKS 1.03 */ SMB_DIALECT_LANMAN1_0, /* MICROSOFT NETWORKS 3.0, LANMAN1.0 */ SMB_DIALECT_LANMAN2_0, /* LM1.2X002, DOS LM1.2X002, Samba */ SMB_DIALECT_LANMAN2_1, /* DOS LANMAN2.1, LANMAN2.1 */ ! SMB_DIALECT_NTLM0_12, /* NT LM 0.12, etc. */ ! SMB_DIALECT_SMB2_FF /* SMB1 negotiate to SMB2 */ }; /* * Formats of data/string buffers */
*** 80,94 **** --- 81,102 ---- #define SMB_DT_VARIABLE 5 /* * SMB header */ + #define SMB_SIGNATURE "\xFFSMB" #define SMB_SIGLEN 4 #define SMB_HDRCMD(p) (*((uchar_t *)(p) + SMB_SIGLEN)) #define SMB_HDRMID(p) (*(ushort_t *)((uchar_t *)(p) + 30)) + #define SMB_HDR_OFF_MID 30 #define SMB_HDRLEN 32 + + #define SMB_HDR_V1 0xFF + #define SMB_HDR_V2 0xFE + #define SMB_HDR_V3E 0xFD /* SMB3 encrypted */ + /* * bits in the smb_flags field */ #define SMB_FLAGS_SUPPORT_LOCKREAD 0x01 #define SMB_FLAGS_CLIENT_BUF_AVAIL 0x02
*** 149,159 **** --- 157,186 ---- #define SMB_CAP_UNIX 0x00800000 #define SMB_CAP_BULK_TRANSFER 0x20000000 #define SMB_CAP_COMPRESSED_DATA 0x40000000 #define SMB_CAP_EXT_SECURITY 0x80000000 + /* SMB_COM_TREE_CONNECT_ANDX flags. See [MS-SMB] for a complete description. */ + #define TREE_CONNECT_ANDX_DISCONNECT_TID 0x0001 + #define TREE_CONNECT_ANDX_EXTENDED_SIGNATURES 0x0004 + #define TREE_CONNECT_ANDX_EXTENDED_RESPONSE 0x0008 + /* + * SMB_COM_TREE_CONNECT_ANDX optional support flags. See [MS-SMB] for a + * complete description. + */ + #define SMB_SUPPORT_SEARCH_BITS 0x0001 /* supports SearchAttributes */ + #define SMB_SHARE_IS_IN_DFS 0x0002 /* share is managed by DFS */ + #define SMB_CSC_MASK 0x000C /* Offline-caching bits. */ + #define SMB_UNIQUE_FILE_NAME 0x0010 /* Long file names only */ + #define SMB_EXTENDED_SIGNATURES 0x0020 /* Signing key protection. */ + /* See [MS-SMB] for a complete description of SMB_CSC_MASK bits. */ + #define SMB_CSC_CACHE_MANUAL_REINT 0x0000 + #define SMB_CSC_CACHE_AUTO_REINT 0x0004 + #define SMB_CSC_CACHE_VDO 0x0008 + + /* * File attributes */ #define SMB_FA_RDONLY 0x01 #define SMB_FA_HIDDEN 0x02 #define SMB_FA_SYSTEM 0x04
*** 370,388 **** --- 397,421 ---- #define SMB_QFS_VOLUME_INFO 0x102 #define SMB_QFS_SIZE_INFO 0x103 #define SMB_QFS_DEVICE_INFO 0x104 #define SMB_QFS_ATTRIBUTE_INFO 0x105 #define SMB_QFS_UNIX_INFO 0x200 + #define SMB_QFS_POSIX_WHOAMI 0x202 #define SMB_QFS_MAC_FS_INFO 0x301 #define SMB_QFS_VOLUME_INFORMATION 1001 #define SMB_QFS_SIZE_INFORMATION 1003 #define SMB_QFS_DEVICE_INFORMATION 1004 #define SMB_QFS_ATTRIBUTE_INFORMATION 1005 #define SMB_QFS_QUOTA_INFORMATION 1006 #define SMB_QFS_FULL_SIZE_INFORMATION 1007 #define SMB_QFS_OBJECTID_INFORMATION 1008 + /* + * NT Notify Change Compeletion Filter + * NT Notify Actions + * (We don't use these.) + */ /* * SMB_QFS_ATTRIBUTE_INFO bits. * The following info found in msdn * (http://msdn.microsoft.com/library/default.asp?
*** 401,410 **** --- 434,444 ---- #define FILE_SUPPORTS_LONG_NAMES 0x00004000 #define FILE_VOLUME_IS_COMPRESSED 0x00008000 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000 #define FILE_SUPPORTS_ENCRYPTION 0x00020000 #define FILE_NAMED_STREAMS 0x00040000 + #define FILE_READ_ONLY_VOLUME 0x00080000 /* * SMB_TRANS2_QUERY_PATH levels */ #define SMB_QFILEINFO_STANDARD 1
*** 422,434 **** --- 456,471 ---- #define SMB_QFILEINFO_ALT_NAME_INFO 0x108 #define SMB_QFILEINFO_STREAM_INFO 0x109 #define SMB_QFILEINFO_COMPRESSION_INFO 0x10b #define SMB_QFILEINFO_UNIX_BASIC 0x200 #define SMB_QFILEINFO_UNIX_LINK 0x201 + #define SMB_QFILEINFO_POSIX_ACL 0x204 + #define SMB_QFILEINFO_UNIX_INFO2 0x20B #define SMB_QFILEINFO_MAC_DT_GET_APPL 0x306 #define SMB_QFILEINFO_MAC_DT_GET_ICON 0x307 #define SMB_QFILEINFO_MAC_DT_GET_ICON_INFO 0x308 + #define SMB_QFILEINFO_MAC_SPOTLIGHT 0x310 #define SMB_QFILEINFO_BASIC_INFORMATION 1004 #define SMB_QFILEINFO_STANDARD_INFORMATION 1005 #define SMB_QFILEINFO_INTERNAL_INFORMATION 1006 #define SMB_QFILEINFO_EA_INFORMATION 1007 #define SMB_QFILEINFO_ACCESS_INFORMATION 1008
*** 452,461 **** --- 489,501 ---- #define SMB_FIND_DIRECTORY_INFO 0x101 #define SMB_FIND_FULL_DIRECTORY_INFO 0x102 #define SMB_FIND_NAME_INFO 0x103 #define SMB_FIND_BOTH_DIRECTORY_INFO 0x104 #define SMB_FIND_UNIX_INFO 0x200 + /* Transact 2 Find First levels */ + #define SMB_FIND_FILE_UNIX 0x202 + #define SMB_FIND_FILE_UNIX_INFO2 0x20B /* UNIX File Info2 */ /* * Selectors for NT_TRANSACT_QUERY_SECURITY_DESC and * NT_TRANSACT_SET_SECURITY_DESC. Details found in the MSDN * library by searching on security_information.
*** 705,714 **** --- 745,757 ---- #define SMB_SFILEINFO_ALLOCATION_INFO 0x103 #define SMB_SFILEINFO_END_OF_FILE_INFO 0x104 #define SMB_SFILEINFO_UNIX_BASIC 0x200 #define SMB_SFILEINFO_UNIX_LINK 0x201 #define SMB_SFILEINFO_UNIX_HLINK 0x203 + #define SMB_SFILEINFO_POSIX_ACL 0x204 + #define SMB_SFILEINFO_POSIX_UNLINK 0x20A + #define SMB_SFILEINFO_UNIX_INFO2 0x20B #define SMB_SFILEINFO_DIRECTORY_INFORMATION 1001 #define SMB_SFILEINFO_FULL_DIRECTORY_INFORMATION 1002 #define SMB_SFILEINFO_BOTH_DIRECTORY_INFORMATION 1003 #define SMB_SFILEINFO_BASIC_INFORMATION 1004 #define SMB_SFILEINFO_STANDARD_INFORMATION 1005
*** 814,819 **** --- 857,877 ---- #define STYPE_UNKNOWN 0x00000004 #define STYPE_MASK 0x0000000F #define STYPE_TEMPORARY 0x40000000 #define STYPE_HIDDEN 0x80000000 + /* + * Characters that are not allowed in an SMB file name component. + * From MSDN: Naming Files, Paths, ... + * < (less than) + * > (greater than) + * : (colon) + * " (double quote) + * / (forward slash) + * \ (backslash) + * | (vertical bar or pipe) + * ? (question mark) + * * (asterisk) + */ + #define SMB_FILENAME_INVALID_CHARS "<>:\"/\\|?*" + #endif /* _NETSMB_SMB_H_ */