diff options
Diffstat (limited to 'source4/librpc')
-rw-r--r-- | source4/librpc/config.mk | 2 | ||||
-rw-r--r-- | source4/librpc/idl/notify.idl | 58 | ||||
-rw-r--r-- | source4/librpc/idl/opendb.idl | 2 | ||||
-rw-r--r-- | source4/librpc/idl/server_id.idl (renamed from source4/librpc/idl/dom_sid.idl) | 2 |
4 files changed, 61 insertions, 3 deletions
diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index 65c473779f..902312542a 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -54,7 +54,7 @@ PUBLIC_DEPENDENCIES = LIBNDR LIBSECURITY NDR_SECURITY_OBJ_FILES = $(gen_ndrsrcdir)/ndr_security.o \ ../librpc/ndr/ndr_sec_helper.o \ - $(gen_ndrsrcdir)/ndr_dom_sid.o + $(gen_ndrsrcdir)/ndr_server_id.o PUBLIC_HEADERS += $(addprefix $(gen_ndrsrcdir)/, security.h) diff --git a/source4/librpc/idl/notify.idl b/source4/librpc/idl/notify.idl new file mode 100644 index 0000000000..a19f737678 --- /dev/null +++ b/source4/librpc/idl/notify.idl @@ -0,0 +1,58 @@ +#include "idl_types.h" + +/* + IDL structures for notify change code + + this defines the structures used in the notify database code, and + the change notify buffers +*/ + +import "server_id.idl"; + +[ + pointer_default(unique) +] +interface notify +{ + + /* structure used in the notify database */ + typedef [public] struct { + server_id server; + uint32 filter; /* filter to apply in this directory */ + uint32 subdir_filter; /* filter to apply in child directories */ + utf8string path; + uint32 path_len; /* saves some computation on search */ + pointer private_data; + } notify_entry; + + /* + to allow for efficient search for matching entries, we + divide them by the directory depth, with a separate array + per depth. The entries within each depth are sorted by path, + allowing for a bisection search. + + The max_mask and max_mask_subdir at each depth is the + bitwise or of the filters and subdir filters for all entries + at that depth. This allows a depth to be quickly skipped if + no entries will match the target filter + */ + typedef struct { + uint32 max_mask; + uint32 max_mask_subdir; + uint32 num_entries; + notify_entry entries[num_entries]; + } notify_depth; + + typedef [public] struct { + uint32 num_depths; + notify_depth depth[num_depths]; + } notify_array; + + /* structure sent between servers in notify messages */ + typedef [public] struct { + uint32 action; + utf8string path; + pointer private_data; + } notify_event; + +} diff --git a/source4/librpc/idl/opendb.idl b/source4/librpc/idl/opendb.idl index 265cfaf7ad..b76992960a 100644 --- a/source4/librpc/idl/opendb.idl +++ b/source4/librpc/idl/opendb.idl @@ -7,7 +7,7 @@ ntvfs/common/opendb.c */ -import "security.idl"; +import "server_id.idl"; [ pointer_default(unique) diff --git a/source4/librpc/idl/dom_sid.idl b/source4/librpc/idl/server_id.idl index 172dda4fae..486143546b 100644 --- a/source4/librpc/idl/dom_sid.idl +++ b/source4/librpc/idl/server_id.idl @@ -1,7 +1,7 @@ [ pointer_default(unique) ] -interface dom_sid +interface server_id { /* id used to identify a endpoint, possibly in a cluster */ typedef [public] struct { |