dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / uts / common / smbsrv / ndl / netdfs.ndl
blobafc4c8838514c6093f8c511f4e8e2c4995b12fe9
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
26 #ifndef _NETDFS_NDL_
27 #define _NETDFS_NDL_
30  * NT Distributed File Service (NETDFS) RPC interface definition.
31  */
33 #include "ndrtypes.ndl"
36 #define NETDFS_ABSTRACT_UUID            "4fc742e0-4a10-11cf-8273-00aa004ae673"
37 #define NETDFS_ABSTRACT_VERS            3
39 #define NETDFS_TRANSFER_UUID            "8a885d04-1ceb-11c9-9fe8-08002b104860"
40 #define NETDFS_TRANSFER_VERS            2
42 #define NETDFS_OPNUM_GETVER             0x00
43 #define NETDFS_OPNUM_ADD                0x01
44 #define NETDFS_OPNUM_REMOVE             0x02
45 #define NETDFS_OPNUM_SETINFO            0x03
46 #define NETDFS_OPNUM_GETINFO            0x04
47 #define NETDFS_OPNUM_ENUM               0x05
48 #define NETDFS_OPNUM_MOVE               0x06
49 #define NETDFS_OPNUM_RENAME             0x07
50 #define NETDFS_OPNUM_ADDSTDROOT         0x0c
51 #define NETDFS_OPNUM_REMSTDROOT         0x0d
52 #define NETDFS_OPNUM_ENUMEX             0x15
54 #define DFS_MANAGER_VERSION_NT4         0x01
55 #define DFS_MANAGER_VERSION_W2K         0x02
56 #define DFS_MANAGER_VERSION_W2K3        0x04
58 struct netdfs_uuid {
59         DWORD data1;
60         WORD data2;
61         WORD data3;
62         BYTE data4[8];
64 typedef struct netdfs_uuid netdfs_uuid_t;
66 struct netdfs_storage_info {
67         DWORD state;
68         LPTSTR server;
69         LPTSTR share;
71 typedef struct netdfs_storage_info netdfs_storage_info_t;
74 struct netdfs_storage_info1 {
75         DWORD state;
76         LPTSTR server;
77         LPTSTR share;
78         DWORD p_class;
79         WORD p_rank;
80         WORD p_reserved;
82 typedef struct netdfs_storage_info1 netdfs_storage_info1_t;
84 struct netdfs_info1 {
85         LPTSTR entry_path;
87 typedef struct netdfs_info1 netdfs_info1_t;
89 struct netdfs_info2 {
90         LPTSTR entry_path;
91         LPTSTR comment;
92         DWORD state;
93         DWORD n_store;
95 typedef struct netdfs_info2 netdfs_info2_t;
97 struct netdfs_info3 {
98         LPTSTR entry_path;
99         LPTSTR comment;
100         DWORD state;
101         DWORD n_store;
102   SIZE_IS(n_store)
103         struct netdfs_storage_info *si;
105 typedef struct netdfs_info3 netdfs_info3_t;
107 struct netdfs_info4 {
108         LPTSTR entry_path;
109         LPTSTR comment;
110         DWORD state;
111         DWORD timeout;
112         netdfs_uuid_t guid;
113         DWORD n_store;
114   SIZE_IS(n_store)
115         struct netdfs_storage_info *si;
117 typedef struct netdfs_info4 netdfs_info4_t;
119 struct netdfs_info5 {
120         LPTSTR entry_path;
121         LPTSTR comment;
122         DWORD state;
123         DWORD timeout;
124         netdfs_uuid_t guid;
125         DWORD flags;
126         DWORD metadata_sz;
127         DWORD n_store;
129 typedef struct netdfs_info5 netdfs_info5_t;
131 struct netdfs_info6 {
132         LPTSTR entry_path;
133         LPTSTR comment;
134         DWORD state;
135         DWORD timeout;
136         netdfs_uuid_t guid;
137         DWORD flags;
138         DWORD metadata_sz;
139         DWORD n_store;
140   SIZE_IS(n_store)
141         struct netdfs_storage_info1 *si;
143 typedef struct netdfs_info6 netdfs_info6_t;
145 struct netdfs_info100 {
146         LPTSTR comment;
148 typedef struct netdfs_info100 netdfs_info100_t;
150 struct netdfs_info101 {
151         DWORD state;
153 typedef struct netdfs_info101 netdfs_info101_t;
156 struct netdfs_info102 {
157         DWORD timeout;
159 typedef struct netdfs_info102 netdfs_info102_t;
162 struct netdfs_info103 {
163         DWORD property_flag_mask;
164         DWORD property_flags;
166 typedef struct netdfs_info103 netdfs_info103_t;
169 struct netdfs_info104 {
170         DWORD priority_class;
171         WORD priority_rank;
172         WORD reserved;
174 typedef struct netdfs_info104 netdfs_info104_t;
177 struct netdfs_info105 {
178         LPTSTR comment;
179         DWORD state;
180         DWORD timeout;
181         DWORD property_flag_mask;
182         DWORD property_flags;
184 typedef struct netdfs_info105 netdfs_info105_t;
187 struct netdfs_info106 {
188         DWORD storage_state;
189         DWORD priority_class;
190         DWORD priority_rank;
194 struct netdfs_info200 {
195         LPTSTR entry_path;
199 struct netdfs_info300 {
200         DWORD flavor;
201         LPTSTR dfsname;
203 typedef struct netdfs_info300 netdfs_info300_t;
206 union netdfs_info_u {
207         CASE(1) struct netdfs_info1 *info1;
208         CASE(2) struct netdfs_info2 *info2;
209         CASE(3) struct netdfs_info3 *info3;
210         CASE(4) struct netdfs_info4 *info4;
211         CASE(5) struct netdfs_info5 *info5;
212         CASE(6) struct netdfs_info6 *info6;
213         CASE(100) struct netdfs_info100 *info100;
214         CASE(101) struct netdfs_info101 *info101;
215         CASE(102) struct netdfs_info102 *info102;
216         CASE(103) struct netdfs_info103 *info103;
217         CASE(104) struct netdfs_info104 *info104;
218         CASE(105) struct netdfs_info105 *info105;
219         CASE(106) struct netdfs_info106 *info106;
220         DEFAULT char *nullptr;
224 struct netdfs_info {
225         DWORD level;
226   SWITCH(level)
227         union netdfs_info_u iu;
229 typedef struct netdfs_info netdfs_info_t;
232 struct netdfs_array1 {
233         DWORD count;
234   SIZE_IS(count)
235         struct netdfs_info1 *info1;
238 struct netdfs_array2 {
239         DWORD count;
240   SIZE_IS(count)
241         struct netdfs_info2 *info2;
244 struct netdfs_array3 {
245         DWORD count;
246   SIZE_IS(count)
247         struct netdfs_info3 *info3;
250 struct netdfs_array4 {
251         DWORD count;
252   SIZE_IS(count)
253         struct netdfs_info4 *info4;
256 struct netdfs_array5 {
257         DWORD count;
258   SIZE_IS(count)
259         struct netdfs_info5 *info5;
262 struct netdfs_array6 {
263         DWORD count;
264   SIZE_IS(count)
265         struct netdfs_info6 *info6;
268 struct netdfs_array200 {
269         DWORD count;
270   SIZE_IS(count)
271         struct netdfs_info200 *info200;
274 struct netdfs_array300 {
275         DWORD count;
276   SIZE_IS(count)
277         struct netdfs_info300 *info300;
280 union netdfs_enum_info_u {
281         CASE(1) struct netdfs_array1 *info1;
282         CASE(2) struct netdfs_array2 *info2;
283         CASE(3) struct netdfs_array3 *info3;
284         CASE(4) struct netdfs_array4 *info4;
285         CASE(5) struct netdfs_array5 *info5;
286         CASE(6) struct netdfs_array6 *info6;
287         CASE(200) struct netdfs_array200 *info200;
288         CASE(300) struct netdfs_array300 *info300;
289         DEFAULT char *nullptr;
293 struct netdfs_enum_info {
294         DWORD level;
295         DWORD switch_value;
296   SWITCH(switch_value)
297         union netdfs_enum_info_u iu;
302  ***********************************************************************
303  * Return server version id
304  ***********************************************************************
305  */
306 OPERATION(NETDFS_OPNUM_GETVER)
307 struct netdfs_getver {
308         OUT             DWORD version;
313  ***********************************************************************
314  * Add a new volume or additional storage for an existing volume at
315  * dfs_path.
316  ***********************************************************************
317  */
318 OPERATION(NETDFS_OPNUM_ADD)
319 struct netdfs_add {
320         IN REFERENCE    LPTSTR dfs_path;
321         IN REFERENCE    LPTSTR server;
322         IN              LPTSTR share;
323         IN              LPTSTR comment;
324         IN              DWORD flags;
325         OUT             DWORD status;
327 typedef struct netdfs_add netdfs_add_t;
331  ***********************************************************************
332  * Remove a volume or additional storage for volume from the DFS at
333  * dfs_path. When applied to the last storage in a volume, removes
334  * the volume from the DFS.
335  ***********************************************************************
336  */
337 OPERATION(NETDFS_OPNUM_REMOVE)
338 struct netdfs_remove {
339         IN REFERENCE    LPTSTR dfs_path;
340         IN              LPTSTR server;
341         IN              LPTSTR share;
342         OUT             DWORD status;
347  ***********************************************************************
348  * Set information about the volume or storage. If the server and share
349  * are specified, the information set is specific to that server and
350  * share. Otherwise the information is specific to the volume as a whole.
352  * Valid levels are 100-102.
353  ***********************************************************************
354  */
355 OPERATION(NETDFS_OPNUM_SETINFO)
356 struct netdfs_setinfo {
357         IN REFERENCE    LPTSTR dfs_path;
358         IN              LPTSTR server;
359         IN              LPTSTR share;
360         IN              DWORD level;
361         IN              struct netdfs_info info;
362         OUT             DWORD status;
364 typedef struct netdfs_setinfo netdfs_setinfo_t;
368  ***********************************************************************
369  * Get information about the volume or storage. If the server and share
370  * are specified, the information returned is specific to that server
371  * and share. Otherwise the information is specific to the volume as a
372  * whole.
374  * Valid levels are 1-4, 100-102.
375  ***********************************************************************
376  */
377 OPERATION(NETDFS_OPNUM_GETINFO)
378 struct netdfs_getinfo {
379         IN REFERENCE    LPTSTR dfs_path;
380         IN              LPTSTR server;
381         IN              LPTSTR share;
382         IN              DWORD level;
383         OUT             struct netdfs_info info;
384         OUT             DWORD status;
386 typedef struct netdfs_getinfo netdfs_getinfo_t;
390  ***********************************************************************
391  * Get information about all of the volumes in the DFS. dfs_path is
392  * the "server" part of the UNC name used to refer to this particular
393  * DFS.
395  * Valid levels are 1-3.
396  ***********************************************************************
397  */
398 OPERATION(NETDFS_OPNUM_ENUM)
399 struct netdfs_enum {
400         IN              DWORD level;
401         IN              DWORD pref_max_len;
402         INOUT           struct netdfs_enum_info *info;
403         INOUT           DWORD *resume_handle;
404         OUT             DWORD status;
406 typedef struct netdfs_enum netdfs_enum_t;
410  ***********************************************************************
411  * Rename the current Win32 path in a DFS to a new Win32 path in the
412  * same DFS.
413  ***********************************************************************
414  */
415 OPERATION(NETDFS_OPNUM_RENAME)
416 struct netdfs_rename {
417         IN REFERENCE    LPTSTR dfs_path;
418         IN REFERENCE    LPTSTR new_path;
419         OUT             DWORD status;
424  ***********************************************************************
425  * Move a DFS volume and all subordinate volumes from one place in the
426  * DFS to another place in the DFS.
427  ***********************************************************************
428  */
429 OPERATION(NETDFS_OPNUM_MOVE)
430 struct netdfs_move {
431         IN REFERENCE    LPTSTR dfs_path;
432         IN REFERENCE    LPTSTR new_path;
433         IN              DWORD flags;
434         OUT             DWORD status;
439  ***********************************************************************
440  * Add a DFS root share.
441  ***********************************************************************
442  */
443 OPERATION(NETDFS_OPNUM_ADDSTDROOT)
444 struct netdfs_addstdroot {
445         IN REFERENCE    LPTSTR server;
446         IN REFERENCE    LPTSTR share;
447         IN REFERENCE    LPTSTR comment;
448         IN              DWORD flags;
449         OUT             DWORD status;
453  ***********************************************************************
454  * Remove a DFS root share.
455  ***********************************************************************
456  */
457 OPERATION(NETDFS_OPNUM_REMSTDROOT)
458 struct netdfs_remstdroot {
459         IN REFERENCE    LPTSTR server;
460         IN REFERENCE    LPTSTR share;
461         IN              DWORD flags;
462         OUT             DWORD status;
467  ***********************************************************************
468  * Get information about all of the volumes in the DFS. dfs_path is
469  * the "server" part of the UNC name used to refer to this particular
470  * DFS.
472  * Valid levels are 1-3.
473  ***********************************************************************
474  */
475 OPERATION(NETDFS_OPNUM_ENUMEX)
476 struct netdfs_enumex {
477         IN REFERENCE    LPTSTR dfs_path;
478         IN              DWORD level;
479         IN              DWORD pref_max_len;
480         INOUT           struct netdfs_enum_info *info;
481         INOUT           DWORD *resume_handle;
482         OUT             DWORD status;
487  ***********************************************************************
488  * The NETDFS interface definiton.
489  ***********************************************************************
490  */
491 INTERFACE(0)
492 union netdfs_interface {
493         CASE(NETDFS_OPNUM_GETVER)
494                 struct netdfs_getver            netdfs_getver;
495         CASE(NETDFS_OPNUM_ADD)
496                 struct netdfs_add               netdfs_add;
497         CASE(NETDFS_OPNUM_REMOVE)
498                 struct netdfs_remove            netdfs_remove;
499         CASE(NETDFS_OPNUM_SETINFO)
500                 struct netdfs_setinfo           netdfs_setinfo;
501         CASE(NETDFS_OPNUM_GETINFO)
502                 struct netdfs_getinfo           netdfs_getinfo;
503         CASE(NETDFS_OPNUM_ENUM)
504                 struct netdfs_enum              netdfs_enum;
505         CASE(NETDFS_OPNUM_MOVE)
506                 struct netdfs_move              netdfs_move;
507         CASE(NETDFS_OPNUM_RENAME)
508                 struct netdfs_rename            netdfs_rename;
509         CASE(NETDFS_OPNUM_ADDSTDROOT)
510                 struct netdfs_addstdroot        netdfs_addstdroot;
511         CASE(NETDFS_OPNUM_REMSTDROOT)
512                 struct netdfs_remstdroot        netdfs_remstdroot;
513         CASE(NETDFS_OPNUM_ENUMEX)
514                 struct netdfs_enumex            netdfs_enumex;
516 typedef union netdfs_interface  netdfs_interface_t;
517 EXTERNTYPEINFO(netdfs_interface)
520 #endif /* _NETDFS_NDL_ */