This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to...
[samba.git] / source3 / include / trans2.h
index 70285358bc4cd6392f3f2a3f5b718c9fb2fc79c3..3a6fe6e9ee1ed4636268d5c463d7fe0d049703b2 100644 (file)
@@ -1,8 +1,7 @@
 /* 
-   Unix SMB/Netbios implementation.
-   Version 1.9.
+   Unix SMB/CIFS implementation.
    SMB transaction2 handling
-   Copyright (C) Jeremy Allison 1994-1997
+   Copyright (C) Jeremy Allison 1994-2002.
 
    Extensively modified by Andrew Tridgell, 1995
 
@@ -194,6 +193,11 @@ Byte offset   Type     name                description
 } FSINFO;
 *************************************************************/
 
+#define SMB_INFO_STANDARD               1
+#define SMB_INFO_QUERY_EA_SIZE          2
+#define SMB_INFO_QUERY_EAS_FROM_LIST    3
+#define SMB_INFO_QUERY_ALL_EAS          4
+#define SMB_INFO_IS_NAME_VALID          6
 #define SMB_QUERY_FS_LABEL_INFO                        0x101
 #define SMB_QUERY_FS_VOLUME_INFO               0x102
 #define SMB_QUERY_FS_SIZE_INFO                 0x103
@@ -226,21 +230,208 @@ Byte offset   Type     name                description
 #define SMB_SET_FILE_ALLOCATION_INFO   0x103
 #define SMB_SET_FILE_END_OF_FILE_INFO  0x104
 
+/*
+ * Thursby MAC extensions....
+ */
+
+/*
+ * MAC CIFS Extensions have the range 0x300 - 0x2FF reserved.
+ * Supposedly Microsoft have agreed to this.
+ */
+
+#define MIN_MAC_INFO_LEVEL 0x300
+#define MAX_MAC_INFO_LEVEL 0x3FF
+
+#define SMB_MAC_QUERY_FS_INFO           0x301
+
 #define DIRLEN_GUESS (45+MAX(l1_achName,l2_achName))
 
-/* NT uses a FILE_ATTRIBUTE_NORMAL when no other attributes
-   are set. */
+/*
+ * DeviceType and Characteristics returned in a
+ * SMB_QUERY_FS_DEVICE_INFO call.
+ */
+
+#define DEVICETYPE_CD_ROM              0x2
+#define DEVICETYPE_CD_ROM_FILE_SYSTEM  0x3
+#define DEVICETYPE_DISK                        0x7
+#define DEVICETYPE_DISK_FILE_SYSTEM    0x8
+#define DEVICETYPE_FILE_SYSTEM         0x9
+
+/* Characteristics. */
+#define TYPE_REMOVABLE_MEDIA           0x1
+#define TYPE_READ_ONLY_DEVICE          0x2
+#define TYPE_FLOPPY                    0x4
+#define TYPE_WORM                      0x8
+#define TYPE_REMOTE                    0x10
+#define TYPE_MOUNTED                   0x20
+#define TYPE_VIRTUAL                   0x40
+
+/* 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 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_MAXIMUM_INFORMATION                   1037
+
+/* 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_CONTROL_INFORMATION                     1006
+#define SMB_FS_FULL_SIZE_INFORMATION                   1007
+#define SMB_FS_OBJECTID_INFORMATION                    1008
+
+/* UNIX CIFS Extensions - created by HP */
+/*
+ * UNIX CIFS Extensions have the range 0x200 - 0x2FF reserved.
+ * Supposedly Microsoft have agreed to this.
+ */
+
+#define MIN_UNIX_INFO_LEVEL 0x200
+#define MAX_UNIX_INFO_LEVEL 0x2FF
+
+#define INFO_LEVEL_IS_UNIX(level) (((level) >= MIN_UNIX_INFO_LEVEL) && ((level) <= MAX_UNIX_INFO_LEVEL))
+
+#define SMB_QUERY_FILE_UNIX_BASIC      0x200   /* UNIX File Info*/
+#define SMB_SET_FILE_UNIX_BASIC        0x200
+
+#define SMB_MODE_NO_CHANGE                 0xFFFFFFFF     /* file mode value which */
+                                              /* means "don't change it" */
+#define SMB_UID_NO_CHANGE                  0xFFFFFFFF
+#define SMB_GID_NO_CHANGE                  0xFFFFFFFF
+
+/*
+Offset Size         Name
+0      LARGE_INTEGER EndOfFile                File size
+8      LARGE_INTEGER Blocks                   Number of bytes used on disk (st_blocks).
+16     LARGE_INTEGER CreationTime             Creation time
+24     LARGE_INTEGER LastAccessTime           Last access time
+32     LARGE_INTEGER LastModificationTime     Last modification time
+40     LARGE_INTEGER Uid                      Numeric user id for the owner
+48     LARGE_INTEGER Gid                      Numeric group id of owner
+56     ULONG Type                             Enumeration specifying the pathname type:
+                                              0 -- File
+                                              1 -- Directory
+                                              2 -- Symbolic link
+                                              3 -- Character device
+                                              4 -- Block device
+                                              5 -- FIFO (named pipe)
+                                              6 -- Unix domain socket
+
+60     LARGE_INTEGER devmajor                 Major device number if type is device
+68     LARGE_INTEGER devminor                 Minor device number if type is device
+76     LARGE_INTEGER uniqueid                 This is a server-assigned unique id for the file. The client
+                                              will typically map this onto an inode number. The scope of
+                                              uniqueness is the share.
+84     LARGE_INTEGER permissions              Standard UNIX file permissions  - see below.
+92     LARGE_INTEGER nlinks                   The number of directory entries that map to this entry
+                                              (number of hard links)
+
+100 - end.
+*/
 
