15331Samw/* 25331Samw * CDDL HEADER START 35331Samw * 45331Samw * The contents of this file are subject to the terms of the 55331Samw * Common Development and Distribution License (the "License"). 65331Samw * You may not use this file except in compliance with the License. 75331Samw * 85331Samw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95331Samw * or http://www.opensolaris.org/os/licensing. 105331Samw * See the License for the specific language governing permissions 115331Samw * and limitations under the License. 125331Samw * 135331Samw * When distributing Covered Code, include this CDDL HEADER in each 145331Samw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 155331Samw * If applicable, add the following below this CDDL HEADER, with the 165331Samw * fields enclosed by brackets "[]" replaced with your own identifying 175331Samw * information: Portions Copyright [yyyy] [name of copyright owner] 185331Samw * 195331Samw * CDDL HEADER END 205331Samw */ 215331Samw/* 22*11963SAfshin.Ardakani@Sun.COM * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 235331Samw * Use is subject to license terms. 245331Samw */ 255331Samw 265331Samw#ifndef _NETDFS_NDL_ 275331Samw#define _NETDFS_NDL_ 285331Samw 295331Samw/* 305331Samw * NT Distributed File Service (NETDFS) RPC interface definition. 315331Samw */ 325331Samw 335331Samw#include "ndrtypes.ndl" 345331Samw 355331Samw 368334SJose.Borrego@Sun.COM#define NETDFS_ABSTRACT_UUID "4fc742e0-4a10-11cf-8273-00aa004ae673" 375331Samw#define NETDFS_ABSTRACT_VERS 3 385331Samw 398334SJose.Borrego@Sun.COM#define NETDFS_TRANSFER_UUID "8a885d04-1ceb-11c9-9fe8-08002b104860" 405331Samw#define NETDFS_TRANSFER_VERS 2 415331Samw 425331Samw#define NETDFS_OPNUM_GETVER 0x00 435331Samw#define NETDFS_OPNUM_ADD 0x01 445331Samw#define NETDFS_OPNUM_REMOVE 0x02 455331Samw#define NETDFS_OPNUM_SETINFO 0x03 465331Samw#define NETDFS_OPNUM_GETINFO 0x04 475331Samw#define NETDFS_OPNUM_ENUM 0x05 48*11963SAfshin.Ardakani@Sun.COM#define NETDFS_OPNUM_MOVE 0x06 49*11963SAfshin.Ardakani@Sun.COM#define NETDFS_OPNUM_RENAME 0x07 505331Samw#define NETDFS_OPNUM_ADDSTDROOT 0x0c 515331Samw#define NETDFS_OPNUM_REMSTDROOT 0x0d 525331Samw#define NETDFS_OPNUM_ENUMEX 0x15 535331Samw 545331Samw#define DFS_MANAGER_VERSION_NT4 0x01 555331Samw#define DFS_MANAGER_VERSION_W2K 0x02 565331Samw#define DFS_MANAGER_VERSION_W2K3 0x04 575331Samw 58*11963SAfshin.Ardakani@Sun.COMstruct netdfs_uuid { 59*11963SAfshin.Ardakani@Sun.COM DWORD data1; 60*11963SAfshin.Ardakani@Sun.COM WORD data2; 61*11963SAfshin.Ardakani@Sun.COM WORD data3; 62*11963SAfshin.Ardakani@Sun.COM BYTE data4[8]; 63*11963SAfshin.Ardakani@Sun.COM}; 64*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_uuid netdfs_uuid_t; 655331Samw 665331Samwstruct netdfs_storage_info { 675331Samw DWORD state; 685331Samw LPTSTR server; 695331Samw LPTSTR share; 705331Samw}; 71*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_storage_info netdfs_storage_info_t; 725331Samw 735331Samw 74*11963SAfshin.Ardakani@Sun.COMstruct netdfs_storage_info1 { 755331Samw DWORD state; 765331Samw LPTSTR server; 775331Samw LPTSTR share; 78*11963SAfshin.Ardakani@Sun.COM DWORD p_class; 79*11963SAfshin.Ardakani@Sun.COM WORD p_rank; 80*11963SAfshin.Ardakani@Sun.COM WORD p_reserved; 815331Samw}; 82*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_storage_info1 netdfs_storage_info1_t; 835331Samw 845331Samwstruct netdfs_info1 { 855331Samw LPTSTR entry_path; 865331Samw}; 87*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info1 netdfs_info1_t; 885331Samw 895331Samwstruct netdfs_info2 { 905331Samw LPTSTR entry_path; 915331Samw LPTSTR comment; 925331Samw DWORD state; 935331Samw DWORD n_store; 945331Samw}; 95*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info2 netdfs_info2_t; 965331Samw 975331Samwstruct netdfs_info3 { 985331Samw LPTSTR entry_path; 995331Samw LPTSTR comment; 1005331Samw DWORD state; 1015331Samw DWORD n_store; 1025331Samw SIZE_IS(n_store) 1035331Samw struct netdfs_storage_info *si; 1045331Samw}; 105*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info3 netdfs_info3_t; 1065331Samw 1075331Samwstruct netdfs_info4 { 1085331Samw LPTSTR entry_path; 1095331Samw LPTSTR comment; 1105331Samw DWORD state; 1115331Samw DWORD timeout; 112*11963SAfshin.Ardakani@Sun.COM netdfs_uuid_t guid; 1135331Samw DWORD n_store; 1145331Samw SIZE_IS(n_store) 1155331Samw struct netdfs_storage_info *si; 1165331Samw}; 117*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info4 netdfs_info4_t; 1185331Samw 119*11963SAfshin.Ardakani@Sun.COMstruct netdfs_info5 { 120*11963SAfshin.Ardakani@Sun.COM LPTSTR entry_path; 121*11963SAfshin.Ardakani@Sun.COM LPTSTR comment; 122*11963SAfshin.Ardakani@Sun.COM DWORD state; 123*11963SAfshin.Ardakani@Sun.COM DWORD timeout; 124*11963SAfshin.Ardakani@Sun.COM netdfs_uuid_t guid; 125*11963SAfshin.Ardakani@Sun.COM DWORD flags; 126*11963SAfshin.Ardakani@Sun.COM DWORD metadata_sz; 127*11963SAfshin.Ardakani@Sun.COM DWORD n_store; 128*11963SAfshin.Ardakani@Sun.COM}; 129*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info5 netdfs_info5_t; 1305331Samw 1315331Samwstruct netdfs_info6 { 1325331Samw LPTSTR entry_path; 1335331Samw LPTSTR comment; 1345331Samw DWORD state; 1355331Samw DWORD timeout; 136*11963SAfshin.Ardakani@Sun.COM netdfs_uuid_t guid; 1375331Samw DWORD flags; 138*11963SAfshin.Ardakani@Sun.COM DWORD metadata_sz; 1395331Samw DWORD n_store; 1405331Samw SIZE_IS(n_store) 141*11963SAfshin.Ardakani@Sun.COM struct netdfs_storage_info1 *si; 1425331Samw}; 143*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info6 netdfs_info6_t; 1445331Samw 1455331Samwstruct netdfs_info100 { 1465331Samw LPTSTR comment; 1475331Samw}; 148*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info100 netdfs_info100_t; 1495331Samw 1505331Samwstruct netdfs_info101 { 1515331Samw DWORD state; 1525331Samw}; 153*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info101 netdfs_info101_t; 1545331Samw 1555331Samw 1565331Samwstruct netdfs_info102 { 1575331Samw DWORD timeout; 1585331Samw}; 159*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info102 netdfs_info102_t; 1605331Samw 1615331Samw 1625331Samwstruct netdfs_info103 { 163*11963SAfshin.Ardakani@Sun.COM DWORD property_flag_mask; 1645331Samw DWORD property_flags; 1655331Samw}; 166*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info103 netdfs_info103_t; 1675331Samw 1685331Samw 1695331Samwstruct netdfs_info104 { 1705331Samw DWORD priority_class; 171*11963SAfshin.Ardakani@Sun.COM WORD priority_rank; 172*11963SAfshin.Ardakani@Sun.COM WORD reserved; 1735331Samw}; 174*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info104 netdfs_info104_t; 1755331Samw 1765331Samw 1775331Samwstruct netdfs_info105 { 1785331Samw LPTSTR comment; 179*11963SAfshin.Ardakani@Sun.COM DWORD state; 1805331Samw DWORD timeout; 1815331Samw DWORD property_flag_mask; 1825331Samw DWORD property_flags; 1835331Samw}; 184*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info105 netdfs_info105_t; 1855331Samw 1865331Samw 1875331Samwstruct netdfs_info106 { 1885331Samw DWORD storage_state; 1895331Samw DWORD priority_class; 1905331Samw DWORD priority_rank; 1915331Samw}; 1925331Samw 1935331Samw 1945331Samwstruct netdfs_info200 { 1955331Samw LPTSTR entry_path; 1965331Samw}; 1975331Samw 1985331Samw 1995331Samwstruct netdfs_info300 { 2005331Samw DWORD flavor; 201*11963SAfshin.Ardakani@Sun.COM LPTSTR dfsname; 2025331Samw}; 203*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info300 netdfs_info300_t; 2045331Samw 2055331Samw 2065331Samwunion netdfs_info_u { 2075331Samw CASE(1) struct netdfs_info1 *info1; 2085331Samw CASE(2) struct netdfs_info2 *info2; 2095331Samw CASE(3) struct netdfs_info3 *info3; 2105331Samw CASE(4) struct netdfs_info4 *info4; 211*11963SAfshin.Ardakani@Sun.COM CASE(5) struct netdfs_info5 *info5; 2125331Samw CASE(6) struct netdfs_info6 *info6; 2135331Samw CASE(100) struct netdfs_info100 *info100; 2145331Samw CASE(101) struct netdfs_info101 *info101; 2155331Samw CASE(102) struct netdfs_info102 *info102; 2165331Samw CASE(103) struct netdfs_info103 *info103; 2175331Samw CASE(104) struct netdfs_info104 *info104; 2185331Samw CASE(105) struct netdfs_info105 *info105; 2195331Samw CASE(106) struct netdfs_info106 *info106; 2205331Samw DEFAULT char *nullptr; 2215331Samw}; 2225331Samw 2235331Samw 2245331Samwstruct netdfs_info { 2255331Samw DWORD level; 2265331Samw SWITCH(level) 2275331Samw union netdfs_info_u iu; 2285331Samw}; 229*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_info netdfs_info_t; 2305331Samw 2315331Samw 2325331Samwstruct netdfs_array1 { 2335331Samw DWORD count; 2345331Samw SIZE_IS(count) 2355331Samw struct netdfs_info1 *info1; 2365331Samw}; 2375331Samw 2385331Samwstruct netdfs_array2 { 2395331Samw DWORD count; 2405331Samw SIZE_IS(count) 2415331Samw struct netdfs_info2 *info2; 2425331Samw}; 2435331Samw 2445331Samwstruct netdfs_array3 { 2455331Samw DWORD count; 2465331Samw SIZE_IS(count) 2475331Samw struct netdfs_info3 *info3; 2485331Samw}; 2495331Samw 2505331Samwstruct netdfs_array4 { 2515331Samw DWORD count; 2525331Samw SIZE_IS(count) 2535331Samw struct netdfs_info4 *info4; 2545331Samw}; 2555331Samw 256*11963SAfshin.Ardakani@Sun.COMstruct netdfs_array5 { 257*11963SAfshin.Ardakani@Sun.COM DWORD count; 258*11963SAfshin.Ardakani@Sun.COM SIZE_IS(count) 259*11963SAfshin.Ardakani@Sun.COM struct netdfs_info5 *info5; 260*11963SAfshin.Ardakani@Sun.COM}; 261*11963SAfshin.Ardakani@Sun.COM 2625331Samwstruct netdfs_array6 { 2635331Samw DWORD count; 2645331Samw SIZE_IS(count) 2655331Samw struct netdfs_info6 *info6; 2665331Samw}; 2675331Samw 2685331Samwstruct netdfs_array200 { 2695331Samw DWORD count; 2705331Samw SIZE_IS(count) 2715331Samw struct netdfs_info200 *info200; 2725331Samw}; 2735331Samw 2745331Samwstruct netdfs_array300 { 2755331Samw DWORD count; 2765331Samw SIZE_IS(count) 2775331Samw struct netdfs_info300 *info300; 2785331Samw}; 2795331Samw 2805331Samwunion netdfs_enum_info_u { 2815331Samw CASE(1) struct netdfs_array1 *info1; 2825331Samw CASE(2) struct netdfs_array2 *info2; 2835331Samw CASE(3) struct netdfs_array3 *info3; 2845331Samw CASE(4) struct netdfs_array4 *info4; 285*11963SAfshin.Ardakani@Sun.COM CASE(5) struct netdfs_array5 *info5; 2865331Samw CASE(6) struct netdfs_array6 *info6; 2875331Samw CASE(200) struct netdfs_array200 *info200; 2885331Samw CASE(300) struct netdfs_array300 *info300; 2895331Samw DEFAULT char *nullptr; 2905331Samw}; 2915331Samw 2925331Samw 2935331Samwstruct netdfs_enum_info { 2945331Samw DWORD level; 295*11963SAfshin.Ardakani@Sun.COM DWORD switch_value; 296*11963SAfshin.Ardakani@Sun.COM SWITCH(switch_value) 2975331Samw union netdfs_enum_info_u iu; 2985331Samw}; 2995331Samw 3005331Samw 3015331Samw/* 3025331Samw *********************************************************************** 3035331Samw * Return server version id 3045331Samw *********************************************************************** 3055331Samw */ 3065331SamwOPERATION(NETDFS_OPNUM_GETVER) 3075331Samwstruct netdfs_getver { 3085331Samw OUT DWORD version; 3095331Samw}; 3105331Samw 3115331Samw 3125331Samw/* 3135331Samw *********************************************************************** 3145331Samw * Add a new volume or additional storage for an existing volume at 3155331Samw * dfs_path. 3165331Samw *********************************************************************** 3175331Samw */ 3185331SamwOPERATION(NETDFS_OPNUM_ADD) 3195331Samwstruct netdfs_add { 3205331Samw IN REFERENCE LPTSTR dfs_path; 3215331Samw IN REFERENCE LPTSTR server; 3225331Samw IN LPTSTR share; 3235331Samw IN LPTSTR comment; 3245331Samw IN DWORD flags; 3255331Samw OUT DWORD status; 3265331Samw}; 327*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_add netdfs_add_t; 3285331Samw 3295331Samw 3305331Samw/* 3315331Samw *********************************************************************** 3325331Samw * Remove a volume or additional storage for volume from the DFS at 3335331Samw * dfs_path. When applied to the last storage in a volume, removes 3345331Samw * the volume from the DFS. 3355331Samw *********************************************************************** 3365331Samw */ 3375331SamwOPERATION(NETDFS_OPNUM_REMOVE) 3385331Samwstruct netdfs_remove { 3395331Samw IN REFERENCE LPTSTR dfs_path; 3405331Samw IN LPTSTR server; 3415331Samw IN LPTSTR share; 3425331Samw OUT DWORD status; 3435331Samw}; 3445331Samw 3455331Samw 3465331Samw/* 3475331Samw *********************************************************************** 3485331Samw * Set information about the volume or storage. If the server and share 3495331Samw * are specified, the information set is specific to that server and 3505331Samw * share. Otherwise the information is specific to the volume as a whole. 3515331Samw * 3525331Samw * Valid levels are 100-102. 3535331Samw *********************************************************************** 3545331Samw */ 3555331SamwOPERATION(NETDFS_OPNUM_SETINFO) 3565331Samwstruct netdfs_setinfo { 3575331Samw IN REFERENCE LPTSTR dfs_path; 3585331Samw IN LPTSTR server; 3595331Samw IN LPTSTR share; 3605331Samw IN DWORD level; 3615331Samw IN struct netdfs_info info; 3625331Samw OUT DWORD status; 3635331Samw}; 364*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_setinfo netdfs_setinfo_t; 3655331Samw 3665331Samw 3675331Samw/* 3685331Samw *********************************************************************** 3695331Samw * Get information about the volume or storage. If the server and share 3705331Samw * are specified, the information returned is specific to that server 3715331Samw * and share. Otherwise the information is specific to the volume as a 3725331Samw * whole. 3735331Samw * 3745331Samw * Valid levels are 1-4, 100-102. 3755331Samw *********************************************************************** 3765331Samw */ 3775331SamwOPERATION(NETDFS_OPNUM_GETINFO) 3785331Samwstruct netdfs_getinfo { 3795331Samw IN REFERENCE LPTSTR dfs_path; 3805331Samw IN LPTSTR server; 3815331Samw IN LPTSTR share; 3825331Samw IN DWORD level; 3835331Samw OUT struct netdfs_info info; 3845331Samw OUT DWORD status; 3855331Samw}; 386*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_getinfo netdfs_getinfo_t; 3875331Samw 3885331Samw 3895331Samw/* 3905331Samw *********************************************************************** 3915331Samw * Get information about all of the volumes in the DFS. dfs_path is 3925331Samw * the "server" part of the UNC name used to refer to this particular 3935331Samw * DFS. 3945331Samw * 3955331Samw * Valid levels are 1-3. 3965331Samw *********************************************************************** 3975331Samw */ 3985331SamwOPERATION(NETDFS_OPNUM_ENUM) 3995331Samwstruct netdfs_enum { 4005331Samw IN DWORD level; 4015331Samw IN DWORD pref_max_len; 4025331Samw INOUT struct netdfs_enum_info *info; 4035331Samw INOUT DWORD *resume_handle; 4045331Samw OUT DWORD status; 4055331Samw}; 406*11963SAfshin.Ardakani@Sun.COMtypedef struct netdfs_enum netdfs_enum_t; 4075331Samw 4085331Samw 4095331Samw/* 4105331Samw *********************************************************************** 4115331Samw * Rename the current Win32 path in a DFS to a new Win32 path in the 4125331Samw * same DFS. 4135331Samw *********************************************************************** 4145331Samw */ 4155331SamwOPERATION(NETDFS_OPNUM_RENAME) 4165331Samwstruct netdfs_rename { 4175331Samw IN REFERENCE LPTSTR dfs_path; 4185331Samw IN REFERENCE LPTSTR new_path; 4195331Samw OUT DWORD status; 4205331Samw}; 4215331Samw 4225331Samw 4235331Samw/* 4245331Samw *********************************************************************** 4255331Samw * Move a DFS volume and all subordinate volumes from one place in the 4265331Samw * DFS to another place in the DFS. 4275331Samw *********************************************************************** 4285331Samw */ 4295331SamwOPERATION(NETDFS_OPNUM_MOVE) 4305331Samwstruct netdfs_move { 4315331Samw IN REFERENCE LPTSTR dfs_path; 4325331Samw IN REFERENCE LPTSTR new_path; 433*11963SAfshin.Ardakani@Sun.COM IN DWORD flags; 4345331Samw OUT DWORD status; 4355331Samw}; 4365331Samw 4375331Samw 4385331Samw/* 4395331Samw *********************************************************************** 4405331Samw * Add a DFS root share. 4415331Samw *********************************************************************** 4425331Samw */ 4435331SamwOPERATION(NETDFS_OPNUM_ADDSTDROOT) 4445331Samwstruct netdfs_addstdroot { 4455331Samw IN REFERENCE LPTSTR server; 4465331Samw IN REFERENCE LPTSTR share; 4475331Samw IN REFERENCE LPTSTR comment; 4485331Samw IN DWORD flags; 4495331Samw OUT DWORD status; 4505331Samw}; 4515331Samw 4525331Samw/* 4535331Samw *********************************************************************** 4545331Samw * Remove a DFS root share. 4555331Samw *********************************************************************** 4565331Samw */ 4575331SamwOPERATION(NETDFS_OPNUM_REMSTDROOT) 4585331Samwstruct netdfs_remstdroot { 4595331Samw IN REFERENCE LPTSTR server; 4605331Samw IN REFERENCE LPTSTR share; 4615331Samw IN DWORD flags; 4625331Samw OUT DWORD status; 4635331Samw}; 4645331Samw 4655331Samw 4665331Samw/* 4675331Samw *********************************************************************** 4685331Samw * Get information about all of the volumes in the DFS. dfs_path is 4695331Samw * the "server" part of the UNC name used to refer to this particular 4705331Samw * DFS. 4715331Samw * 4725331Samw * Valid levels are 1-3. 4735331Samw *********************************************************************** 4745331Samw */ 4755331SamwOPERATION(NETDFS_OPNUM_ENUMEX) 4765331Samwstruct netdfs_enumex { 4775331Samw IN REFERENCE LPTSTR dfs_path; 4785331Samw IN DWORD level; 4795331Samw IN DWORD pref_max_len; 4805331Samw INOUT struct netdfs_enum_info *info; 4815331Samw INOUT DWORD *resume_handle; 4825331Samw OUT DWORD status; 4835331Samw}; 4845331Samw 4855331Samw 4865331Samw/* 4875331Samw *********************************************************************** 4885331Samw * The NETDFS interface definiton. 4895331Samw *********************************************************************** 4905331Samw */ 4915331SamwINTERFACE(0) 4925331Samwunion netdfs_interface { 4935331Samw CASE(NETDFS_OPNUM_GETVER) 4945331Samw struct netdfs_getver netdfs_getver; 4955331Samw CASE(NETDFS_OPNUM_ADD) 4965331Samw struct netdfs_add netdfs_add; 4975331Samw CASE(NETDFS_OPNUM_REMOVE) 4985331Samw struct netdfs_remove netdfs_remove; 4995331Samw CASE(NETDFS_OPNUM_SETINFO) 5005331Samw struct netdfs_setinfo netdfs_setinfo; 5015331Samw CASE(NETDFS_OPNUM_GETINFO) 5025331Samw struct netdfs_getinfo netdfs_getinfo; 5035331Samw CASE(NETDFS_OPNUM_ENUM) 5045331Samw struct netdfs_enum netdfs_enum; 5055331Samw CASE(NETDFS_OPNUM_MOVE) 5065331Samw struct netdfs_move netdfs_move; 5075331Samw CASE(NETDFS_OPNUM_RENAME) 5085331Samw struct netdfs_rename netdfs_rename; 5095331Samw CASE(NETDFS_OPNUM_ADDSTDROOT) 5105331Samw struct netdfs_addstdroot netdfs_addstdroot; 5115331Samw CASE(NETDFS_OPNUM_REMSTDROOT) 5125331Samw struct netdfs_remstdroot netdfs_remstdroot; 5135331Samw CASE(NETDFS_OPNUM_ENUMEX) 5145331Samw struct netdfs_enumex netdfs_enumex; 5155331Samw}; 5165331Samwtypedef union netdfs_interface netdfs_interface_t; 5175331SamwEXTERNTYPEINFO(netdfs_interface) 5185331Samw 5195331Samw 5205331Samw#endif /* _NETDFS_NDL_ */ 521