diff options
author | bubulle <bubulle@alioth.debian.org> | 2012-01-26 19:58:37 +0000 |
---|---|---|
committer | bubulle <bubulle@alioth.debian.org> | 2012-01-26 19:58:37 +0000 |
commit | cb25bc5ca98dff7a896f596f9f1586a4739ad8ec (patch) | |
tree | 31bd310956a0c533e3e46cb88aec6e00b5eedf53 /librpc/idl/dfsblobs.idl | |
parent | 5f021ee1efe415ba8fe4281d0622204a68074ea8 (diff) | |
download | samba-cb25bc5ca98dff7a896f596f9f1586a4739ad8ec.tar.gz |
Load samba-3.6.2 into branches/samba/upstream.upstream/3.6.2
git-svn-id: svn://svn.debian.org/svn/pkg-samba/branches/samba/upstream@3992 fc4039ab-9d04-0410-8cac-899223bdd6b0
Diffstat (limited to 'librpc/idl/dfsblobs.idl')
-rw-r--r-- | librpc/idl/dfsblobs.idl | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/librpc/idl/dfsblobs.idl b/librpc/idl/dfsblobs.idl new file mode 100644 index 0000000000..6151c3f77b --- /dev/null +++ b/librpc/idl/dfsblobs.idl @@ -0,0 +1,128 @@ +#include "idl_types.h" + +import "misc.idl"; +/* +dfs blobs interface definition +*/ + + +[ + pointer_default(unique), + helpstring("dfs referral blobs"), + uuid("12345778-1234-abcd-0001-00000003") +] + + +interface dfsblobs +{ + typedef [bitmap32bit] bitmap { + DFS_HEADER_FLAG_REFERAL_SVR = 0x00000001, + DFS_HEADER_FLAG_STORAGE_SVR = 0x00000002, + DFS_HEADER_FLAG_TARGET_BCK = 0x00000004 + } DFS_HEADER_FLAG; + + typedef [enum16bit] enum { + DFS_SERVER_NON_ROOT = 0x0000, + DFS_SERVER_ROOT = 0x0001 + } DFS_SERVER_TYPE; + + typedef [enum16bit] enum { + DFS_FLAG_REFERRAL_DOMAIN_RESP = 0x0002, + DFS_FLAG_REFERRAL_FIRST_TARGET_SET = 0x0004 + } DFS_FLAGS_REFERRAL; + + typedef struct { + uint16 size; + uint16 server_type; + uint16 entry_flags; + nstring *share_name; + } dfs_referral_v1; + + typedef struct { + uint16 size; + DFS_SERVER_TYPE server_type; + DFS_FLAGS_REFERRAL entry_flags; + uint32 proximity; + uint32 ttl; + [relative_short] nstring *DFS_path; + [relative_short] nstring *DFS_alt_path; + [relative_short] nstring *netw_address; + } dfs_referral_v2; + + typedef struct { + [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 { + [relative_short] nstring *special_name; + uint16 nb_expanded_names; + [relative_short,subcontext(0),flag(NDR_REMAINING|STR_NULLTERM)] string_array *expanded_names; + } dfs_domain_referral; + + typedef [nodiscriminant] union { + [case(0)] dfs_normal_referral r1; + [case(2)] dfs_domain_referral r2; + [default]; + } dfs_referral; + + typedef [nodiscriminant] union { + [case(16)] uint8 value[16]; + [default]; + } dfs_padding; + + typedef [flag(NDR_NOALIGN)] struct { + 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; + [default]; + } dfs_referral_version; + + typedef [flag(NDR_NOALIGN)] [relative_base] struct { + uint16 version; + [switch_is(version)] dfs_referral_version referral; + } dfs_referral_type; + + typedef [public] struct { + uint16 path_consumed; + uint16 nb_referrals; + DFS_HEADER_FLAG header_flags; + dfs_referral_type referral_entries[nb_referrals]; + } dfs_referral_resp; + + typedef [public] struct { + uint16 max_referral_level; + nstring servername; + } dfs_GetDFSReferral_in; + + [public] void dfs_GetDFSReferral( + [in] dfs_GetDFSReferral_in req, + [out,ref] dfs_referral_resp *resp + ); + +} |