s4: allow pam_winbind.so to be build on samba4
[Samba/ekacnet.git] / source3 / librpc / idl / notify.idl
blob0e806790744cc88f5e9b04d6f306a2a250df9c31
1 #include "idl_types.h"
3 /*
4 IDL structures for notify change code
6 this defines the structures used in the notify database code, and
7 the change notify buffers
8 */
11 pointer_default(unique)
13 interface notify
16 /* structure used in the notify database */
17 typedef [public] struct {
18 server_id server;
19 uint32 filter; /* filter to apply in this directory */
20 uint32 subdir_filter; /* filter to apply in child directories */
21 uint32 dir_fd; /* fd of open directory */
22 file_id dir_id; /* file_id of open directory */
23 utf8string path;
24 uint32 path_len; /* saves some computation on search */
25 pointer private_data;
26 } notify_entry;
28 typedef [public] struct {
29 uint32 num_entries;
30 notify_entry entries[num_entries];
31 } notify_entry_array;
34 to allow for efficient search for matching entries, we
35 divide them by the directory depth, with a separate array
36 per depth. The entries within each depth are sorted by path,
37 allowing for a bisection search.
39 The max_mask and max_mask_subdir at each depth is the
40 bitwise or of the filters and subdir filters for all entries
41 at that depth. This allows a depth to be quickly skipped if
42 no entries will match the target filter
44 typedef struct {
45 uint32 max_mask;
46 uint32 max_mask_subdir;
47 uint32 num_entries;
48 notify_entry entries[num_entries];
49 } notify_depth;
51 typedef [public] struct {
52 uint32 num_depths;
53 notify_depth depth[num_depths];
54 } notify_array;
56 /* structure sent between servers in notify messages */
57 typedef [public] struct {
58 uint32 action;
59 utf8string path;
60 pointer private_data;
61 } notify_event;