Update headers to update various SMB3 ioctl definitions
MS-SMB2 Section 2.2.31 lists fsctls. Update our list of valid cifs/smb2/smb3 fsctls and some related structs based on more recent version of docs. Additional detail on less common ones can be found in MS-FSCC section 2.3. CopyChunk (server side copy, ie refcopy) will depend on a few of these Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
Родитель
f43a033d44
Коммит
be7457d388
|
@ -1315,6 +1315,14 @@ typedef struct smb_com_ntransact_rsp {
|
|||
/* parms and data follow */
|
||||
} __attribute__((packed)) NTRANSACT_RSP;
|
||||
|
||||
/* See MS-SMB 2.2.7.2.1.1 */
|
||||
struct srv_copychunk {
|
||||
__le64 SourceOffset;
|
||||
__le64 DestinationOffset;
|
||||
__le32 CopyLength;
|
||||
__u32 Reserved;
|
||||
} __packed;
|
||||
|
||||
typedef struct smb_com_transaction_ioctl_req {
|
||||
struct smb_hdr hdr; /* wct = 23 */
|
||||
__u8 MaxSetupCount;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* fs/cifs/smb2pdu.h
|
||||
*
|
||||
* Copyright (c) International Business Machines Corp., 2009, 2010
|
||||
* Copyright (c) International Business Machines Corp., 2009, 2013
|
||||
* Etersoft, 2012
|
||||
* Author(s): Steve French (sfrench@us.ibm.com)
|
||||
* Pavel Shilovsky (pshilovsky@samba.org) 2012
|
||||
|
@ -482,6 +482,52 @@ struct create_lease {
|
|||
struct lease_context lcontext;
|
||||
} __packed;
|
||||
|
||||
/* this goes in the ioctl buffer when doing a copychunk request */
|
||||
struct copychunk_ioctl {
|
||||
char SourceKey[24];
|
||||
__le32 ChunkCount; /* we are only sending 1 */
|
||||
__le32 Reserved;
|
||||
/* array will only be one chunk long for us */
|
||||
__le64 SourceOffset;
|
||||
__le64 TargetOffset;
|
||||
__u32 Length; /* how many bytes to copy */
|
||||
__u32 Reserved2;
|
||||
} __packed;
|
||||
|
||||
struct smb2_ioctl_req {
|
||||
struct smb2_hdr hdr;
|
||||
__le16 StructureSize; /* Must be 57 */
|
||||
__u16 Reserved;
|
||||
__le32 CtlCode;
|
||||
__u64 PersistentFileId; /* opaque endianness */
|
||||
__u64 VolatileFileId; /* opaque endianness */
|
||||
__le32 InputOffset;
|
||||
__le32 InputCount;
|
||||
__le32 MaxInputResponse;
|
||||
__le32 OutputOffset;
|
||||
__le32 OutputCount;
|
||||
__le32 MaxOutputResponse;
|
||||
__le32 Flags;
|
||||
__u32 Reserved2;
|
||||
char Buffer[0];
|
||||
} __packed;
|
||||
|
||||
struct smb2_ioctl_rsp {
|
||||
struct smb2_hdr hdr;
|
||||
__le16 StructureSize; /* Must be 57 */
|
||||
__u16 Reserved;
|
||||
__le32 CtlCode;
|
||||
__u64 PersistentFileId; /* opaque endianness */
|
||||
__u64 VolatileFileId; /* opaque endianness */
|
||||
__le32 InputOffset;
|
||||
__le32 InputCount;
|
||||
__le32 OutputOffset;
|
||||
__le32 OutputCount;
|
||||
__le32 Flags;
|
||||
__u32 Reserved2;
|
||||
/* char * buffer[] */
|
||||
} __packed;
|
||||
|
||||
/* Currently defined values for close flags */
|
||||
#define SMB2_CLOSE_FLAG_POSTQUERY_ATTRIB cpu_to_le16(0x0001)
|
||||
struct smb2_close_req {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* fs/cifs/smbfsctl.h: SMB, CIFS, SMB2 FSCTL definitions
|
||||
*
|
||||
* Copyright (c) International Business Machines Corp., 2002,2009
|
||||
* Copyright (c) International Business Machines Corp., 2002,2013
|
||||
* Author(s): Steve French (sfrench@us.ibm.com)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
|
@ -22,7 +22,7 @@
|
|||
/* IOCTL information */
|
||||
/*
|
||||
* List of ioctl/fsctl function codes that are or could be useful in the
|
||||
* future to remote clients like cifs or SMB2 client. There is probably
|
||||
* future to remote clients like cifs or SMB2/SMB3 client. This is probably
|
||||
* a slightly larger set of fsctls that NTFS local filesystem could handle,
|
||||
* including the seven below that we do not have struct definitions for.
|
||||
* Even with protocol definitions for most of these now available, we still
|
||||
|
@ -30,7 +30,13 @@
|
|||
* remotely. Some of the following, such as the encryption/compression ones
|
||||
* could be invoked from tools via a specialized hook into the VFS rather
|
||||
* than via the standard vfs entry points
|
||||
*
|
||||
* See MS-SMB2 Section 2.2.31 (last checked June 2013, all of that list are
|
||||
* below). Additional detail on less common ones can be found in MS-FSCC
|
||||
* section 2.3.
|
||||
*/
|
||||
#define FSCTL_DFS_GET_REFERRALS 0x00060194
|
||||
#define FSCTL_DFS_GET_REFERRALS_EX 0x000601B0
|
||||
#define FSCTL_REQUEST_OPLOCK_LEVEL_1 0x00090000
|
||||
#define FSCTL_REQUEST_OPLOCK_LEVEL_2 0x00090004
|
||||
#define FSCTL_REQUEST_BATCH_OPLOCK 0x00090008
|
||||
|
@ -71,14 +77,31 @@
|
|||
#define FSCTL_SET_SHORT_NAME_BEHAVIOR 0x000901B4 /* BB add struct */
|
||||
#define FSCTL_QUERY_ALLOCATED_RANGES 0x000940CF /* BB add struct */
|
||||
#define FSCTL_SET_DEFECT_MANAGEMENT 0x00098134 /* BB add struct */
|
||||
#define FSCTL_FILE_LEVEL_TRIM 0x00098208 /* BB add struct */
|
||||
#define FSCTL_SIS_LINK_FILES 0x0009C104
|
||||
#define FSCTL_PIPE_PEEK 0x0011400C /* BB add struct */
|
||||
#define FSCTL_PIPE_TRANSCEIVE 0x0011C017 /* BB add struct */
|
||||
/* strange that the number for this op is not sequential with previous op */
|
||||
#define FSCTL_PIPE_WAIT 0x00110018 /* BB add struct */
|
||||
/* Enumerate previous versions of a file */
|
||||
#define FSCTL_SRV_ENUMERATE_SNAPSHOTS 0x00144064
|
||||
/* Retrieve an opaque file reference for server-side data movement ie copy */
|
||||
#define FSCTL_SRV_REQUEST_RESUME_KEY 0x00140078
|
||||
#define FSCTL_LMR_REQUEST_RESILIENCY 0x001401D4 /* BB add struct */
|
||||
#define FSCTL_LMR_GET_LINK_TRACK_INF 0x001400E8 /* BB add struct */
|
||||
#define FSCTL_LMR_SET_LINK_TRACK_INF 0x001400EC /* BB add struct */
|
||||
#define FSCTL_VALIDATE_NEGOTIATE_INFO 0x00140204 /* BB add struct */
|
||||
/* Perform server-side data movement */
|
||||
#define FSCTL_SRV_COPYCHUNK 0x001440F2
|
||||
#define FSCTL_SRV_COPYCHUNK_WRITE 0x001480F2
|
||||
#define FSCTL_QUERY_NETWORK_INTERFACE_INFO 0x001401FC /* BB add struct */
|
||||
#define FSCTL_SRV_READ_HASH 0x001441BB /* BB add struct */
|
||||
|
||||
#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
|
||||
#define IO_REPARSE_TAG_HSM 0xC0000004
|
||||
#define IO_REPARSE_TAG_SIS 0x80000007
|
||||
|
||||
/* fsctl flags */
|
||||
/* If Flags is set to this value, the request is an FSCTL not ioctl request */
|
||||
#define SMB2_0_IOCTL_IS_FSCTL 0x00000001
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче