lib/util: charset modules do not exist any more
[amitay/samba.git] / librpc / idl / dfsblobs.idl
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         } dfs_normal_referral;
57
58         typedef struct {
59                 [relative_short] nstring *special_name;
60                 uint16 nb_expanded_names;
61                 [relative_short,subcontext(0),flag(NDR_REMAINING|STR_NULLTERM)] string_array *expanded_names;
62         } dfs_domain_referral;
63
64         typedef [nodiscriminant] union {
65                 [case(0)] dfs_normal_referral r1;
66                 [case(2)] dfs_domain_referral r2;
67                 [default];
68         } dfs_referral;
69
70         typedef [nodiscriminant] union {
71                 [case(16)] uint8 value[16];
72                 [default];
73         } dfs_padding;
74
75         typedef [flag(NDR_NOALIGN)] struct {
76                 uint16 size;
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                 /* this is either 0 or 16 bytes */
82                 [switch_is(size - 18)] dfs_padding service_site_guid;
83         } dfs_referral_v3;
84
85         typedef [nodiscriminant] union {
86                 [case(1)] dfs_referral_v1 v1;
87                 [case(2)] dfs_referral_v2 v2;
88                 [case(3)] dfs_referral_v3 v3;
89                 [case(4)] dfs_referral_v3 v4;
90                 [default];
91         } dfs_referral_version;
92
93         typedef [flag(NDR_NOALIGN)] [relative_base] struct {
94                 uint16  version;
95                 [switch_is(version)] dfs_referral_version referral;
96         } dfs_referral_type;
97
98         typedef [public] struct {
99                 uint16  path_consumed;
100                 uint16  nb_referrals;
101                 DFS_HEADER_FLAG header_flags;
102                 dfs_referral_type referral_entries[nb_referrals];
103         } dfs_referral_resp;
104
105         typedef [public] struct {
106                 uint16 max_referral_level;
107                 nstring servername;
108         } dfs_GetDFSReferral_in;
109
110        [public] void dfs_GetDFSReferral(
111                [in]            dfs_GetDFSReferral_in req,
112                [out,ref]       dfs_referral_resp *resp
113               );
114
115 }