s4:kdc: Implement KDC plugin hardware authentication policy
[samba.git] / librpc / idl / notify.idl
1 #include "idl_types.h"
2
3 import "file_id.idl", "server_id.idl";
4
5 /*
6    IDL structures for notify change code
7
8    this defines the structures used in the notify database code, and
9    the change notify buffers
10 */
11
12 [
13   pointer_default(unique)
14 ]
15 interface notify
16 {
17
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;
29
30         typedef [public] struct {
31                 uint32 num_entries;
32                 notify_entry entries[num_entries];
33         } notify_entry_array;
34
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;
41
42         /*
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.
47
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
52         */
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;
59
60         typedef [public] struct {
61                 uint32 num_depths;
62                 notify_depth depth[num_depths];
63         } notify_array;
64
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;
72
73         typedef [v1_enum] enum {
74                 FILE_ACTION_ADDED               = 0x00000001,
75                 FILE_ACTION_REMOVED             = 0x00000002,
76                 FILE_ACTION_MODIFIED            = 0x00000003,
77                 FILE_ACTION_RENAMED_OLD_NAME    = 0x00000004,
78                 FILE_ACTION_RENAMED_NEW_NAME    = 0x00000005,
79                 FILE_ACTION_ADDED_STREAM        = 0x00000006,
80                 FILE_ACTION_REMOVED_STREAM      = 0x00000007,
81                 FILE_ACTION_MODIFIED_STREAM     = 0x00000008
82         } FILE_NOTIFY_ACTION;
83
84         /* structure sent at the CIFS layer */
85         /* Align on 4-byte boundary according to MS-CIFS 2.2.7.4.2 */
86         typedef [public,gensize,flag(NDR_ALIGN4)] struct {
87                 uint32 NextEntryOffset;
88                 FILE_NOTIFY_ACTION Action;
89                 [value(strlen_m(FileName1)*2)] uint32 FileNameLength;
90                 [charset(UTF16),flag(STR_NOTERM)]
91                         uint16 FileName1[strlen_m(FileName1)];
92                 DATA_BLOB _pad;
93         } FILE_NOTIFY_INFORMATION;
94 }