1*7d815089SGordon Ross/*
2*7d815089SGordon Ross * CDDL HEADER START
3*7d815089SGordon Ross *
4*7d815089SGordon Ross * The contents of this file are subject to the terms of the
5*7d815089SGordon Ross * Common Development and Distribution License (the "License").
6*7d815089SGordon Ross * You may not use this file except in compliance with the License.
7*7d815089SGordon Ross *
8*7d815089SGordon Ross * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*7d815089SGordon Ross * or http://www.opensolaris.org/os/licensing.
10*7d815089SGordon Ross * See the License for the specific language governing permissions
11*7d815089SGordon Ross * and limitations under the License.
12*7d815089SGordon Ross *
13*7d815089SGordon Ross * When distributing Covered Code, include this CDDL HEADER in each
14*7d815089SGordon Ross * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*7d815089SGordon Ross * If applicable, add the following below this CDDL HEADER, with the
16*7d815089SGordon Ross * fields enclosed by brackets "[]" replaced with your own identifying
17*7d815089SGordon Ross * information: Portions Copyright [yyyy] [name of copyright owner]
18*7d815089SGordon Ross *
19*7d815089SGordon Ross * CDDL HEADER END
20*7d815089SGordon Ross */
21*7d815089SGordon Ross
22*7d815089SGordon Ross/*
23*7d815089SGordon Ross * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
24*7d815089SGordon Ross */
25*7d815089SGordon Ross
26*7d815089SGordon Ross/*
27*7d815089SGordon Ross * SRVSVC - Server Service (partial)
28*7d815089SGordon Ross *
29*7d815089SGordon Ross * This module needs only NetShareEnum (levels 0, 1)
30*7d815089SGordon Ross * and NetServerGetInfo (levels 100, 101)
31*7d815089SGordon Ross */
32*7d815089SGordon Ross
33*7d815089SGordon Ross#include <libmlrpc/ndrtypes.ndl>
34*7d815089SGordon Ross
35*7d815089SGordon Ross/*
36*7d815089SGordon Ross * SRVSVC - Server Service
37*7d815089SGordon Ross */
38*7d815089SGordon Ross
39*7d815089SGordon Ross#define SRVSVC_OPNUM_NetShareEnum                0x0f
40*7d815089SGordon Ross#define SRVSVC_OPNUM_NetServerGetInfo            0x15
41*7d815089SGordon Ross
42*7d815089SGordon Ross/*
43*7d815089SGordon Ross * SRVSVC NetShareEnum (
44*7d815089SGordon Ross *	IN  LPTSTR	servername,
45*7d815089SGordon Ross *	IN  DWORD	level;
46*7d815089SGordon Ross *	OUT union switch(level) {
47*7d815089SGordon Ross *		case 0: struct {
48*7d815089SGordon Ross *				DWORD entriesread;
49*7d815089SGordon Ross *			     [size_is(entriesread)]
50*7d815089SGordon Ross *				_SHARE_INFO_0 *entries;
51*7d815089SGordon Ross *			} *bufptr0;
52*7d815089SGordon Ross *		case 1: struct {
53*7d815089SGordon Ross *				DWORD entriesread;
54*7d815089SGordon Ross *			     [size_is(entriesread)]
55*7d815089SGordon Ross *				_SHARE_INFO_1 *entries;
56*7d815089SGordon Ross *			} *bufptr1;
57*7d815089SGordon Ross *		...
58*7d815089SGordon Ross *	    }		bufptr,
59*7d815089SGordon Ross *	IN  DWORD	prefmaxlen,
60*7d815089SGordon Ross *	OUT DWORD	totalentries,
61*7d815089SGordon Ross *	IN OUT DWORD ?*	resume_handle,
62*7d815089SGordon Ross *	OUT DWORD	status
63*7d815089SGordon Ross *      )
64*7d815089SGordon Ross */
65*7d815089SGordon Ross
66*7d815089SGordon Rossstruct mslm_NetShareInfo_0 {
67*7d815089SGordon Ross	LPTSTR shi0_netname;
68*7d815089SGordon Ross};
69*7d815089SGordon Rossstruct mslm_NetShareInfo_0_result {
70*7d815089SGordon Ross	DWORD	entriesread;
71*7d815089SGordon Ross	SIZE_IS(entriesread)
72*7d815089SGordon Ross	struct mslm_NetShareInfo_0 *entries;
73*7d815089SGordon Ross};
74*7d815089SGordon Ross
75*7d815089SGordon Rossstruct mslm_NetShareInfo_1 {
76*7d815089SGordon Ross	LPTSTR	shi1_netname;
77*7d815089SGordon Ross	DWORD	shi1_type; /* type of resource such as IPC$ */
78*7d815089SGordon Ross	LPTSTR	shi1_comment;
79*7d815089SGordon Ross};
80*7d815089SGordon Rossstruct mslm_NetShareInfo_1_result {
81*7d815089SGordon Ross	DWORD	entriesread;
82*7d815089SGordon Ross	SIZE_IS(entriesread)
83*7d815089SGordon Ross	struct mslm_NetShareInfo_1 *entries;
84*7d815089SGordon Ross};
85*7d815089SGordon Ross
86*7d815089SGordon Rossunion mslm_NetShareEnum_ru {
87*7d815089SGordon Ross	CASE(0)		struct mslm_NetShareInfo_0_result *bufptr0;
88*7d815089SGordon Ross	CASE(1)		struct mslm_NetShareInfo_1_result *bufptr1;
89*7d815089SGordon Ross	DEFAULT		char *nullptr;
90*7d815089SGordon Ross};
91*7d815089SGordon Rossstruct mslm_NetShareEnum_result {
92*7d815089SGordon Ross	DWORD	level;
93*7d815089SGordon Ross	SWITCH(level)
94*7d815089SGordon Ross	union mslm_NetShareEnum_ru ru;
95*7d815089SGordon Ross};
96*7d815089SGordon Ross
97*7d815089SGordon Ross
98*7d815089SGordon RossOPERATION(SRVSVC_OPNUM_NetShareEnum)
99*7d815089SGordon Rossstruct mslm_NetShareEnum {
100*7d815089SGordon Ross	IN		LPTSTR	servername;
101*7d815089SGordon Ross	INOUT		DWORD	level;
102*7d815089SGordon Ross	INOUT		struct mslm_NetShareEnum_result result;
103*7d815089SGordon Ross	IN		DWORD	prefmaxlen;
104*7d815089SGordon Ross	OUT		DWORD	totalentries;
105*7d815089SGordon Ross	INOUT		DWORD	*resume_handle;
106*7d815089SGordon Ross	OUT		DWORD	status;
107*7d815089SGordon Ross};
108*7d815089SGordon Ross
109*7d815089SGordon Ross
110*7d815089SGordon Ross/*
111*7d815089SGordon Ross * SRVSVC NetServerGetInfo (
112*7d815089SGordon Ross *	IN LPTSTR	servername,
113*7d815089SGordon Ross *	IN DWORD	level,
114*7d815089SGordon Ross *	OUT union switch(level) {
115*7d815089SGordon Ross *		case 100: _SERVER_INFO_100 *	p100;
116*7d815089SGordon Ross *		case 101: _SERVER_INFO_101 *	p101;
117*7d815089SGordon Ross *		case 102: _SERVER_INFO_102 *	p102;
118*7d815089SGordon Ross *	    }		bufptr,
119*7d815089SGordon Ross *	OUT DWORD	status
120*7d815089SGordon Ross *      )
121*7d815089SGordon Ross */
122*7d815089SGordon Ross
123*7d815089SGordon Ross/* for svX_platform (note: decimal!) */
124*7d815089SGordon Ross#define	SV_PLATFORM_ID_DOS	300
125*7d815089SGordon Ross#define	SV_PLATFORM_ID_OS2	400
126*7d815089SGordon Ross#define	SV_PLATFORM_ID_NT	500
127*7d815089SGordon Ross#define	SV_PLATFORM_ID_OSF	600
128*7d815089SGordon Ross#define	SV_PLATFORM_ID_VMS	700
129*7d815089SGordon Ross
130*7d815089SGordon Rossstruct mslm_SERVER_INFO_100 {
131*7d815089SGordon Ross	DWORD		sv100_platform_id;
132*7d815089SGordon Ross	LPTSTR		sv100_name;
133*7d815089SGordon Ross};
134*7d815089SGordon Ross
135*7d815089SGordon Rossstruct mslm_SERVER_INFO_101 {
136*7d815089SGordon Ross	DWORD		sv101_platform_id;
137*7d815089SGordon Ross	LPTSTR		sv101_name;
138*7d815089SGordon Ross	DWORD		sv101_version_major;
139*7d815089SGordon Ross	DWORD		sv101_version_minor;
140*7d815089SGordon Ross	DWORD		sv101_type;
141*7d815089SGordon Ross	LPTSTR		sv101_comment;
142*7d815089SGordon Ross};
143*7d815089SGordon Ross
144*7d815089SGordon Rossunion mslm_NetServerGetInfo_ru {
145*7d815089SGordon Ross	CASE(100)	struct mslm_SERVER_INFO_100 *info100;
146*7d815089SGordon Ross	CASE(101)	struct mslm_SERVER_INFO_101 *info101;
147*7d815089SGordon Ross	DEFAULT		char *nullptr;
148*7d815089SGordon Ross};
149*7d815089SGordon Ross
150*7d815089SGordon Rossstruct mslm_NetServerGetInfo_result {
151*7d815089SGordon Ross	DWORD level;
152*7d815089SGordon Ross	SWITCH(level)
153*7d815089SGordon Ross	union mslm_NetServerGetInfo_ru ru;
154*7d815089SGordon Ross};
155*7d815089SGordon Ross
156*7d815089SGordon Ross
157*7d815089SGordon RossOPERATION(SRVSVC_OPNUM_NetServerGetInfo)
158*7d815089SGordon Rossstruct mslm_NetServerGetInfo {
159*7d815089SGordon Ross	IN  LPTSTR	servername;
160*7d815089SGordon Ross	IN  DWORD	level;
161*7d815089SGordon Ross	OUT struct mslm_NetServerGetInfo_result result;
162*7d815089SGordon Ross	OUT DWORD	status;
163*7d815089SGordon Ross};
164*7d815089SGordon Ross
165*7d815089SGordon Ross
166*7d815089SGordon Ross/*
167*7d815089SGordon Ross * The SRVSVC interface
168*7d815089SGordon Ross */
169*7d815089SGordon RossINTERFACE(0)
170*7d815089SGordon Rossunion srvsvc_interface {
171*7d815089SGordon Ross	CASE(SRVSVC_OPNUM_NetShareEnum)
172*7d815089SGordon Ross		struct mslm_NetShareEnum	NetShareEnum;
173*7d815089SGordon Ross	CASE(SRVSVC_OPNUM_NetServerGetInfo)
174*7d815089SGordon Ross		struct mslm_NetServerGetInfo	NetServerGetInfo;
175*7d815089SGordon Ross};
176*7d815089SGordon Rosstypedef union srvsvc_interface	srvsvc_interface_t;
177*7d815089SGordon RossEXTERNTYPEINFO(srvsvc_interface)
178