mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
smb: move some duplicate definitions to common/smb2pdu.h
In order to maintain the code more easily, move duplicate definitions to common header file. There are only 4 different definitions, the client uses cpu_to_le16() but the server does not: - RSS_CAPABLE - RDMA_CAPABLE - INTERNETWORK - INTERNETWORKV6 The other definitions are exactly the same on both client and server. The struct smb_hdr is defined in MS-CIFS and MS-SMB, but it's also used by SMB2 and SMB3, so move it to the common smb2pdu.h. Co-developed-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
committed by
Steve French
parent
96721fd292
commit
1172d85984
@@ -12,6 +12,7 @@
|
||||
#include <net/sock.h>
|
||||
#include <linux/unaligned.h>
|
||||
#include "../common/smbfsctl.h"
|
||||
#include "../common/smb2pdu.h"
|
||||
|
||||
#define CIFS_PROT 0
|
||||
#define POSIX_PROT (CIFS_PROT+1)
|
||||
@@ -179,98 +180,7 @@
|
||||
#define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000)
|
||||
#define SMBFLG2_UNICODE cpu_to_le16(0x8000)
|
||||
|
||||
/*
|
||||
* These are the file access permission bits defined in CIFS for the
|
||||
* NTCreateAndX as well as the level 0x107
|
||||
* TRANS2_QUERY_PATH_INFORMATION API. The level 0x107, SMB_QUERY_FILE_ALL_INFO
|
||||
* responds with the AccessFlags.
|
||||
* The AccessFlags specifies the access permissions a caller has to the
|
||||
* file and can have any suitable combination of the following values:
|
||||
*/
|
||||
|
||||
#define FILE_READ_DATA 0x00000001 /* Data can be read from the file */
|
||||
/* or directory child entries can */
|
||||
/* be listed together with the */
|
||||
/* associated child attributes */
|
||||
/* (so the FILE_READ_ATTRIBUTES on */
|
||||
/* the child entry is not needed) */
|
||||
#define FILE_WRITE_DATA 0x00000002 /* Data can be written to the file */
|
||||
/* or new file can be created in */
|
||||
/* the directory */
|
||||
#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the file */
|
||||
/* (for non-local files over SMB it */
|
||||
/* is same as FILE_WRITE_DATA) */
|
||||
/* or new subdirectory can be */
|
||||
/* created in the directory */
|
||||
#define FILE_READ_EA 0x00000008 /* Extended attributes associated */
|
||||
/* with the file can be read */
|
||||
#define FILE_WRITE_EA 0x00000010 /* Extended attributes associated */
|
||||
/* with the file can be written */
|
||||
#define FILE_EXECUTE 0x00000020 /*Data can be read into memory from */
|
||||
/* the file using system paging I/O */
|
||||
/* for executing the file / script */
|
||||
/* or right to traverse directory */
|
||||
/* (but by default all users have */
|
||||
/* directory bypass traverse */
|
||||
/* privilege and do not need this */
|
||||
/* permission on directories at all)*/
|
||||
#define FILE_DELETE_CHILD 0x00000040 /* Child entry can be deleted from */
|
||||
/* the directory (so the DELETE on */
|
||||
/* the child entry is not needed) */
|
||||
#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with the */
|
||||
/* file or directory can be read */
|
||||
#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with the */
|
||||
/* file or directory can be written */
|
||||
#define DELETE 0x00010000 /* The file or dir can be deleted */
|
||||
#define READ_CONTROL 0x00020000 /* The discretionary access control */
|
||||
/* list and ownership associated */
|
||||
/* with the file or dir can be read */
|
||||
#define WRITE_DAC 0x00040000 /* The discretionary access control */
|
||||
/* list associated with the file or */
|
||||
/* directory can be written */
|
||||
#define WRITE_OWNER 0x00080000 /* Ownership information associated */
|
||||
/* with the file/dir can be written */
|
||||
#define SYNCHRONIZE 0x00100000 /* The file handle can waited on to */
|
||||
/* synchronize with the completion */
|
||||
/* of an input/output request */
|
||||
#define SYSTEM_SECURITY 0x01000000 /* The system access control list */
|
||||
/* associated with the file or */
|
||||
/* directory can be read or written */
|
||||
/* (cannot be in DACL, can in SACL) */
|
||||
#define MAXIMUM_ALLOWED 0x02000000 /* Maximal subset of GENERIC_ALL */
|
||||
/* permissions which can be granted */
|
||||
/* (cannot be in DACL nor SACL) */
|
||||
#define GENERIC_ALL 0x10000000 /* Same as: GENERIC_EXECUTE | */
|
||||
/* GENERIC_WRITE | */
|
||||
/* GENERIC_READ | */
|
||||
/* FILE_DELETE_CHILD | */
|
||||
/* DELETE | */
|
||||
/* WRITE_DAC | */
|
||||
/* WRITE_OWNER */
|
||||
/* So GENERIC_ALL contains all bits */
|
||||
/* mentioned above except these two */
|
||||
/* SYSTEM_SECURITY MAXIMUM_ALLOWED */
|
||||
#define GENERIC_EXECUTE 0x20000000 /* Same as: FILE_EXECUTE | */
|
||||
/* FILE_READ_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
#define GENERIC_WRITE 0x40000000 /* Same as: FILE_WRITE_DATA | */
|
||||
/* FILE_APPEND_DATA | */
|
||||
/* FILE_WRITE_EA | */
|
||||
/* FILE_WRITE_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
#define GENERIC_READ 0x80000000 /* Same as: FILE_READ_DATA | */
|
||||
/* FILE_READ_EA | */
|
||||
/* FILE_READ_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
|
||||
#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES)
|
||||
#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
|
||||
| FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
|
||||
#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
|
||||
|
||||
/* Combinations of file access permission bits */
|
||||
#define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_WRITE_EA \
|
||||
| FILE_READ_ATTRIBUTES \
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
@@ -282,15 +192,6 @@
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
| WRITE_OWNER | SYNCHRONIZE)
|
||||
#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
|
||||
| FILE_READ_ATTRIBUTES \
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
| WRITE_OWNER | SYNCHRONIZE)
|
||||
|
||||
#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
|
||||
| READ_CONTROL | SYNCHRONIZE)
|
||||
|
||||
|
||||
/*
|
||||
* Invalid readdir handle
|
||||
@@ -416,38 +317,6 @@
|
||||
#define GETU16(var) (*((__u16 *)var)) /* BB check for endian issues */
|
||||
#define GETU32(var) (*((__u32 *)var)) /* BB check for endian issues */
|
||||
|
||||
struct smb_hdr {
|
||||
__be32 smb_buf_length; /* BB length is only two (rarely three) bytes,
|
||||
with one or two byte "type" preceding it that will be
|
||||
zero - we could mask the type byte off */
|
||||
__u8 Protocol[4];
|
||||
__u8 Command;
|
||||
union {
|
||||
struct {
|
||||
__u8 ErrorClass;
|
||||
__u8 Reserved;
|
||||
__le16 Error;
|
||||
} __attribute__((packed)) DosError;
|
||||
__le32 CifsError;
|
||||
} __attribute__((packed)) Status;
|
||||
__u8 Flags;
|
||||
__le16 Flags2; /* note: le */
|
||||
__le16 PidHigh;
|
||||
union {
|
||||
struct {
|
||||
__le32 SequenceNumber; /* le */
|
||||
__u32 Reserved; /* zero */
|
||||
} __attribute__((packed)) Sequence;
|
||||
__u8 SecuritySignature[8]; /* le */
|
||||
} __attribute__((packed)) Signature;
|
||||
__u8 pad[2];
|
||||
__u16 Tid;
|
||||
__le16 Pid;
|
||||
__u16 Uid;
|
||||
__le16 Mid;
|
||||
__u8 WordCount;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* given a pointer to an smb_hdr, retrieve a void pointer to the ByteCount */
|
||||
static inline void *
|
||||
BCC(struct smb_hdr *smb)
|
||||
|
||||
@@ -133,11 +133,6 @@ struct share_redirect_error_context_rsp {
|
||||
#define SMB2_LEASE_HANDLE_CACHING_HE 0x02
|
||||
#define SMB2_LEASE_WRITE_CACHING_HE 0x04
|
||||
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.11 */
|
||||
/* Flags */
|
||||
#define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.5 */
|
||||
struct crt_twarp_ctxt {
|
||||
struct create_context_hdr ccontext;
|
||||
@@ -198,22 +193,6 @@ struct network_resiliency_req {
|
||||
} __packed;
|
||||
/* There is no buffer for the response ie no struct network_resiliency_rsp */
|
||||
|
||||
#define RSS_CAPABLE cpu_to_le32(0x00000001)
|
||||
#define RDMA_CAPABLE cpu_to_le32(0x00000002)
|
||||
|
||||
#define INTERNETWORK cpu_to_le16(0x0002)
|
||||
#define INTERNETWORKV6 cpu_to_le16(0x0017)
|
||||
|
||||
struct network_interface_info_ioctl_rsp {
|
||||
__le32 Next; /* next interface. zero if this is last one */
|
||||
__le32 IfIndex;
|
||||
__le32 Capability; /* RSS or RDMA Capable */
|
||||
__le32 Reserved;
|
||||
__le64 LinkSpeed;
|
||||
__le16 Family;
|
||||
__u8 Buffer[126];
|
||||
} __packed;
|
||||
|
||||
#define NO_FILE_ID 0xFFFFFFFFFFFFFFFFULL /* general ioctls to srv not to file */
|
||||
|
||||
struct compress_ioctl {
|
||||
|
||||
@@ -1149,12 +1149,6 @@ struct smb2_server_client_notification {
|
||||
#define FILE_OVERWRITE_IF_LE cpu_to_le32(0x00000005)
|
||||
#define FILE_CREATE_MASK_LE cpu_to_le32(0x00000007)
|
||||
|
||||
#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \
|
||||
| FILE_READ_ATTRIBUTES)
|
||||
#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
|
||||
| FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
|
||||
#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
|
||||
|
||||
/* CreateOptions Flags */
|
||||
#define FILE_DIRECTORY_FILE_LE cpu_to_le32(0x00000001)
|
||||
/* same as #define CREATE_NOT_FILE_LE cpu_to_le32(0x00000001) */
|
||||
@@ -1290,6 +1284,14 @@ struct create_mxac_req {
|
||||
__le64 Timestamp;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* Flags
|
||||
* See MS-SMB2 2.2.13.2.11
|
||||
* MS-SMB2 2.2.13.2.12
|
||||
* MS-SMB2 2.2.14.2.12
|
||||
*/
|
||||
#define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.11 */
|
||||
struct durable_context_v2_req {
|
||||
__le32 Timeout;
|
||||
@@ -1500,6 +1502,26 @@ struct smb_sockaddr_in6 {
|
||||
__be32 ScopeId;
|
||||
} __packed;
|
||||
|
||||
/* See MS-SMB2 2.2.32.5 and MS-SMB2 2.2.32.5.1 */
|
||||
#define RSS_CAPABLE cpu_to_le32(0x00000001)
|
||||
#define RDMA_CAPABLE cpu_to_le32(0x00000002)
|
||||
#define INTERNETWORK cpu_to_le16(0x0002)
|
||||
#define INTERNETWORKV6 cpu_to_le16(0x0017)
|
||||
struct network_interface_info_ioctl_rsp {
|
||||
__le32 Next; /* next interface. zero if this is last one */
|
||||
__le32 IfIndex;
|
||||
__le32 Capability; /* RSS or RDMA Capable */
|
||||
__le32 Reserved;
|
||||
__le64 LinkSpeed;
|
||||
union {
|
||||
char SockAddr_Storage[128];
|
||||
struct {
|
||||
__le16 Family;
|
||||
__u8 Buffer[126];
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
|
||||
/* this goes in the ioctl buffer when doing FSCTL_SET_ZERO_DATA */
|
||||
struct file_zero_data_information {
|
||||
__le64 FileOffset;
|
||||
@@ -1989,6 +2011,144 @@ struct smb2_lease_ack {
|
||||
__le64 LeaseDuration;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* See MS-CIFS 2.2.3.1
|
||||
* MS-SMB 2.2.3.1
|
||||
*/
|
||||
struct smb_hdr {
|
||||
__be32 smb_buf_length; /* BB length is only two (rarely three) bytes,
|
||||
with one or two byte "type" preceding it that will be
|
||||
zero - we could mask the type byte off */
|
||||
__u8 Protocol[4];
|
||||
__u8 Command;
|
||||
union {
|
||||
struct {
|
||||
__u8 ErrorClass;
|
||||
__u8 Reserved;
|
||||
__le16 Error;
|
||||
} __packed DosError;
|
||||
__le32 CifsError;
|
||||
} __packed Status;
|
||||
__u8 Flags;
|
||||
__le16 Flags2; /* note: le */
|
||||
__le16 PidHigh;
|
||||
union {
|
||||
struct {
|
||||
__le32 SequenceNumber; /* le */
|
||||
__u32 Reserved; /* zero */
|
||||
} __packed Sequence;
|
||||
__u8 SecuritySignature[8]; /* le */
|
||||
} __packed Signature;
|
||||
__u8 pad[2];
|
||||
__u16 Tid;
|
||||
__le16 Pid;
|
||||
__u16 Uid;
|
||||
__le16 Mid;
|
||||
__u8 WordCount;
|
||||
} __packed;
|
||||
|
||||
#define OP_BREAK_STRUCT_SIZE_20 24
|
||||
#define OP_BREAK_STRUCT_SIZE_21 36
|
||||
|
||||
/*
|
||||
* See MS-SMB2 2.2.13.1.1
|
||||
* MS-SMB 2.2.1.4.1
|
||||
* These are the file access permission bits defined in CIFS for the
|
||||
* NTCreateAndX as well as the level 0x107
|
||||
* TRANS2_QUERY_PATH_INFORMATION API. The level 0x107, SMB_QUERY_FILE_ALL_INFO
|
||||
* responds with the AccessFlags.
|
||||
* The AccessFlags specifies the access permissions a caller has to the
|
||||
* file and can have any suitable combination of the following values:
|
||||
*/
|
||||
#define FILE_READ_DATA 0x00000001 /* Data can be read from the file */
|
||||
/* or directory child entries can */
|
||||
/* be listed together with the */
|
||||
/* associated child attributes */
|
||||
/* (so the FILE_READ_ATTRIBUTES on */
|
||||
/* the child entry is not needed) */
|
||||
#define FILE_WRITE_DATA 0x00000002 /* Data can be written to the file */
|
||||
/* or new file can be created in */
|
||||
/* the directory */
|
||||
#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the file */
|
||||
/* (for non-local files over SMB it */
|
||||
/* is same as FILE_WRITE_DATA) */
|
||||
/* or new subdirectory can be */
|
||||
/* created in the directory */
|
||||
#define FILE_READ_EA 0x00000008 /* Extended attributes associated */
|
||||
/* with the file can be read */
|
||||
#define FILE_WRITE_EA 0x00000010 /* Extended attributes associated */
|
||||
/* with the file can be written */
|
||||
#define FILE_EXECUTE 0x00000020 /*Data can be read into memory from */
|
||||
/* the file using system paging I/O */
|
||||
/* for executing the file / script */
|
||||
/* or right to traverse directory */
|
||||
/* (but by default all users have */
|
||||
/* directory bypass traverse */
|
||||
/* privilege and do not need this */
|
||||
/* permission on directories at all)*/
|
||||
#define FILE_DELETE_CHILD 0x00000040 /* Child entry can be deleted from */
|
||||
/* the directory (so the DELETE on */
|
||||
/* the child entry is not needed) */
|
||||
#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with the */
|
||||
/* file or directory can be read */
|
||||
#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with the */
|
||||
/* file or directory can be written */
|
||||
#define DELETE 0x00010000 /* The file or dir can be deleted */
|
||||
#define READ_CONTROL 0x00020000 /* The discretionary access control */
|
||||
/* list and ownership associated */
|
||||
/* with the file or dir can be read */
|
||||
#define WRITE_DAC 0x00040000 /* The discretionary access control */
|
||||
/* list associated with the file or */
|
||||
/* directory can be written */
|
||||
#define WRITE_OWNER 0x00080000 /* Ownership information associated */
|
||||
/* with the file/dir can be written */
|
||||
#define SYNCHRONIZE 0x00100000 /* The file handle can waited on to */
|
||||
/* synchronize with the completion */
|
||||
/* of an input/output request */
|
||||
#define SYSTEM_SECURITY 0x01000000 /* The system access control list */
|
||||
/* associated with the file or */
|
||||
/* directory can be read or written */
|
||||
/* (cannot be in DACL, can in SACL) */
|
||||
#define MAXIMUM_ALLOWED 0x02000000 /* Maximal subset of GENERIC_ALL */
|
||||
/* permissions which can be granted */
|
||||
/* (cannot be in DACL nor SACL) */
|
||||
#define GENERIC_ALL 0x10000000 /* Same as: GENERIC_EXECUTE | */
|
||||
/* GENERIC_WRITE | */
|
||||
/* GENERIC_READ | */
|
||||
/* FILE_DELETE_CHILD | */
|
||||
/* DELETE | */
|
||||
/* WRITE_DAC | */
|
||||
/* WRITE_OWNER */
|
||||
/* So GENERIC_ALL contains all bits */
|
||||
/* mentioned above except these two */
|
||||
/* SYSTEM_SECURITY MAXIMUM_ALLOWED */
|
||||
#define GENERIC_EXECUTE 0x20000000 /* Same as: FILE_EXECUTE | */
|
||||
/* FILE_READ_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
#define GENERIC_WRITE 0x40000000 /* Same as: FILE_WRITE_DATA | */
|
||||
/* FILE_APPEND_DATA | */
|
||||
/* FILE_WRITE_EA | */
|
||||
/* FILE_WRITE_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
#define GENERIC_READ 0x80000000 /* Same as: FILE_READ_DATA | */
|
||||
/* FILE_READ_EA | */
|
||||
/* FILE_READ_ATTRIBUTES | */
|
||||
/* READ_CONTROL | */
|
||||
/* SYNCHRONIZE */
|
||||
|
||||
/* Combinations of file access permission bits */
|
||||
#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES)
|
||||
#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
|
||||
| FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
|
||||
#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
|
||||
#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
|
||||
| FILE_READ_ATTRIBUTES \
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
| WRITE_OWNER | SYNCHRONIZE)
|
||||
#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
|
||||
| READ_CONTROL | SYNCHRONIZE)
|
||||
|
||||
#endif /* _COMMON_SMB2PDU_H */
|
||||
|
||||
@@ -7866,9 +7866,9 @@ ipv6_retry:
|
||||
|
||||
nii_rsp->Capability = 0;
|
||||
if (netdev->real_num_tx_queues > 1)
|
||||
nii_rsp->Capability |= cpu_to_le32(RSS_CAPABLE);
|
||||
nii_rsp->Capability |= RSS_CAPABLE;
|
||||
if (ksmbd_rdma_capable_netdev(netdev))
|
||||
nii_rsp->Capability |= cpu_to_le32(RDMA_CAPABLE);
|
||||
nii_rsp->Capability |= RDMA_CAPABLE;
|
||||
|
||||
nii_rsp->Next = cpu_to_le32(152);
|
||||
nii_rsp->Reserved = 0;
|
||||
@@ -7894,7 +7894,7 @@ ipv6_retry:
|
||||
if (!ipv4_set) {
|
||||
struct in_device *idev;
|
||||
|
||||
sockaddr_storage->Family = cpu_to_le16(INTERNETWORK);
|
||||
sockaddr_storage->Family = INTERNETWORK;
|
||||
sockaddr_storage->addr4.Port = 0;
|
||||
|
||||
idev = __in_dev_get_rtnl(netdev);
|
||||
@@ -7910,7 +7910,7 @@ ipv6_retry:
|
||||
struct inet6_ifaddr *ifa;
|
||||
__u8 *ipv6_addr = sockaddr_storage->addr6.IPv6Address;
|
||||
|
||||
sockaddr_storage->Family = cpu_to_le16(INTERNETWORKV6);
|
||||
sockaddr_storage->Family = INTERNETWORKV6;
|
||||
sockaddr_storage->addr6.Port = 0;
|
||||
sockaddr_storage->addr6.FlowInfo = 0;
|
||||
|
||||
|
||||
@@ -95,10 +95,6 @@ struct create_durable_rsp {
|
||||
} Data;
|
||||
} __packed;
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.11 */
|
||||
/* Flags */
|
||||
#define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002
|
||||
|
||||
/* equivalent of the contents of SMB3.1.1 POSIX open context response */
|
||||
struct create_posix_rsp {
|
||||
struct create_context_hdr ccontext;
|
||||
@@ -112,9 +108,6 @@ struct create_posix_rsp {
|
||||
|
||||
#define SMB2_0_IOCTL_IS_FSCTL 0x00000001
|
||||
|
||||
#define INTERNETWORK 0x0002
|
||||
#define INTERNETWORKV6 0x0017
|
||||
|
||||
struct sockaddr_storage_rsp {
|
||||
__le16 Family;
|
||||
union {
|
||||
@@ -123,18 +116,6 @@ struct sockaddr_storage_rsp {
|
||||
};
|
||||
} __packed;
|
||||
|
||||
#define RSS_CAPABLE 0x00000001
|
||||
#define RDMA_CAPABLE 0x00000002
|
||||
|
||||
struct network_interface_info_ioctl_rsp {
|
||||
__le32 Next; /* next interface. zero if this is last one */
|
||||
__le32 IfIndex;
|
||||
__le32 Capability; /* RSS or RDMA Capable */
|
||||
__le32 Reserved;
|
||||
__le64 LinkSpeed;
|
||||
char SockAddr_Storage[128];
|
||||
} __packed;
|
||||
|
||||
struct file_object_buf_type1_ioctl_rsp {
|
||||
__u8 ObjectId[16];
|
||||
__u8 BirthVolumeId[16];
|
||||
|
||||
@@ -75,42 +75,7 @@
|
||||
#define FILE_CASE_PRESERVED_NAMES 0x00000002
|
||||
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
|
||||
|
||||
#define FILE_READ_DATA 0x00000001 /* Data can be read from the file */
|
||||
#define FILE_WRITE_DATA 0x00000002 /* Data can be written to the file */
|
||||
#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the file */
|
||||
#define FILE_READ_EA 0x00000008 /* Extended attributes associated */
|
||||
/* with the file can be read */
|
||||
#define FILE_WRITE_EA 0x00000010 /* Extended attributes associated */
|
||||
/* with the file can be written */
|
||||
#define FILE_EXECUTE 0x00000020 /*Data can be read into memory from */
|
||||
/* the file using system paging I/O */
|
||||
#define FILE_DELETE_CHILD 0x00000040
|
||||
#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with the */
|
||||
/* file can be read */
|
||||
#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with the */
|
||||
/* file can be written */
|
||||
#define DELETE 0x00010000 /* The file can be deleted */
|
||||
#define READ_CONTROL 0x00020000 /* The access control list and */
|
||||
/* ownership associated with the */
|
||||
/* file can be read */
|
||||
#define WRITE_DAC 0x00040000 /* The access control list and */
|
||||
/* ownership associated with the */
|
||||
/* file can be written. */
|
||||
#define WRITE_OWNER 0x00080000 /* Ownership information associated */
|
||||
/* with the file can be written */
|
||||
#define SYNCHRONIZE 0x00100000 /* The file handle can waited on to */
|
||||
/* synchronize with the completion */
|
||||
/* of an input/output request */
|
||||
#define GENERIC_ALL 0x10000000
|
||||
#define GENERIC_EXECUTE 0x20000000
|
||||
#define GENERIC_WRITE 0x40000000
|
||||
#define GENERIC_READ 0x80000000
|
||||
/* In summary - Relevant file */
|
||||
/* access flags from CIFS are */
|
||||
/* file_read_data, file_write_data */
|
||||
/* file_execute, file_read_attributes*/
|
||||
/* write_dac, and delete. */
|
||||
|
||||
/* Combinations of file access permission bits */
|
||||
#define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \
|
||||
| FILE_READ_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
@@ -121,14 +86,6 @@
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
| WRITE_OWNER | SYNCHRONIZE)
|
||||
#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
|
||||
| FILE_READ_ATTRIBUTES \
|
||||
| FILE_WRITE_ATTRIBUTES \
|
||||
| DELETE | READ_CONTROL | WRITE_DAC \
|
||||
| WRITE_OWNER | SYNCHRONIZE)
|
||||
|
||||
#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
|
||||
| READ_CONTROL | SYNCHRONIZE)
|
||||
|
||||
/* generic flags for file open */
|
||||
#define GENERIC_READ_FLAGS (READ_CONTROL | FILE_READ_DATA | \
|
||||
@@ -159,36 +116,6 @@
|
||||
#define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000)
|
||||
#define SMBFLG2_UNICODE cpu_to_le16(0x8000)
|
||||
|
||||
struct smb_hdr {
|
||||
__be32 smb_buf_length;
|
||||
__u8 Protocol[4];
|
||||
__u8 Command;
|
||||
union {
|
||||
struct {
|
||||
__u8 ErrorClass;
|
||||
__u8 Reserved;
|
||||
__le16 Error;
|
||||
} __packed DosError;
|
||||
__le32 CifsError;
|
||||
} __packed Status;
|
||||
__u8 Flags;
|
||||
__le16 Flags2; /* note: le */
|
||||
__le16 PidHigh;
|
||||
union {
|
||||
struct {
|
||||
__le32 SequenceNumber; /* le */
|
||||
__u32 Reserved; /* zero */
|
||||
} __packed Sequence;
|
||||
__u8 SecuritySignature[8]; /* le */
|
||||
} __packed Signature;
|
||||
__u8 pad[2];
|
||||
__le16 Tid;
|
||||
__le16 Pid;
|
||||
__le16 Uid;
|
||||
__le16 Mid;
|
||||
__u8 WordCount;
|
||||
} __packed;
|
||||
|
||||
struct smb_negotiate_req {
|
||||
struct smb_hdr hdr; /* wct = 0 */
|
||||
__le16 ByteCount;
|
||||
|
||||
Reference in New Issue
Block a user