1 | #include "idl_types.h"
|
---|
2 |
|
---|
3 | import "misc.idl";
|
---|
4 | /*
|
---|
5 | dfs blobs interface definition
|
---|
6 | */
|
---|
7 |
|
---|
8 |
|
---|
9 | [
|
---|
10 | pointer_default(unique),
|
---|
11 | helpstring("dfs referral blobs"),
|
---|
12 | uuid("12345778-1234-abcd-0001-00000003")
|
---|
13 | ]
|
---|
14 |
|
---|
15 |
|
---|
16 | interface dfsblobs
|
---|
17 | {
|
---|
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
|
---|
22 | } DFS_HEADER_FLAG;
|
---|
23 |
|
---|
24 | typedef [enum16bit] enum {
|
---|
25 | DFS_SERVER_NON_ROOT = 0x0000,
|
---|
26 | DFS_SERVER_ROOT = 0x0001
|
---|
27 | } DFS_SERVER_TYPE;
|
---|
28 |
|
---|
29 | typedef [enum16bit] enum {
|
---|
30 | DFS_FLAG_REFERRAL_DOMAIN_RESP = 0x0002,
|
---|
31 | DFS_FLAG_REFERRAL_FIRST_TARGET_SET = 0x0004
|
---|
32 | } DFS_FLAGS_REFERRAL;
|
---|
33 |
|
---|
34 | typedef struct {
|
---|
35 | uint16 size;
|
---|
36 | uint16 server_type;
|
---|
37 | uint16 entry_flags;
|
---|
38 | nstring *share_name;
|
---|
39 | } dfs_referral_v1;
|
---|
40 |
|
---|
41 | typedef struct {
|
---|
42 | uint16 size;
|
---|
43 | DFS_SERVER_TYPE server_type;
|
---|
44 | DFS_FLAGS_REFERRAL entry_flags;
|
---|
45 | uint32 proximity;
|
---|
46 | uint32 ttl;
|
---|
47 | [relative_short] nstring *DFS_path;
|
---|
48 | [relative_short] nstring *DFS_alt_path;
|
---|
49 | [relative_short] nstring *netw_address;
|
---|
50 | } dfs_referral_v2;
|
---|
51 |
|
---|
52 | typedef struct {
|
---|
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;
|
---|
58 |
|
---|
59 | typedef struct {
|
---|
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;
|
---|
64 |
|
---|
65 | typedef [nodiscriminant] union {
|
---|
66 | [case(0)] dfs_normal_referral r1;
|
---|
67 | [case(2)] dfs_domain_referral r2;
|
---|
68 | [default];
|
---|
69 | } dfs_referral;
|
---|
70 |
|
---|
71 | typedef [nodiscriminant] union {
|
---|
72 | [case(16)] uint8 value[16];
|
---|
73 | [default];
|
---|
74 | } dfs_padding;
|
---|
75 |
|
---|
76 | typedef [flag(NDR_NOALIGN)] struct {
|
---|
77 | DFS_SERVER_TYPE server_type;
|
---|
78 | DFS_FLAGS_REFERRAL entry_flags;
|
---|
79 | uint32 ttl;
|
---|
80 | [switch_is(entry_flags & DFS_FLAG_REFERRAL_DOMAIN_RESP)] dfs_referral referrals;
|
---|
81 | } dfs_referral_v3_remaining;
|
---|
82 |
|
---|
83 | typedef [flag(NDR_NOALIGN)] struct {
|
---|
84 | uint16 size;
|
---|
85 | dfs_referral_v3_remaining data;
|
---|
86 | /* this is either 0 or 16 bytes */
|
---|
87 | [switch_is(size - 18)] dfs_padding service_site_guid;
|
---|
88 | } dfs_referral_v3;
|
---|
89 |
|
---|
90 | typedef struct {
|
---|
91 | uint16 size;
|
---|
92 | DFS_SERVER_TYPE server_type;
|
---|
93 | DFS_FLAGS_REFERRAL entry_flags;
|
---|
94 | uint32 ttl;
|
---|
95 | dfs_normal_referral r1;
|
---|
96 | } dfs_referral_v4;
|
---|
97 |
|
---|
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;
|
---|
103 | [default];
|
---|
104 | } dfs_referral_version;
|
---|
105 |
|
---|
106 | typedef [flag(NDR_NOALIGN)] [relative_base] struct {
|
---|
107 | uint16 version;
|
---|
108 | [switch_is(version)] dfs_referral_version referral;
|
---|
109 | } dfs_referral_type;
|
---|
110 |
|
---|
111 | typedef [public] struct {
|
---|
112 | uint16 path_consumed;
|
---|
113 | uint16 nb_referrals;
|
---|
114 | DFS_HEADER_FLAG header_flags;
|
---|
115 | dfs_referral_type referral_entries[nb_referrals];
|
---|
116 | } dfs_referral_resp;
|
---|
117 |
|
---|
118 | typedef [public] struct {
|
---|
119 | uint16 max_referral_level;
|
---|
120 | nstring servername;
|
---|
121 | } dfs_GetDFSReferral_in;
|
---|
122 |
|
---|
123 | [public] void dfs_GetDFSReferral(
|
---|
124 | [in] dfs_GetDFSReferral_in req,
|
---|
125 | [out,ref] dfs_referral_resp *resp
|
---|
126 | );
|
---|
127 |
|
---|
128 | }
|
---|