5 dfs blobs interface definition
10 pointer_default(unique),
11 helpstring("dfs referral blobs"),
12 uuid("12345778-1234-abcd-0001-00000003")
18 typedef [bitmap32bit
] bitmap
{
19 DFS_HEADER_FLAG_REFERAL_SVR
= 0x00000001,
20 DFS_HEADER_FLAG_STORAGE_SVR
= 0x00000002,
21 DFS_HEADER_FLAG_TARGET_BCK
= 0x00000004
24 typedef [enum16bit
] enum {
25 DFS_SERVER_NON_ROOT
= 0x0000,
26 DFS_SERVER_ROOT
= 0x0001
29 typedef [enum16bit
] enum {
30 DFS_FLAG_REFERRAL_DOMAIN_RESP
= 0x0002,
31 DFS_FLAG_REFERRAL_FIRST_TARGET_SET
= 0x0004
43 DFS_SERVER_TYPE server_type
;
44 DFS_FLAGS_REFERRAL entry_flags
;
47 [relative_short
] nstring
*DFS_path
;
48 [relative_short
] nstring
*DFS_alt_path
;
49 [relative_short
] nstring
*netw_address
;
53 [relative_short
] nstring
*DFS_path
;
54 [relative_short
] nstring
*DFS_alt_path
;
55 [relative_short
] nstring
*netw_address
;
56 /* As stated in MS DFSC 2.2.4.3.1 this array was guid but now MUST be 16 null bytes*/
57 } dfs_normal_referral
;
60 [relative_short
] nstring
*special_name
;
61 uint16 nb_expanded_names
;
62 [relative_short
,subcontext
(0),flag
(NDR_REMAINING|STR_NULLTERM
)] string_array
*expanded_names
;
63 } dfs_domain_referral
;
65 typedef [nodiscriminant
] union {
66 [case(0)] dfs_normal_referral r1
;
67 [case(2)] dfs_domain_referral r2
;
71 typedef [nodiscriminant
] union {
72 [case(16)] uint8 value
[16];
76 typedef [flag
(NDR_NOALIGN
)] struct {
77 DFS_SERVER_TYPE server_type
;
78 DFS_FLAGS_REFERRAL entry_flags
;
80 [switch_is(entry_flags
& DFS_FLAG_REFERRAL_DOMAIN_RESP
)] dfs_referral referrals
;
81 } dfs_referral_v3_remaining
;
83 typedef [flag
(NDR_NOALIGN
)] struct {
85 dfs_referral_v3_remaining data
;
86 /* this is either 0 or 16 bytes */
87 [switch_is(size
- 18)] dfs_padding service_site_guid
;
92 DFS_SERVER_TYPE server_type
;
93 DFS_FLAGS_REFERRAL entry_flags
;
95 dfs_normal_referral r1
;
98 typedef [nodiscriminant
] union {
99 [case(1)] dfs_referral_v1 v1
;
100 [case(2)] dfs_referral_v2 v2
;
101 [case(3)] dfs_referral_v3 v3
;
102 [case(4)] dfs_referral_v4 v4
;
104 } dfs_referral_version
;
106 typedef [flag
(NDR_NOALIGN
)] [relative_base
] struct {
108 [switch_is(version)] dfs_referral_version referral
;
111 typedef [public] struct {
112 uint16 path_consumed
;
114 DFS_HEADER_FLAG header_flags
;
115 dfs_referral_type referral_entries
[nb_referrals
];
118 typedef [public] struct {
119 uint16 max_referral_level
;
121 } dfs_GetDFSReferral_in
;
123 [public] void dfs_GetDFSReferral
(
124 [in] dfs_GetDFSReferral_in req
,
125 [out,ref] dfs_referral_resp
*resp