Introduce setting "desired" for 'smb encrypt' and 'client/server signing'
[samba.git] / libcli / smb / smb_constants.h
index 1715d9ee395fb0c88c7b8db393d50e3538544ec6..6dbaa288e2ec4133abde464d1d3d07dfb51f5555 100644 (file)
@@ -84,15 +84,18 @@ enum protocol_types {
        PROTOCOL_NT1,
        PROTOCOL_SMB2_02,
        PROTOCOL_SMB2_10,
-       PROTOCOL_SMB2_22
+       PROTOCOL_SMB2_22,
+       PROTOCOL_SMB2_24,
+       PROTOCOL_SMB3_00
 };
+#define PROTOCOL_LATEST PROTOCOL_SMB3_00
 
 enum smb_signing_setting {
-       SMB_SIGNING_DEFAULT,
-       SMB_SIGNING_OFF,
-       SMB_SIGNING_IF_REQUIRED,
-       SMB_SIGNING_SUPPORTED=SMB_SIGNING_IF_REQUIRED,
-       SMB_SIGNING_REQUIRED,
+       SMB_SIGNING_DEFAULT = -1,
+       SMB_SIGNING_OFF = 0,
+       SMB_SIGNING_IF_REQUIRED = 1,
+       SMB_SIGNING_DESIRED = 2,
+       SMB_SIGNING_REQUIRED = 3,
 };
 
 /* types of buffers in core SMB protocol */
