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