xref: /illumos-gate/usr/src/cmd/fs.d/smbclnt/smbutil/srvsvc1.ndl (revision 8a2b682e57a046b828f37bcde1776f131ef4629f)
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 */
21
22/*
23 * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24 */
25
26/*
27 * SRVSVC - Server Service (partial)
28 *
29 * This module needs only NetShareEnum (levels 0, 1)
30 * and NetServerGetInfo (levels 100, 101)
31 */
32
33#include <libmlrpc/ndrtypes.ndl>
34
35/*
36 * SRVSVC - Server Service
37 */
38
39#define SRVSVC_OPNUM_NetShareEnum                0x0f
40#define SRVSVC_OPNUM_NetServerGetInfo            0x15
41
42/*
43 * SRVSVC NetShareEnum (
44 *	IN  LPTSTR	servername,
45 *	IN  DWORD	level;
46 *	OUT union switch(level) {
47 *		case 0: struct {
48 *				DWORD entriesread;
49 *			     [size_is(entriesread)]
50 *				_SHARE_INFO_0 *entries;
51 *			} *bufptr0;
52 *		case 1: struct {
53 *				DWORD entriesread;
54 *			     [size_is(entriesread)]
55 *				_SHARE_INFO_1 *entries;
56 *			} *bufptr1;
57 *		...
58 *	    }		bufptr,
59 *	IN  DWORD	prefmaxlen,
60 *	OUT DWORD	totalentries,
61 *	IN OUT DWORD ?*	resume_handle,
62 *	OUT DWORD	status
63 *      )
64 */
65
66struct mslm_NetShareInfo_0 {
67	LPTSTR shi0_netname;
68};
69struct mslm_NetShareInfo_0_result {
70	DWORD	entriesread;
71	SIZE_IS(entriesread)
72	struct mslm_NetShareInfo_0 *entries;
73};
74
75struct mslm_NetShareInfo_1 {
76	LPTSTR	shi1_netname;
77	DWORD	shi1_type; /* type of resource such as IPC$ */
78	LPTSTR	shi1_comment;
79};
80struct mslm_NetShareInfo_1_result {
81	DWORD	entriesread;
82	SIZE_IS(entriesread)
83	struct mslm_NetShareInfo_1 *entries;
84};
85
86union mslm_NetShareEnum_ru {
87	CASE(0)		struct mslm_NetShareInfo_0_result *bufptr0;
88	CASE(1)		struct mslm_NetShareInfo_1_result *bufptr1;
89	DEFAULT		char *nullptr;
90};
91struct mslm_NetShareEnum_result {
92	DWORD	level;
93	SWITCH(level)
94	union mslm_NetShareEnum_ru ru;
95};
96
97
98OPERATION(SRVSVC_OPNUM_NetShareEnum)
99struct mslm_NetShareEnum {
100	IN		LPTSTR	servername;
101	INOUT		DWORD	level;
102	INOUT		struct mslm_NetShareEnum_result result;
103	IN		DWORD	prefmaxlen;
104	OUT		DWORD	totalentries;
105	INOUT		DWORD	*resume_handle;
106	OUT		DWORD	status;
107};
108
109
110/*
111 * SRVSVC NetServerGetInfo (
112 *	IN LPTSTR	servername,
113 *	IN DWORD	level,
114 *	OUT union switch(level) {
115 *		case 100: _SERVER_INFO_100 *	p100;
116 *		case 101: _SERVER_INFO_101 *	p101;
117 *		case 102: _SERVER_INFO_102 *	p102;
118 *	    }		bufptr,
119 *	OUT DWORD	status
120 *      )
121 */
122
123/* for svX_platform (note: decimal!) */
124#define	SV_PLATFORM_ID_DOS	300
125#define	SV_PLATFORM_ID_OS2	400
126#define	SV_PLATFORM_ID_NT	500
127#define	SV_PLATFORM_ID_OSF	600
128#define	SV_PLATFORM_ID_VMS	700
129
130struct mslm_SERVER_INFO_100 {
131	DWORD		sv100_platform_id;
132	LPTSTR		sv100_name;
133};
134
135struct mslm_SERVER_INFO_101 {
136	DWORD		sv101_platform_id;
137	LPTSTR		sv101_name;
138	DWORD		sv101_version_major;
139	DWORD		sv101_version_minor;
140	DWORD		sv101_type;
141	LPTSTR		sv101_comment;
142};
143
144union mslm_NetServerGetInfo_ru {
145	CASE(100)	struct mslm_SERVER_INFO_100 *info100;
146	CASE(101)	struct mslm_SERVER_INFO_101 *info101;
147	DEFAULT		char *nullptr;
148};
149
150struct mslm_NetServerGetInfo_result {
151	DWORD level;
152	SWITCH(level)
153	union mslm_NetServerGetInfo_ru ru;
154};
155
156
157OPERATION(SRVSVC_OPNUM_NetServerGetInfo)
158struct mslm_NetServerGetInfo {
159	IN  LPTSTR	servername;
160	IN  DWORD	level;
161	OUT struct mslm_NetServerGetInfo_result result;
162	OUT DWORD	status;
163};
164
165
166/*
167 * The SRVSVC interface
168 */
169INTERFACE(0)
170union srvsvc_interface {
171	CASE(SRVSVC_OPNUM_NetShareEnum)
172		struct mslm_NetShareEnum	NetShareEnum;
173	CASE(SRVSVC_OPNUM_NetServerGetInfo)
174		struct mslm_NetServerGetInfo	NetServerGetInfo;
175};
176typedef union srvsvc_interface	srvsvc_interface_t;
177EXTERNTYPEINFO(srvsvc_interface)
178