diff options
Diffstat (limited to 'source3/include/trans2.h')
-rw-r--r-- | source3/include/trans2.h | 210 |
1 files changed, 203 insertions, 7 deletions
diff --git a/source3/include/trans2.h b/source3/include/trans2.h index cc366ccaea..3a6fe6e9ee 100644 --- a/source3/include/trans2.h +++ b/source3/include/trans2.h @@ -1,8 +1,7 @@ /* - Unix SMB/Netbios implementation. - Version 1.9. + Unix SMB/CIFS implementation. SMB transaction2 handling - Copyright (C) Jeremy Allison 1994 + 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,16 +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)) -/* Function prototypes */ +/* + * 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. +*/ +/* 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 :-). +*/ -int reply_findnclose(char *inbuf,char *outbuf,int length,int bufsize); +#define SMB_CIFS_UNIX_QUERY_INFO 0x200 -int reply_findclose(char *inbuf,char *outbuf,int length,int bufsize); +/* Returns the following. -#endif + UINT16 major version number + UINT16 minor version number + LARGE_INTEGER capability bitfield + +*/ +#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 |