blob: 686bc02548a7e6811188c723a4d815723f57ef1f (
plain)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#include "idl_types.h"
import "server_id.idl";
import "security.idl";
import "file_id.idl";
[
pointer_default(unique)
]
interface open_files
{
typedef [public] struct {
server_id pid;
hyper op_mid;
uint16 op_type;
uint32 access_mask;
uint32 share_access;
uint32 private_options;
timeval time;
file_id id;
udlong share_file_id;
uint32 uid;
uint16 flags;
uint32 name_hash;
/*
* In-memory flag indicating a non-existing pid. We don't want
* to store this share_mode_entry on disk.
*/
[skip] boolean8 stale;
} share_mode_entry;
typedef [public] struct {
uint32 name_hash;
security_token *delete_nt_token;
security_unix_token *delete_token;
} delete_token;
typedef [public] struct {
[string,charset(UTF8)] char *servicepath;
[string,charset(UTF8)] char *base_name;
[string,charset(UTF8)] char *stream_name;
file_id id;
uint32 num_share_modes;
[size_is(num_share_modes)] share_mode_entry share_modes[];
uint32 num_delete_tokens;
[size_is(num_delete_tokens)] delete_token delete_tokens[];
timespec old_write_time;
timespec changed_write_time;
[skip] boolean8 fresh;
[skip] boolean8 modified;
[ignore] db_record *record;
} share_mode_data;
/* these are 0x30 (48) characters */
const string VFS_DEFAULT_DURABLE_COOKIE_MAGIC =
"VFS_DEFAULT_DURABLE_COOKIE_MAGIC ";
const uint32 VFS_DEFAULT_DURABLE_COOKIE_VERSION = 0;
/* this corresponds to struct stat_ex (SMB_STRUCT_STAT) */
typedef struct {
hyper st_ex_dev;
hyper st_ex_ino;
hyper st_ex_mode;
hyper st_ex_nlink;
hyper st_ex_uid;
hyper st_ex_gid;
hyper st_ex_rdev;
hyper st_ex_size;
timespec st_ex_atime;
timespec st_ex_mtime;
timespec st_ex_ctime;
timespec st_ex_btime;
boolean8 st_ex_calculated_birthtime;
hyper st_ex_blksize;
hyper st_ex_blocks;
uint32 st_ex_flags;
uint32 st_ex_mask;
hyper vfs_private;
} vfs_default_durable_stat;
typedef [public] struct {
[value(VFS_DEFAULT_DURABLE_COOKIE_MAGIC),charset(DOS)] uint8 magic[0x30];
[value(VFS_DEFAULT_DURABLE_COOKIE_VERSION)] uint32 version;
boolean8 allow_reconnect;
file_id id;
[string,charset(UTF8)] char *servicepath;
[string,charset(UTF8)] char *base_name;
hyper initial_allocation_size;
hyper position_information;
boolean8 update_write_time_triggered;
boolean8 update_write_time_on_close;
boolean8 write_time_forced;
timespec close_write_time;
vfs_default_durable_stat stat_info;
} vfs_default_durable_cookie;
}
|