mirror of https://gitee.com/openkylin/linux.git
[CIFS] Add various missing flags and defintions
Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
20e673810c
commit
675c46796d
|
@ -3,7 +3,14 @@ features such as hierarchical dfs like namespace, hardlinks, locking and more.
|
||||||
It was designed to comply with the SNIA CIFS Technical Reference (which
|
It was designed to comply with the SNIA CIFS Technical Reference (which
|
||||||
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
||||||
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
||||||
servers.
|
servers. This code was developed in participation with the Protocol Freedom
|
||||||
|
Information Foundation.
|
||||||
|
|
||||||
|
Please see
|
||||||
|
http://protocolfreedom.org/ and
|
||||||
|
http://samba.org/samba/PFIF/
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
|
||||||
For questions or bug reports please contact:
|
For questions or bug reports please contact:
|
||||||
sfrench@samba.org (sfrench@us.ibm.com)
|
sfrench@samba.org (sfrench@us.ibm.com)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* fs/cifs/cifspdu.h
|
* fs/cifs/cifspdu.h
|
||||||
*
|
*
|
||||||
* Copyright (c) International Business Machines Corp., 2002,2007
|
* Copyright (c) International Business Machines Corp., 2002,2008
|
||||||
* Author(s): Steve French (sfrench@us.ibm.com)
|
* Author(s): Steve French (sfrench@us.ibm.com)
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or modify
|
* This library is free software; you can redistribute it and/or modify
|
||||||
|
@ -163,7 +163,10 @@
|
||||||
path names in response */
|
path names in response */
|
||||||
#define SMBFLG2_KNOWS_EAS cpu_to_le16(2)
|
#define SMBFLG2_KNOWS_EAS cpu_to_le16(2)
|
||||||
#define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4)
|
#define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4)
|
||||||
|
#define SMBFLG2_COMPRESSED (8)
|
||||||
|
#define SMBFLG2_SECURITY_SIGNATURE_REQUIRED (0x10)
|
||||||
#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40)
|
#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40)
|
||||||
|
#define SMBFLG2_REPARSE_PATH (0x400)
|
||||||
#define SMBFLG2_EXT_SEC cpu_to_le16(0x800)
|
#define SMBFLG2_EXT_SEC cpu_to_le16(0x800)
|
||||||
#define SMBFLG2_DFS cpu_to_le16(0x1000)
|
#define SMBFLG2_DFS cpu_to_le16(0x1000)
|
||||||
#define SMBFLG2_PAGING_IO cpu_to_le16(0x2000)
|
#define SMBFLG2_PAGING_IO cpu_to_le16(0x2000)
|
||||||
|
@ -305,7 +308,7 @@
|
||||||
#define FILE_SHARE_DELETE 0x00000004
|
#define FILE_SHARE_DELETE 0x00000004
|
||||||
#define FILE_SHARE_ALL 0x00000007
|
#define FILE_SHARE_ALL 0x00000007
|
||||||
|
|
||||||
/* CreateDisposition flags */
|
/* CreateDisposition flags, similar to CreateAction as well */
|
||||||
#define FILE_SUPERSEDE 0x00000000
|
#define FILE_SUPERSEDE 0x00000000
|
||||||
#define FILE_OPEN 0x00000001
|
#define FILE_OPEN 0x00000001
|
||||||
#define FILE_CREATE 0x00000002
|
#define FILE_CREATE 0x00000002
|
||||||
|
@ -317,15 +320,25 @@
|
||||||
#define CREATE_NOT_FILE 0x00000001 /* if set must not be file */
|
#define CREATE_NOT_FILE 0x00000001 /* if set must not be file */
|
||||||
#define CREATE_WRITE_THROUGH 0x00000002
|
#define CREATE_WRITE_THROUGH 0x00000002
|
||||||
#define CREATE_SEQUENTIAL 0x00000004
|
#define CREATE_SEQUENTIAL 0x00000004
|
||||||
#define CREATE_SYNC_ALERT 0x00000010
|
#define CREATE_NO_BUFFER 0x00000008 /* should not buffer on srv */
|
||||||
#define CREATE_ASYNC_ALERT 0x00000020
|
#define CREATE_SYNC_ALERT 0x00000010 /* MBZ */
|
||||||
|
#define CREATE_ASYNC_ALERT 0x00000020 /* MBZ */
|
||||||
#define CREATE_NOT_DIR 0x00000040 /* if set must not be directory */
|
#define CREATE_NOT_DIR 0x00000040 /* if set must not be directory */
|
||||||
|
#define CREATE_TREE_CONNECTION 0x00000080 /* should be zero */
|
||||||
|
#define CREATE_COMPLETE_IF_OPLK 0x00000100 /* should be zero */
|
||||||
#define CREATE_NO_EA_KNOWLEDGE 0x00000200
|
#define CREATE_NO_EA_KNOWLEDGE 0x00000200
|
||||||
#define CREATE_EIGHT_DOT_THREE 0x00000400
|
#define CREATE_EIGHT_DOT_THREE 0x00000400 /* doc says this is obsolete
|
||||||
|
open for recovery flag - should
|
||||||
|
be zero */
|
||||||
#define CREATE_RANDOM_ACCESS 0x00000800
|
#define CREATE_RANDOM_ACCESS 0x00000800
|
||||||
#define CREATE_DELETE_ON_CLOSE 0x00001000
|
#define CREATE_DELETE_ON_CLOSE 0x00001000
|
||||||
#define CREATE_OPEN_BY_ID 0x00002000
|
#define CREATE_OPEN_BY_ID 0x00002000
|
||||||
|
#define CREATE_OPEN_BACKUP_INTN 0x00004000
|
||||||
|
#define CREATE_NO_COMPRESSION 0x00008000
|
||||||
|
#define CREATE_RESERVE_OPFILTER 0x00100000 /* should be zero */
|
||||||
#define OPEN_REPARSE_POINT 0x00200000
|
#define OPEN_REPARSE_POINT 0x00200000
|
||||||
|
#define OPEN_NO_RECALL 0x00400000
|
||||||
|
#define OPEN_FREE_SPACE_QUERY 0x00800000 /* should be zero */
|
||||||
#define CREATE_OPTIONS_MASK 0x007FFFFF
|
#define CREATE_OPTIONS_MASK 0x007FFFFF
|
||||||
#define CREATE_OPTION_SPECIAL 0x20000000 /* system. NB not sent over wire */
|
#define CREATE_OPTION_SPECIAL 0x20000000 /* system. NB not sent over wire */
|
||||||
|
|
||||||
|
@ -470,7 +483,7 @@ typedef struct lanman_neg_rsp {
|
||||||
|
|
||||||
typedef struct negotiate_rsp {
|
typedef struct negotiate_rsp {
|
||||||
struct smb_hdr hdr; /* wct = 17 */
|
struct smb_hdr hdr; /* wct = 17 */
|
||||||
__le16 DialectIndex;
|
__le16 DialectIndex; /* 0xFFFF = no dialect acceptable */
|
||||||
__u8 SecurityMode;
|
__u8 SecurityMode;
|
||||||
__le16 MaxMpxCount;
|
__le16 MaxMpxCount;
|
||||||
__le16 MaxNumberVcs;
|
__le16 MaxNumberVcs;
|
||||||
|
@ -516,10 +529,11 @@ typedef struct negotiate_rsp {
|
||||||
#define CAP_INFOLEVEL_PASSTHRU 0x00002000
|
#define CAP_INFOLEVEL_PASSTHRU 0x00002000
|
||||||
#define CAP_LARGE_READ_X 0x00004000
|
#define CAP_LARGE_READ_X 0x00004000
|
||||||
#define CAP_LARGE_WRITE_X 0x00008000
|
#define CAP_LARGE_WRITE_X 0x00008000
|
||||||
|
#define CAP_LWIO 0x00010000 /* support fctl_srv_req_resume_key */
|
||||||
#define CAP_UNIX 0x00800000
|
#define CAP_UNIX 0x00800000
|
||||||
#define CAP_RESERVED 0x02000000
|
#define CAP_COMPRESSED_DATA 0x02000000
|
||||||
#define CAP_BULK_TRANSFER 0x20000000
|
#define CAP_DYNAMIC_REAUTH 0x20000000
|
||||||
#define CAP_COMPRESSED_DATA 0x40000000
|
#define CAP_PERSISTENT_HANDLES 0x40000000
|
||||||
#define CAP_EXTENDED_SECURITY 0x80000000
|
#define CAP_EXTENDED_SECURITY 0x80000000
|
||||||
|
|
||||||
typedef union smb_com_session_setup_andx {
|
typedef union smb_com_session_setup_andx {
|
||||||
|
@ -668,9 +682,7 @@ typedef struct smb_com_tconx_req {
|
||||||
} __attribute__((packed)) TCONX_REQ;
|
} __attribute__((packed)) TCONX_REQ;
|
||||||
|
|
||||||
typedef struct smb_com_tconx_rsp {
|
typedef struct smb_com_tconx_rsp {
|
||||||
struct smb_hdr hdr; /* wct = 3 note that Win2000 has sent wct = 7
|
struct smb_hdr hdr; /* wct = 3 , not extended response */
|
||||||
in some cases on responses. Four unspecified
|
|
||||||
words followed OptionalSupport */
|
|
||||||
__u8 AndXCommand;
|
__u8 AndXCommand;
|
||||||
__u8 AndXReserved;
|
__u8 AndXReserved;
|
||||||
__le16 AndXOffset;
|
__le16 AndXOffset;
|
||||||
|
@ -680,13 +692,48 @@ typedef struct smb_com_tconx_rsp {
|
||||||
/* STRING NativeFileSystem */
|
/* STRING NativeFileSystem */
|
||||||
} __attribute__((packed)) TCONX_RSP;
|
} __attribute__((packed)) TCONX_RSP;
|
||||||
|
|
||||||
|
typedef struct smb_com_tconx_rsp_ext {
|
||||||
|
struct smb_hdr hdr; /* wct = 7, extended response */
|
||||||
|
__u8 AndXCommand;
|
||||||
|
__u8 AndXReserved;
|
||||||
|
__le16 AndXOffset;
|
||||||
|
__le16 OptionalSupport; /* see below */
|
||||||
|
__le32 MaximalShareAccessRights;
|
||||||
|
__le32 GuestMaximalShareAccessRights;
|
||||||
|
__u16 ByteCount;
|
||||||
|
unsigned char Service[1]; /* always ASCII, not Unicode */
|
||||||
|
/* STRING NativeFileSystem */
|
||||||
|
} __attribute__((packed)) TCONX_RSP_EXT;
|
||||||
|
|
||||||
|
|
||||||
/* tree connect Flags */
|
/* tree connect Flags */
|
||||||
#define DISCONNECT_TID 0x0001
|
#define DISCONNECT_TID 0x0001
|
||||||
|
#define TCON_EXTENDED_SIGNATURES 0x0004
|
||||||
#define TCON_EXTENDED_SECINFO 0x0008
|
#define TCON_EXTENDED_SECINFO 0x0008
|
||||||
|
|
||||||
/* OptionalSupport bits */
|
/* OptionalSupport bits */
|
||||||
#define SMB_SUPPORT_SEARCH_BITS 0x0001 /* "must have" directory search bits
|
#define SMB_SUPPORT_SEARCH_BITS 0x0001 /* "must have" directory search bits
|
||||||
(exclusive searches supported) */
|
(exclusive searches supported) */
|
||||||
#define SMB_SHARE_IS_IN_DFS 0x0002
|
#define SMB_SHARE_IS_IN_DFS 0x0002
|
||||||
|
#define SMB_CSC_MASK 0x000C
|
||||||
|
/* CSC flags defined as follows */
|
||||||
|
#define SMB_CSC_CACHE_MANUAL_REINT 0x0000
|
||||||
|
#define SMB_CSC_CACHE_AUTO_REINT 0x0004
|
||||||
|
#define SMB_CSC_CACHE_VDO 0x0008
|
||||||
|
#define SMB_CSC_NO_CACHING 0x000C
|
||||||
|
|
||||||
|
#define SMB_UNIQUE_FILE_NAME 0x0010
|
||||||
|
#define SMB_EXTENDED_SIGNATURES 0x0020
|
||||||
|
|
||||||
|
/* services
|
||||||
|
*
|
||||||
|
* A: ie disk
|
||||||
|
* LPT1: ie printer
|
||||||
|
* IPC ie named pipe
|
||||||
|
* COMM
|
||||||
|
* ????? ie any type
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
typedef struct smb_com_logoff_andx_req {
|
typedef struct smb_com_logoff_andx_req {
|
||||||
struct smb_hdr hdr; /* wct = 2 */
|
struct smb_hdr hdr; /* wct = 2 */
|
||||||
|
@ -750,6 +797,17 @@ typedef struct smb_com_findclose_req {
|
||||||
#define COMM_DEV_TYPE 0x0004
|
#define COMM_DEV_TYPE 0x0004
|
||||||
#define UNKNOWN_TYPE 0xFFFF
|
#define UNKNOWN_TYPE 0xFFFF
|
||||||
|
|
||||||
|
/* Device Type or File Status Flags */
|
||||||
|
#define NO_EAS 0x0001
|
||||||
|
#define NO_SUBSTREAMS 0x0002
|
||||||
|
#define NO_REPARSETAG 0x0004
|
||||||
|
/* following flags can apply if pipe */
|
||||||
|
#define ICOUNT_MASK 0x00FF
|
||||||
|
#define PIPE_READ_MODE 0x0100
|
||||||
|
#define NAMED_PIPE_TYPE 0x0400
|
||||||
|
#define PIPE_END_POINT 0x0800
|
||||||
|
#define BLOCKING_NAMED_PIPE 0x8000
|
||||||
|
|
||||||
typedef struct smb_com_open_req { /* also handles create */
|
typedef struct smb_com_open_req { /* also handles create */
|
||||||
struct smb_hdr hdr; /* wct = 24 */
|
struct smb_hdr hdr; /* wct = 24 */
|
||||||
__u8 AndXCommand;
|
__u8 AndXCommand;
|
||||||
|
@ -758,7 +816,7 @@ typedef struct smb_com_open_req { /* also handles create */
|
||||||
__u8 Reserved; /* Must Be Zero */
|
__u8 Reserved; /* Must Be Zero */
|
||||||
__le16 NameLength;
|
__le16 NameLength;
|
||||||
__le32 OpenFlags;
|
__le32 OpenFlags;
|
||||||
__le32 RootDirectoryFid;
|
__u32 RootDirectoryFid;
|
||||||
__le32 DesiredAccess;
|
__le32 DesiredAccess;
|
||||||
__le64 AllocationSize;
|
__le64 AllocationSize;
|
||||||
__le32 FileAttributes;
|
__le32 FileAttributes;
|
||||||
|
@ -801,6 +859,32 @@ typedef struct smb_com_open_rsp {
|
||||||
__u16 ByteCount; /* bct = 0 */
|
__u16 ByteCount; /* bct = 0 */
|
||||||
} __attribute__((packed)) OPEN_RSP;
|
} __attribute__((packed)) OPEN_RSP;
|
||||||
|
|
||||||
|
typedef struct smb_com_open_rsp_ext {
|
||||||
|
struct smb_hdr hdr; /* wct = 42 but meaningless due to MS bug? */
|
||||||
|
__u8 AndXCommand;
|
||||||
|
__u8 AndXReserved;
|
||||||
|
__le16 AndXOffset;
|
||||||
|
__u8 OplockLevel;
|
||||||
|
__u16 Fid;
|
||||||
|
__le32 CreateAction;
|
||||||
|
__le64 CreationTime;
|
||||||
|
__le64 LastAccessTime;
|
||||||
|
__le64 LastWriteTime;
|
||||||
|
__le64 ChangeTime;
|
||||||
|
__le32 FileAttributes;
|
||||||
|
__le64 AllocationSize;
|
||||||
|
__le64 EndOfFile;
|
||||||
|
__le16 FileType;
|
||||||
|
__le16 DeviceState;
|
||||||
|
__u8 DirectoryFlag;
|
||||||
|
__u8 VolumeGUID[16];
|
||||||
|
__u64 FileId; /* note no endian conversion - is opaque UniqueID */
|
||||||
|
__le32 MaximalAccessRights;
|
||||||
|
__le32 GuestMaximalAccessRights;
|
||||||
|
__u16 ByteCount; /* bct = 0 */
|
||||||
|
} __attribute__((packed)) OPEN_RSP_EXT;
|
||||||
|
|
||||||
|
|
||||||
/* format of legacy open request */
|
/* format of legacy open request */
|
||||||
typedef struct smb_com_openx_req {
|
typedef struct smb_com_openx_req {
|
||||||
struct smb_hdr hdr; /* wct = 15 */
|
struct smb_hdr hdr; /* wct = 15 */
|
||||||
|
|
Loading…
Reference in New Issue