source: trunk/server/librpc/idl/dfsblobs.idl

Last change on this file was 745, checked in by Silvan Scherrer, 13 years ago

Samba Server: updated trunk to 3.6.0

File size: 3.2 KB
Line 
1#include "idl_types.h"
2
3import "misc.idl";
4/*
5dfs 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
16interface 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}
Note: See TracBrowser for help on using the repository browser.