ctdb-scripts: Do not de-duplicate the interfaces list
[samba.git] / source3 / librpc / idl / open_files.idl
1 #include "idl_types.h"
2
3 import "server_id.idl";
4 import "security.idl";
5 import "file_id.idl";
6 import "smb2_lease_struct.idl";
7 import "misc.idl";
8
9 [
10         pointer_default(unique)
11 ]
12
13 interface open_files
14 {
15         typedef [enum16bit] enum {
16                 SHARE_MODE_ENTRY_OP_TYPE_NONE = 0,
17                 SHARE_MODE_ENTRY_OP_TYPE_EXCLUSIVE = 1,
18                 SHARE_MODE_ENTRY_OP_TYPE_BATCH_WITHOUT_EXCLUSIVE = 2,
19                 SHARE_MODE_ENTRY_OP_TYPE_BATCH = 3,
20                 SHARE_MODE_ENTRY_OP_TYPE_LEVEL_II = 4,
21                 SHARE_MODE_ENTRY_OP_TYPE_LEASE = 0x100
22         } share_mode_entry_op_type;
23
24         typedef [public] struct {
25                 server_id       pid;
26                 hyper           op_mid;
27                 share_mode_entry_op_type op_type;
28                 GUID            client_guid;
29                 smb2_lease_key  lease_key;
30                 uint32          access_mask;
31                 uint32          share_access;
32                 uint32          private_options;
33                 timeval         time;
34                 udlong          share_file_id;
35                 uint32          uid;
36                 uint16          flags;
37                 uint32          name_hash;
38
39                 /*
40                  * In-memory flag indicating a non-existing pid. We don't want
41                  * to store this share_mode_entry on disk.
42                  */
43                 [skip] boolean8 stale;
44         } share_mode_entry;
45
46         typedef [public] struct {
47                 uint32          name_hash;
48                 security_token *delete_nt_token;
49                 security_unix_token *delete_token;
50         } delete_token;
51
52         typedef [public,bitmap16bit] bitmap {
53                 SHARE_MODE_SHARE_DELETE         = 0x100,
54                 SHARE_MODE_SHARE_WRITE          = 0x080,
55                 SHARE_MODE_SHARE_READ           = 0x040,
56                 SHARE_MODE_ACCESS_DELETE        = 0x020,
57                 SHARE_MODE_ACCESS_WRITE         = 0x010,
58                 SHARE_MODE_ACCESS_READ          = 0x008,
59                 SHARE_MODE_LEASE_HANDLE         = 0x004,
60                 SHARE_MODE_LEASE_WRITE          = 0x002,
61                 SHARE_MODE_LEASE_READ           = 0x001
62         } share_mode_flags;
63
64         typedef [public] struct {
65                 hyper unique_content_epoch;
66                 share_mode_flags flags;
67                 [string,charset(UTF8)] char *servicepath;
68                 [string,charset(UTF8)] char *base_name;
69                 [string,charset(UTF8)] char *stream_name;
70                 uint32 num_delete_tokens;
71                 [size_is(num_delete_tokens)] delete_token delete_tokens[];
72                 NTTIME old_write_time;
73                 NTTIME changed_write_time;
74                 [skip] boolean8 not_stored;
75                 [skip] boolean8 modified;
76                 [ignore] file_id id; /* In memory key used to lookup cache. */
77         } share_mode_data;
78
79         /* these are 0x30 (48) characters */
80         const string VFS_DEFAULT_DURABLE_COOKIE_MAGIC =
81                 "VFS_DEFAULT_DURABLE_COOKIE_MAGIC                ";
82         const uint32 VFS_DEFAULT_DURABLE_COOKIE_VERSION = 0;
83
84         /* this corresponds to struct stat_ex (SMB_STRUCT_STAT) */
85         typedef struct {
86                 hyper           st_ex_dev;
87                 hyper           st_ex_ino;
88                 hyper           st_ex_mode;
89                 hyper           st_ex_nlink;
90                 hyper           st_ex_uid;
91                 hyper           st_ex_gid;
92                 hyper           st_ex_rdev;
93                 hyper           st_ex_size;
94                 timespec        st_ex_atime;
95                 timespec        st_ex_mtime;
96                 timespec        st_ex_ctime;
97                 timespec        st_ex_btime;
98                 hyper           st_ex_blksize;
99                 hyper           st_ex_blocks;
100                 uint32          st_ex_flags;
101                 uint32          st_ex_iflags;
102         } vfs_default_durable_stat;
103
104         typedef [public] struct {
105                 [value(VFS_DEFAULT_DURABLE_COOKIE_MAGIC),charset(DOS)] uint8 magic[0x30];
106                 [value(VFS_DEFAULT_DURABLE_COOKIE_VERSION)] uint32 version;
107                 boolean8 allow_reconnect;
108                 file_id id;
109                 [string,charset(UTF8)] char *servicepath;
110                 [string,charset(UTF8)] char *base_name;
111                 hyper initial_allocation_size;
112                 hyper position_information;
113                 boolean8 update_write_time_triggered;
114                 boolean8 update_write_time_on_close;
115                 boolean8 write_time_forced;
116                 NTTIME close_write_time;
117                 vfs_default_durable_stat stat_info;
118         } vfs_default_durable_cookie;
119
120         typedef [public] struct {
121                 file_id id;
122                 udlong share_file_id;
123                 uint8 break_to;
124         } oplock_break_message;
125
126         typedef [public] struct {
127                 file_id id;
128                 udlong share_file_id;
129                 [string,charset(UTF8)] char *servicepath;
130                 [string,charset(UTF8)] char *base_name;
131                 [string,charset(UTF8)] char *stream_name;
132         } file_rename_message;
133 }