@@ -206,6 +209,14 @@ enum smb_signing_setting {
 #define NEGOTIATE_SECURITY_SIGNATURES_ENABLED  0x04
 #define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08
 
+/*
+ * The negotiated buffer size for non LARGE_READX/WRITEX
+ * should be limited to uint16_t and has to be at least
+ * 500, which is the default for MinClientBufferSize on Windows.
+ */
+#define SMB_BUFFER_SIZE_MIN 500
+#define SMB_BUFFER_SIZE_MAX 65535
+
 /* Capabilities.  see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */
 
 #define CAP_RAW_MODE           0x00000001
@@ -251,6 +262,16 @@ enum smb_signing_setting {
 #define SMB_CAP_CLIENT_MASK ( \
        CAP_DYNAMIC_REAUTH | \
        0)
+/*
+ * Older Samba releases (<= 3.6.x)
+ * expect the client to send CAP_LARGE_READX
+ * in order to let the client use large reads.
+ */
+#define SMB_CAP_LEGACY_CLIENT_MASK ( \
+       SMB_CAP_CLIENT_MASK | \
+       CAP_LARGE_READX | \
+       CAP_LARGE_WRITEX | \
+       0)
 
 /* Client-side offline caching policy types */
 enum csc_policy {
@@ -260,6 +281,19 @@ enum csc_policy {
        CSC_POLICY_DISABLE=3
 };
 
+/* TCONX Flag (smb_vwv2). [MS-SMB] 2.2.4.7.1 */
+#define TCONX_FLAG_DISCONNECT_TID       0x0001
+#define TCONX_FLAG_EXTENDED_SIGNATURES  0x0004
+#define TCONX_FLAG_EXTENDED_RESPONSE   0x0008
+
+/* this is used on a TConX. [MS-SMB] 2.2.4.7.2 */
+#define SMB_SUPPORT_SEARCH_BITS        0x0001
+#define SMB_SHARE_IN_DFS               0x0002
+#define SMB_CSC_MASK                   0x000C
+#define SMB_CSC_POLICY_SHIFT           2
+#define SMB_UNIQUE_FILE_NAME           0x0010
+#define SMB_EXTENDED_SIGNATURES        0x0020
+
 /* NT Flags2 bits - cifs6.txt section 3.1.2 */
 #define FLAGS2_LONG_PATH_COMPONENTS    0x0001
 #define FLAGS2_EXTENDED_ATTRIBUTES     0x0002
@@ -338,6 +372,25 @@ enum csc_policy {
 #define OPLOCK_BREAK_TO_NONE     0
 #define OPLOCK_BREAK_TO_LEVEL_II 1
 
+/* Filesystem Attributes. */
+#define FILE_CASE_SENSITIVE_SEARCH      0x00000001
+#define FILE_CASE_PRESERVED_NAMES       0x00000002
+#define FILE_UNICODE_ON_DISK            0x00000004
+/* According to cifs9f, this is 4, not 8 */
+/* Acconding to testing, this actually sets the security attribute! */
+#define FILE_PERSISTENT_ACLS            0x00000008
+#define FILE_FILE_COMPRESSION           0x00000010
+#define FILE_VOLUME_QUOTAS              0x00000020
+#define FILE_SUPPORTS_SPARSE_FILES      0x00000040
+#define FILE_SUPPORTS_REPARSE_POINTS    0x00000080
+#define FILE_SUPPORTS_REMOTE_STORAGE    0x00000100
+#define FS_LFN_APIS                     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
+
 
 /* ioctl codes */
 #define IOCTL_QUERY_JOB_INFO      0x530060
@@ -352,8 +405,11 @@ enum csc_policy {
 #define FSCTL_ACCESS_READ      0x00004000
 #define FSCTL_ACCESS_WRITE     0x00008000
 
+#define IOCTL_DEV_TYPE_MASK    0xFFFF0000
+
 #define FSCTL_DFS                      0x00060000
 #define FSCTL_DFS_GET_REFERRALS                (FSCTL_DFS | FSCTL_ACCESS_ANY | 0x0194 | FSCTL_METHOD_BUFFERED)
+#define FSCTL_DFS_GET_REFERRALS_EX     (FSCTL_DFS | FSCTL_ACCESS_ANY | 0x01B0 | FSCTL_METHOD_BUFFERED)
 
 #define FSCTL_FILESYSTEM               0x00090000
 #define FSCTL_REQUEST_OPLOCK_LEVEL_1    (FSCTL_FILESYSTEM | FSCTL_ACCESS_ANY | 0x0000 | FSCTL_METHOD_BUFFERED)
@@ -375,6 +431,9 @@ enum csc_policy {
 #define FSCTL_CREATE_OR_GET_OBJECT_ID  (FSCTL_FILESYSTEM | FSCTL_ACCESS_ANY | 0x00C0 | FSCTL_METHOD_BUFFERED)
 #define FSCTL_SET_SPARSE               (FSCTL_FILESYSTEM | FSCTL_ACCESS_ANY | 0x00C4 | FSCTL_METHOD_BUFFERED)
 #define FSCTL_QUERY_ALLOCATED_RANGES   (FSCTL_FILESYSTEM | FSCTL_ACCESS_READ | 0x00CC | FSCTL_METHOD_NEITHER)
+#define FSCTL_FILE_LEVEL_TRIM          (FSCTL_FILESYSTEM | FSCTL_ACCESS_WRITE | 0x0208 | FSCTL_METHOD_BUFFERED)
+#define FSCTL_OFFLOAD_READ             (FSCTL_FILESYSTEM | FSCTL_ACCESS_READ | 0x0264 | FSCTL_METHOD_BUFFERED)
+#define FSCTL_OFFLOAD_WRITE            (FSCTL_FILESYSTEM | FSCTL_ACCESS_WRITE | 0x0268 | FSCTL_METHOD_BUFFERED)
 
 #define FSCTL_NAMED_PIPE               0x00110000
 #define FSCTL_PIPE_PEEK                        (FSCTL_NAMED_PIPE | FSCTL_ACCESS_READ | 0x000C | FSCTL_METHOD_BUFFERED)
@@ -391,5 +450,17 @@ enum csc_policy {
 #define FSCTL_SRV_COPYCHUNK_WRITE      (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_WRITE | 0x00F0 | FSCTL_METHOD_OUT_DIRECT)
 #define FSCTL_SRV_READ_HASH            (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_READ| 0x01B8 | FSCTL_METHOD_NEITHER)
 #define FSCTL_LMR_REQ_RESILIENCY       (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_ANY | 0x01D4 | FSCTL_METHOD_BUFFERED)
+#define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION \
+       (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_ANY | 0x00EC | FSCTL_METHOD_BUFFERED)
+#define FSCTL_QUERY_NETWORK_INTERFACE_INFO \
+       (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_ANY | 0x01FC | FSCTL_METHOD_BUFFERED)
+
+/*
+ * FSCTL_VALIDATE_NEGOTIATE_INFO_224 was used used in
+ * Windows 8 server beta with SMB 2.24
+ */
+#define FSCTL_VALIDATE_NEGOTIATE_INFO_224 \
+       (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_ANY | 0x0200 | FSCTL_METHOD_BUFFERED)
+#define FSCTL_VALIDATE_NEGOTIATE_INFO  (FSCTL_NETWORK_FILESYSTEM | FSCTL_ACCESS_ANY | 0x0204 | FSCTL_METHOD_BUFFERED)
 
 #endif /* _SMB_CONSTANTS_H */