2015-07-05 02:40:10 +03:00
/*
* fs / cifs / cifs_ioctl . h
*
* Structure definitions for io control for cifs / smb3
*
* Copyright ( c ) 2015 Steve French < steve . french @ primarydata . com >
*
* This library is free software ; you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation ; either version 2.1 of the License , or
* ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See
* the GNU Lesser General Public License for more details .
*
*/
struct smb_mnt_fs_info {
__u32 version ; /* 0001 */
__u16 protocol_id ;
__u16 tcon_flags ;
__u32 vol_serial_number ;
__u32 vol_create_time ;
__u32 share_caps ;
__u32 share_flags ;
__u32 sector_flags ;
__u32 optimal_sector_size ;
__u32 max_bytes_chunk ;
__u32 fs_attributes ;
__u32 max_path_component ;
__u32 device_type ;
__u32 device_characteristics ;
__u32 maximal_access ;
__u64 cifs_posix_caps ;
} __packed ;
2016-10-01 05:14:26 +03:00
struct smb_snapshot_array {
__u32 number_of_snapshots ;
__u32 number_of_snapshots_returned ;
__u32 snapshot_array_size ;
/* snapshots[]; */
} __packed ;
2019-03-13 10:40:07 +03:00
/* query_info flags */
# define PASSTHRU_QUERY_INFO 0x00000000
# define PASSTHRU_FSCTL 0x00000001
2019-07-25 06:08:43 +03:00
# define PASSTHRU_SET_INFO 0x00000002
2018-10-08 03:19:58 +03:00
struct smb_query_info {
__u32 info_type ;
__u32 file_info_class ;
__u32 additional_information ;
__u32 flags ;
__u32 input_buffer_length ;
__u32 output_buffer_length ;
/* char buffer[]; */
} __packed ;
2019-09-19 12:00:55 +03:00
struct smb3_key_debug_info {
__u64 Suid ;
__u16 cipher_type ;
__u8 auth_key [ 16 ] ; /* SMB2_NTLMV2_SESSKEY_SIZE */
__u8 smb3encryptionkey [ SMB3_SIGN_KEY_SIZE ] ;
__u8 smb3decryptionkey [ SMB3_SIGN_KEY_SIZE ] ;
} __packed ;
2020-02-06 15:00:14 +03:00
struct smb3_notify {
__u32 completion_filter ;
bool watch_tree ;
} __packed ;
2015-07-05 02:40:10 +03:00
# define CIFS_IOCTL_MAGIC 0xCF
# define CIFS_IOC_COPYCHUNK_FILE _IOW(CIFS_IOCTL_MAGIC, 3, int)
# define CIFS_IOC_SET_INTEGRITY _IO(CIFS_IOCTL_MAGIC, 4)
# define CIFS_IOC_GET_MNT_INFO _IOR(CIFS_IOCTL_MAGIC, 5, struct smb_mnt_fs_info)
2016-10-01 05:14:26 +03:00
# define CIFS_ENUMERATE_SNAPSHOTS _IOR(CIFS_IOCTL_MAGIC, 6, struct smb_snapshot_array)
2018-10-08 03:19:58 +03:00
# define CIFS_QUERY_INFO _IOWR(CIFS_IOCTL_MAGIC, 7, struct smb_query_info)
2019-09-19 12:00:55 +03:00
# define CIFS_DUMP_KEY _IOWR(CIFS_IOCTL_MAGIC, 8, struct smb3_key_debug_info)
2020-02-06 15:00:14 +03:00
# define CIFS_IOC_NOTIFY _IOW(CIFS_IOCTL_MAGIC, 9, struct smb3_notify)
2021-04-29 08:18:43 +03:00
# define CIFS_IOC_SHUTDOWN _IOR ('X', 125, __u32)
/*
* Flags for going down operation
*/
# define CIFS_GOING_FLAGS_DEFAULT 0x0 /* going down */
# define CIFS_GOING_FLAGS_LOGFLUSH 0x1 /* flush log but not data */
# define CIFS_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log nor data */
static inline bool cifs_forced_shutdown ( struct cifs_sb_info * sbi )
{
if ( CIFS_MOUNT_SHUTDOWN & sbi - > mnt_cifs_flags )
return true ;
else
return false ;
}