hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
 *   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;
 
struct smb_snapshot_array {
   __u32    number_of_snapshots;
   __u32    number_of_snapshots_returned;
   __u32    snapshot_array_size;
   /*    snapshots[]; */
} __packed;
 
/* query_info flags */
#define PASSTHRU_QUERY_INFO    0x00000000
#define PASSTHRU_FSCTL        0x00000001
#define PASSTHRU_SET_INFO    0x00000002
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;
 
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;
 
struct smb3_notify {
   __u32    completion_filter;
   bool    watch_tree;
} __packed;
 
#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)
#define CIFS_ENUMERATE_SNAPSHOTS _IOR(CIFS_IOCTL_MAGIC, 6, struct smb_snapshot_array)
#define CIFS_QUERY_INFO _IOWR(CIFS_IOCTL_MAGIC, 7, struct smb_query_info)
#define CIFS_DUMP_KEY _IOWR(CIFS_IOCTL_MAGIC, 8, struct smb3_key_debug_info)
#define CIFS_IOC_NOTIFY _IOW(CIFS_IOCTL_MAGIC, 9, struct smb3_notify)