diff options
Diffstat (limited to 'librpc/idl')
-rw-r--r-- | librpc/idl/dfsblobs.idl | 17 | ||||
-rw-r--r-- | librpc/idl/idl_types.h | 6 | ||||
-rw-r--r-- | librpc/idl/notify.idl | 84 | ||||
-rw-r--r-- | librpc/idl/printcap.idl | 1 | ||||
-rw-r--r-- | librpc/idl/rap.idl | 22 | ||||
-rw-r--r-- | librpc/idl/server_id.idl | 33 | ||||
-rw-r--r-- | librpc/idl/wscript_build | 3 |
7 files changed, 150 insertions, 16 deletions
diff --git a/librpc/idl/dfsblobs.idl b/librpc/idl/dfsblobs.idl index 6151c3f77b..7b8795d29c 100644 --- a/librpc/idl/dfsblobs.idl +++ b/librpc/idl/dfsblobs.idl @@ -53,7 +53,6 @@ interface dfsblobs [relative_short] nstring *DFS_path; [relative_short] nstring *DFS_alt_path; [relative_short] nstring *netw_address; - /* As stated in MS DFSC 2.2.4.3.1 this array was guid but now MUST be 16 null bytes*/ } dfs_normal_referral; typedef struct { @@ -74,32 +73,20 @@ interface dfsblobs } dfs_padding; typedef [flag(NDR_NOALIGN)] struct { + uint16 size; DFS_SERVER_TYPE server_type; DFS_FLAGS_REFERRAL entry_flags; uint32 ttl; [switch_is(entry_flags & DFS_FLAG_REFERRAL_DOMAIN_RESP)] dfs_referral referrals; - } dfs_referral_v3_remaining; - - typedef [flag(NDR_NOALIGN)] struct { - uint16 size; - dfs_referral_v3_remaining data; /* this is either 0 or 16 bytes */ [switch_is(size - 18)] dfs_padding service_site_guid; } dfs_referral_v3; - typedef struct { - uint16 size; - DFS_SERVER_TYPE server_type; - DFS_FLAGS_REFERRAL entry_flags; - uint32 ttl; - dfs_normal_referral r1; - } dfs_referral_v4; - typedef [nodiscriminant] union { [case(1)] dfs_referral_v1 v1; [case(2)] dfs_referral_v2 v2; [case(3)] dfs_referral_v3 v3; - [case(4)] dfs_referral_v4 v4; + [case(4)] dfs_referral_v3 v4; [default]; } dfs_referral_version; diff --git a/librpc/idl/idl_types.h b/librpc/idl/idl_types.h index 023c04020e..c50eface0d 100644 --- a/librpc/idl/idl_types.h +++ b/librpc/idl/idl_types.h @@ -8,6 +8,7 @@ #define STR_CONFORMANT LIBNDR_FLAG_STR_CONFORMANT #define STR_CHARLEN LIBNDR_FLAG_STR_CHARLEN #define STR_UTF8 LIBNDR_FLAG_STR_UTF8 +#define STR_RAW8 LIBNDR_FLAG_STR_RAW8 /* a null terminated UCS2 string @@ -25,6 +26,11 @@ #define utf8string [flag(STR_UTF8|STR_NULLTERM)] string /* + a null terminated "raw" string (null terminated byte sequence) +*/ +#define raw8string [flag(STR_RAW8|STR_NULLTERM)] string + +/* a null terminated UCS2 string */ #define nstring_array [flag(STR_NULLTERM|NDR_ALIGN2)] string_array diff --git a/librpc/idl/notify.idl b/librpc/idl/notify.idl new file mode 100644 index 0000000000..845010601e --- /dev/null +++ b/librpc/idl/notify.idl @@ -0,0 +1,84 @@ +#include "idl_types.h" + +import "file_id.idl", "server_id.idl"; + +/* + IDL structures for notify change code + + this defines the structures used in the notify database code, and + the change notify buffers +*/ + +[ + 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 */ + uint32 dir_fd; /* fd of open directory */ + file_id dir_id; /* file_id of open directory */ + utf8string path; + uint32 path_len; /* saves some computation on search */ + pointer private_data; + } notify_entry; + + typedef [public] struct { + uint32 num_entries; + notify_entry entries[num_entries]; + } notify_entry_array; + + /* + 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; + + typedef [v1_enum] enum { + FILE_ACTION_ADDED = 0x00000001, + FILE_ACTION_REMOVED = 0x00000002, + FILE_ACTION_MODIFIED = 0x00000003, + FILE_ACTION_RENAMED_OLD_NAME = 0x00000004, + FILE_ACTION_RENAMED_NEW_NAME = 0x00000005, + FILE_ACTION_ADDED_STREAM = 0x00000006, + FILE_ACTION_REMOVED_STREAM = 0x00000007, + FILE_ACTION_MODIFIED_STREAM = 0x00000008 + } FILE_NOTIFY_ACTION; + + /* structure sent at the CIFS layer */ + /* Align on 4-byte boundary according to MS-CIFS 2.2.7.4.2 */ + typedef [public,gensize,flag(NDR_ALIGN4)] struct { + uint32 NextEntryOffset; + FILE_NOTIFY_ACTION Action; + [value(strlen_m(FileName1)*2)] uint32 FileNameLength; + [charset(UTF16),flag(STR_NOTERM)] uint16 FileName1[FileNameLength]; + } FILE_NOTIFY_INFORMATION; +} diff --git a/librpc/idl/printcap.idl b/librpc/idl/printcap.idl index 5ab380ce6c..d9c34f3fab 100644 --- a/librpc/idl/printcap.idl +++ b/librpc/idl/printcap.idl @@ -7,6 +7,7 @@ interface printcap typedef struct { [charset(UTF8),string] uint8 *name; [charset(UTF8),string] uint8 *info; + [charset(UTF8),string] uint8 *location; } pcap_printer; typedef [public] struct { diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl index 8087e22c5b..780951c750 100644 --- a/librpc/idl/rap.idl +++ b/librpc/idl/rap.idl @@ -966,6 +966,28 @@ interface rap [out] uint16 convert ); + typedef [public] struct { + uint32 TimeSinceJan11970; + uint32 TimeSinceBoot; + uint8 Hours; + uint8 Minutes; + uint8 Seconds; + uint8 Hundreds; + uint16 TimeZone; + uint16 ClockFrequency; + uint8 Day; + uint8 Month; + uint16 Year; + uint8 Weekday; + } rap_TimeOfDayInfo; + + [public] void rap_NetRemoteTOD( + [in] uint16 bufsize, + [out] rap_status status, + [out] uint16 convert, + [out] rap_TimeOfDayInfo tod + ); + /* Parameter description strings for RAP calls */ /* Names are defined name for RAP call with _REQ */ /* appended to end. */ diff --git a/librpc/idl/server_id.idl b/librpc/idl/server_id.idl new file mode 100644 index 0000000000..ac2e9ab318 --- /dev/null +++ b/librpc/idl/server_id.idl @@ -0,0 +1,33 @@ +[ + pointer_default(unique) +] +interface server_id +{ + + /* + * Virtual Node Numbers are identifying a node within a cluster. + * Ctdbd sets this, we retrieve our vnn from it. + */ + + const int NONCLUSTER_VNN = 0xFFFFFFFF; + + /* used to look like the following, note that unique_id was not + * marshalled at all... + + struct server_id { + pid_t pid; + #ifdef CLUSTER_SUPPORT + uint32 vnn; + #endif + uint64_t unique_id; + }; + + */ + + typedef [public] struct { + hyper pid; + uint32 task_id; + uint32 vnn; + hyper unique_id; + } server_id; +} diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build index 7e1340e6f7..ffb7a9c808 100644 --- a/librpc/idl/wscript_build +++ b/librpc/idl/wscript_build @@ -8,8 +8,9 @@ bld.SAMBA_PIDL_LIST('PIDL', browser.idl dfs.idl dssetup.idl frsapi.idl krb5pac.idl named_pipe_auth.idl orpc.idl rot.idl spoolss.idl w32time.idl xattr.idl dbgidl.idl dnsserver.idl echo.idl frsrpc.idl lsa.idl nbt.idl dns.idl - oxidresolver.idl samr.idl srvsvc.idl winreg.idl dcerpc.idl + oxidresolver.idl samr.idl server_id.idl srvsvc.idl winreg.idl dcerpc.idl drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl + notify.idl policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl printcap.idl''', options='--header --ndr-parser --samba3-ndr-server --server --client --python', |