]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: add and use MS-FSCC Codes from 2.4 and 2.5
authorRalph Boehme <slow@samba.org>
Fri, 23 Oct 2020 14:21:16 +0000 (16:21 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 23 Oct 2020 17:44:34 +0000 (17:44 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/include/trans2.h

index ece436a048f4ce16420a21259e5537b3bd51f9cb..16e50b59b7de0a986fc19f3908be9fffb15e79b1 100644 (file)
@@ -290,68 +290,134 @@ Byte offset   Type     name                description
 
 #define SSINFO_OFFSET_UNKNOWN                          0xffffffff
 
+/* MS-FSCC 2.4 File Information Classes */
+
+#define FSCC_FILE_DIRECTORY_INFORMATION                        1
+#define FSCC_FILE_FULL_DIRECTORY_INFORMATION           2
+#define FSCC_FILE_BOTH_DIRECTORY_INFORMATION           3
+#define FSCC_FILE_BASIC_INFORMATION                    4
+#define FSCC_FILE_STANDARD_INFORMATION                 5
+#define FSCC_FILE_INTERNAL_INFORMATION                 6
+#define FSCC_FILE_EA_INFORMATION                       7
+#define FSCC_FILE_ACCESS_INFORMATION                   8
+#define FSCC_FILE_NAME_INFORMATION                     9
+#define FSCC_FILE_RENAME_INFORMATION                   10
+#define FSCC_FILE_LINK_INFORMATION                     11
+#define FSCC_FILE_NAMES_INFORMATION                    12
+#define FSCC_FILE_DISPOSITION_INFORMATION              13
+#define FSCC_FILE_POSITION_INFORMATION                 14
+#define FSCC_FILE_FULL_EA_INFORMATION                  15
+#define FSCC_FILE_MODE_INFORMATION                     16
+#define FSCC_FILE_ALIGNMENT_INFORMATION                        17
+#define FSCC_FILE_ALL_INFORMATION                      18
+#define FSCC_FILE_ALLOCATION_INFORMATION               19
+#define FSCC_FILE_END_OF_FILE_INFORMATION              20
+#define FSCC_FILE_ALTERNATE_NAME_INFORMATION           21
+#define FSCC_FILE_STREAM_INFORMATION                   22
+#define FSCC_FILE_PIPE_INFORMATION                     23
+#define FSCC_FILE_PIPE_LOCAL_INFORMATION               24
+#define FSCC_FILE_PIPE_REMOTE_INFORMATION              25
+#define FSCC_FILE_MAILSLOT_QUERY_INFORMATION           26
+#define FSCC_FILE_MAILSLOT_SET_INFORMATION             27
+#define FSCC_FILE_COMPRESSION_INFORMATION              28
+#define FSCC_FILE_OBJECTID_INFORMATION                 29
+#define FSCC_FILE_COMPLETION_INFORMATION               30
+#define FSCC_FILE_MOVE_CLUSTER_INFORMATION             31
+#define FSCC_FILE_QUOTA_INFORMATION                    32
+#define FSCC_FILE_REPARSEPOINT_INFORMATION             33
+#define FSCC_FILE_NETWORK_OPEN_INFORMATION             34
+#define FSCC_FILE_ATTRIBUTE_TAG_INFORMATION            35
+#define FSCC_FILE_TRACKING_INFORMATION                 36
+#define FSCC_FILE_ID_BOTH_DIRECTORY_INFORMATION                37
+#define FSCC_FILE_ID_FULL_DIRECTORY_INFORMATION                38
+#define FSCC_FILE_VALID_DATA_LENGTH_INFORMATION                39
+#define FSCC_FILE_SHORT_NAME_INFORMATION               40
+#define FSCC_FILE_SFIO_RESERVE_INFORMATION             44
+#define FSCC_FILE_SFIO_VOLUME_INFORMATION              45
+#define FSCC_FILE_HARD_LINK_INFORMATION                        46
+#define FSCC_FILE_NORMALIZED_NAME_INFORMATION          48
+#define FSCC_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION   50
+#define FSCC_FILE_STANDARD_LINK_INFORMATION            54
+#define FSCC_FILE_MAXIMUM_INFORMATION                  55
+
+/* MS-FSCC 2.4 File System Information Classes */
+
+#define FSCC_FS_VOLUME_INFORMATION                     1
+#define FSCC_FS_LABEL_INFORMATION                      2
+#define FSCC_FS_SIZE_INFORMATION                       3
+#define FSCC_FS_DEVICE_INFORMATION                     4
+#define FSCC_FS_ATTRIBUTE_INFORMATION                  5
+#define FSCC_FS_QUOTA_INFORMATION                      6
+#define FSCC_FS_FULL_SIZE_INFORMATION                  7
+#define FSCC_FS_OBJECTID_INFORMATION                   8
+#define FSCC_FS_SECTOR_SIZE_INFORMATION                        11
+
 /* NT passthrough levels... */
 
-#define SMB_FILE_DIRECTORY_INFORMATION                 1001
-#define SMB_FILE_FULL_DIRECTORY_INFORMATION            1002
-#define SMB_FILE_BOTH_DIRECTORY_INFORMATION            1003
-#define SMB_FILE_BASIC_INFORMATION                     1004
-#define SMB_FILE_STANDARD_INFORMATION                  1005
-#define SMB_FILE_INTERNAL_INFORMATION                  1006
-#define SMB_FILE_EA_INFORMATION                                1007
-#define SMB_FILE_ACCESS_INFORMATION                    1008
-#define SMB_FILE_NAME_INFORMATION                      1009
-#define SMB_FILE_RENAME_INFORMATION                    1010
-#define SMB2_FILE_RENAME_INFORMATION_INTERNAL          0xFF0A  /* Internal mapped version. */
-#define SMB_FILE_LINK_INFORMATION                      1011
-#define SMB_FILE_NAMES_INFORMATION                     1012
-#define SMB_FILE_DISPOSITION_INFORMATION               1013
-#define SMB_FILE_POSITION_INFORMATION                  1014
-#define SMB_FILE_FULL_EA_INFORMATION                   1015
-#define SMB_FILE_MODE_INFORMATION                      1016
-#define SMB_FILE_ALIGNMENT_INFORMATION                 1017
-#define SMB_FILE_ALL_INFORMATION                       1018
-#define SMB_FILE_ALLOCATION_INFORMATION                        1019
-#define SMB_FILE_END_OF_FILE_INFORMATION               1020
-#define SMB_FILE_ALTERNATE_NAME_INFORMATION            1021
-#define SMB_FILE_STREAM_INFORMATION                    1022
-#define SMB_FILE_PIPE_INFORMATION                      1023
-#define SMB_FILE_PIPE_LOCAL_INFORMATION                        1024
-#define SMB_FILE_PIPE_REMOTE_INFORMATION               1025
-#define SMB_FILE_MAILSLOT_QUERY_INFORMATION            1026
-#define SMB_FILE_MAILSLOT_SET_INFORMATION              1027
-#define SMB_FILE_COMPRESSION_INFORMATION               1028
-#define SMB_FILE_OBJECTID_INFORMATION                  1029
-#define SMB_FILE_COMPLETION_INFORMATION                        1030
-#define SMB_FILE_MOVE_CLUSTER_INFORMATION              1031
-#define SMB_FILE_QUOTA_INFORMATION                     1032
-#define SMB_FILE_REPARSEPOINT_INFORMATION              1033
-#define SMB_FILE_NETWORK_OPEN_INFORMATION              1034
-#define SMB_FILE_ATTRIBUTE_TAG_INFORMATION             1035
-#define SMB_FILE_TRACKING_INFORMATION                  1036
-#define SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION         1037
-#define SMB_FILE_ID_FULL_DIRECTORY_INFORMATION         1038
-#define SMB_FILE_VALID_DATA_LENGTH_INFORMATION         1039
-#define SMB_FILE_SHORT_NAME_INFORMATION                        1040
-#define SMB_FILE_SFIO_RESERVE_INFORMATION              1044
-#define SMB_FILE_SFIO_VOLUME_INFORMATION               1045
-#define SMB_FILE_HARD_LINK_INFORMATION                 1046
-#define SMB_FILE_NORMALIZED_NAME_INFORMATION           1048
-#define SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION    1050
-#define SMB_FILE_STANDARD_LINK_INFORMATION             1054
-#define SMB_FILE_MAXIMUM_INFORMATION                   1055
+#define NT_PASSTHROUGH_OFFSET 1000
+#define SMB2_INFO_SPECIAL 0xFF00
+
+#define SMB_FILE_DIRECTORY_INFORMATION                 (FSCC_FILE_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_FULL_DIRECTORY_INFORMATION            (FSCC_FILE_FULL_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_BOTH_DIRECTORY_INFORMATION            (FSCC_FILE_BOTH_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_BASIC_INFORMATION                     (FSCC_FILE_BASIC_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STANDARD_INFORMATION                  (FSCC_FILE_STANDARD_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_INTERNAL_INFORMATION                  (FSCC_FILE_INTERNAL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_EA_INFORMATION                                (FSCC_FILE_EA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ACCESS_INFORMATION                    (FSCC_FILE_ACCESS_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NAME_INFORMATION                      (FSCC_FILE_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_RENAME_INFORMATION                    (FSCC_FILE_RENAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_LINK_INFORMATION                      (FSCC_FILE_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NAMES_INFORMATION                     (FSCC_FILE_NAMES_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_DISPOSITION_INFORMATION               (FSCC_FILE_DISPOSITION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_POSITION_INFORMATION                  (FSCC_FILE_POSITION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_FULL_EA_INFORMATION                   (FSCC_FILE_FULL_EA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MODE_INFORMATION                      (FSCC_FILE_MODE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALIGNMENT_INFORMATION                 (FSCC_FILE_ALIGNMENT_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALL_INFORMATION                       (FSCC_FILE_ALL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALLOCATION_INFORMATION                        (FSCC_FILE_ALLOCATION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_END_OF_FILE_INFORMATION               (FSCC_FILE_END_OF_FILE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALTERNATE_NAME_INFORMATION            (FSCC_FILE_ALTERNATE_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STREAM_INFORMATION                    (FSCC_FILE_STREAM_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_INFORMATION                      (FSCC_FILE_PIPE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_LOCAL_INFORMATION                        (FSCC_FILE_PIPE_LOCAL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_REMOTE_INFORMATION               (FSCC_FILE_PIPE_REMOTE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAILSLOT_QUERY_INFORMATION            (FSCC_FILE_MAILSLOT_QUERY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAILSLOT_SET_INFORMATION              (FSCC_FILE_MAILSLOT_SET_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_COMPRESSION_INFORMATION               (FSCC_FILE_COMPRESSION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_OBJECTID_INFORMATION                  (FSCC_FILE_OBJECTID_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_COMPLETION_INFORMATION                        (FSCC_FILE_COMPLETION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MOVE_CLUSTER_INFORMATION              (FSCC_FILE_MOVE_CLUSTER_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_QUOTA_INFORMATION                     (FSCC_FILE_QUOTA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_REPARSEPOINT_INFORMATION              (FSCC_FILE_REPARSEPOINT_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NETWORK_OPEN_INFORMATION              (FSCC_FILE_NETWORK_OPEN_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ATTRIBUTE_TAG_INFORMATION             (FSCC_FILE_ATTRIBUTE_TAG_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_TRACKING_INFORMATION                  (FSCC_FILE_TRACKING_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION         (FSCC_FILE_ID_BOTH_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_FULL_DIRECTORY_INFORMATION         (FSCC_FILE_ID_FULL_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_VALID_DATA_LENGTH_INFORMATION         (FSCC_FILE_VALID_DATA_LENGTH_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SHORT_NAME_INFORMATION                        (FSCC_FILE_SHORT_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SFIO_RESERVE_INFORMATION              (FSCC_FILE_SFIO_RESERVE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SFIO_VOLUME_INFORMATION               (FSCC_FILE_SFIO_VOLUME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_HARD_LINK_INFORMATION                 (FSCC_FILE_HARD_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NORMALIZED_NAME_INFORMATION           (FSCC_FILE_NORMALIZED_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION    (FSCC_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STANDARD_LINK_INFORMATION             (FSCC_FILE_STANDARD_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAXIMUM_INFORMATION                   (FSCC_FILE_MAXIMUM_INFORMATION + NT_PASSTHROUGH_OFFSET)
+/* Internal mapped versions. */
+#define SMB2_FILE_RENAME_INFORMATION_INTERNAL          (FSCC_FILE_RENAME_INFORMATION + SMB2_INFO_SPECIAL)
 
 /* NT passthough levels for qfsinfo. */
 
-#define SMB_FS_VOLUME_INFORMATION                      1001
-#define SMB_FS_LABEL_INFORMATION                       1002
-#define SMB_FS_SIZE_INFORMATION                                1003
-#define SMB_FS_DEVICE_INFORMATION                      1004
-#define SMB_FS_ATTRIBUTE_INFORMATION                   1005
-#define SMB_FS_QUOTA_INFORMATION                       1006
-#define SMB_FS_FULL_SIZE_INFORMATION                   1007
-#define SMB_FS_OBJECTID_INFORMATION                    1008
-#define SMB_FS_SECTOR_SIZE_INFORMATION                 1011
+#define SMB_FS_VOLUME_INFORMATION                      (FSCC_FS_VOLUME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_LABEL_INFORMATION                       (FSCC_FS_LABEL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_SIZE_INFORMATION                                (FSCC_FS_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_DEVICE_INFORMATION                      (FSCC_FS_DEVICE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_ATTRIBUTE_INFORMATION                   (FSCC_FS_ATTRIBUTE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_QUOTA_INFORMATION                       (FSCC_FS_QUOTA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_FULL_SIZE_INFORMATION                   (FSCC_FS_FULL_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_OBJECTID_INFORMATION                    (FSCC_FS_OBJECTID_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_SECTOR_SIZE_INFORMATION                 (FSCC_FS_SECTOR_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
 
 /* SMB_FS_DEVICE_INFORMATION device types. */
 #define FILE_DEVICE_CD_ROM             0x2