-#define NT_FILE_ATTRIBUTE_NORMAL        0x80
+/* UNIX filetype mappings. */
+
+#define UNIX_TYPE_FILE 0
+#define UNIX_TYPE_DIR 1
+#define UNIX_TYPE_SYMLINK 2
+#define UNIX_TYPE_CHARDEV 3
+#define UNIX_TYPE_BLKDEV 4
+#define UNIX_TYPE_FIFO 5
+#define UNIX_TYPE_SOCKET 6
+#define UNIX_TYPE_UNKNOWN 0xFFFFFFFF
+
+/*
+ * Oh this is fun. "Standard UNIX permissions" has no
+ * meaning in POSIX. We need to define the mapping onto
+ * and off the wire as this was not done in the original HP
+ * spec. JRA.
+ */
+
+#define UNIX_X_OTH                     0000001
+#define UNIX_W_OTH                     0000002
+#define UNIX_R_OTH                     0000004
+#define UNIX_X_GRP                     0000010
+#define UNIX_W_GRP                      0000020
+#define UNIX_R_GRP                      0000040
+#define UNIX_X_USR                      0000100
+#define UNIX_W_USR                      0000200
+#define UNIX_R_USR                      0000400
+#define UNIX_STICKY                     0001000
+#define UNIX_SET_GID                    0002000
+#define UNIX_SET_UID                    0004000
+
+/* Masks for the above */
+#define UNIX_OTH_MASK                   0000007
+#define UNIX_GRP_MASK                   0000070
+#define UNIX_USR_MASK                   0000700
+#define UNIX_PERM_MASK                  0000777
+#define UNIX_EXTRA_MASK                 0007000
+#define UNIX_ALL_MASK                   0007777
+
+#define SMB_QUERY_FILE_UNIX_LINK       0x201
+#define SMB_SET_FILE_UNIX_LINK         0x201
+#define SMB_SET_FILE_UNIX_HLINK        0x203
+
+#define SMB_FIND_FILE_UNIX             0x202
+
+/*
+ Info level for QVOLINFO - returns version of CIFS UNIX extensions, plus
+ 64-bits worth of capability fun :-).
+*/
 
-/* Function prototypes */
+#define SMB_CIFS_UNIX_QUERY_INFO      0x200
 
+/* Returns the following.
 
-int reply_findnclose(char *inbuf,char *outbuf,int length,int bufsize);
+  UINT16             major version number
+  UINT16             minor version number
+  LARGE_INTEGER      capability bitfield
 
-int reply_findclose(char *inbuf,char *outbuf,int length,int bufsize);
+*/
 
-#endif
+#define CIFS_UNIX_MAJOR_VERSION 1
+#define CIFS_UNIX_MINOR_VERSION 0
 
+#define CIFS_UNIX_FCNTL_LOCKS_CAP           0x1
+#define CIFS_UNIX_POSIX_ACLS_CAP            0x2
 
+/* ... more as we think of them :-). */
 
+#endif