debug: Add GPFS tracing backend
[Samba.git] / librpc / idl / notify.idl
blob66422ec9f9e56f03c5052d796585d25886ae6264
1 #include "idl_types.h"
3 import "file_id.idl", "server_id.idl";
5 /*
6 IDL structures for notify change code
8 this defines the structures used in the notify database code, and
9 the change notify buffers
13 pointer_default(unique)
15 interface notify
18 /* structure used in the notify database */
19 typedef [public] struct {
20 server_id server;
21 uint32 filter; /* filter to apply in this directory */
22 uint32 subdir_filter; /* filter to apply in child directories */
23 uint32 dir_fd; /* fd of open directory */
24 file_id dir_id; /* file_id of open directory */
25 utf8string path;
26 uint32 path_len; /* saves some computation on search */
27 pointer private_data;
28 } notify_entry;
30 typedef [public] struct {
31 uint32 num_entries;
32 notify_entry entries[num_entries];
33 } notify_entry_array;
35 typedef [public] struct {
36 server_id server;
37 uint32 filter; /* filter to apply in this directory */
38 uint32 subdir_filter; /* filter to apply in child directories */
39 pointer private_data;
40 } notify_db_entry;
43 to allow for efficient search for matching entries, we
44 divide them by the directory depth, with a separate array
45 per depth. The entries within each depth are sorted by path,
46 allowing for a bisection search.
48 The max_mask and max_mask_subdir at each depth is the
49 bitwise or of the filters and subdir filters for all entries
50 at that depth. This allows a depth to be quickly skipped if
51 no entries will match the target filter
53 typedef struct {
54 uint32 max_mask;
55 uint32 max_mask_subdir;
56 uint32 num_entries;
57 notify_entry entries[num_entries];
58 } notify_depth;
60 typedef [public] struct {
61 uint32 num_depths;
62 notify_depth depth[num_depths];
63 } notify_array;
65 /* structure sent between servers in notify messages */
66 typedef [public] struct {
67 uint32 action;
68 utf8string dir;
69 utf8string path;
70 pointer private_data;
71 } notify_event;
73 typedef [public] struct {
74 uint32 action;
75 uint32 filter;
76 utf8string path;
77 } notify_remote_event;
79 typedef [v1_enum] enum {
80 FILE_ACTION_ADDED = 0x00000001,
81 FILE_ACTION_REMOVED = 0x00000002,
82 FILE_ACTION_MODIFIED = 0x00000003,
83 FILE_ACTION_RENAMED_OLD_NAME = 0x00000004,
84 FILE_ACTION_RENAMED_NEW_NAME = 0x00000005,
85 FILE_ACTION_ADDED_STREAM = 0x00000006,
86 FILE_ACTION_REMOVED_STREAM = 0x00000007,
87 FILE_ACTION_MODIFIED_STREAM = 0x00000008
88 } FILE_NOTIFY_ACTION;
90 /* structure sent at the CIFS layer */
91 /* Align on 4-byte boundary according to MS-CIFS 2.2.7.4.2 */
92 typedef [public,gensize,flag(NDR_ALIGN4)] struct {
93 uint32 NextEntryOffset;
94 FILE_NOTIFY_ACTION Action;
95 [value(strlen_m(FileName1)*2)] uint32 FileNameLength;
96 [charset(UTF16),flag(STR_NOTERM)] uint16 FileName1[FileNameLength];
97 } FILE_NOTIFY_INFORMATION;