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/* 227052Samw * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 235331Samw * Use is subject to license terms. 245331Samw */ 255331Samw 265331Samw#ifndef _MLSVC_NETR_NDL_ 275331Samw#define _MLSVC_NETR_NDL_ 285331Samw 295331Samw/* 305331Samw *********************************************************************** 315331Samw * 325331Samw * NetLogon RPC (NETR) interface definition. 335331Samw * 345331Samw *********************************************************************** 355331Samw */ 365331Samw 375331Samw#include "ndrtypes.ndl" 385331Samw 395331Samw 407052Samw#define NETR_OPNUM_UasLogon 0x00 417052Samw#define NETR_OPNUM_UasLogoff 0x01 425331Samw#define NETR_OPNUM_SamLogon 0x02 435331Samw#define NETR_OPNUM_SamLogoff 0x03 445331Samw#define NETR_OPNUM_ServerReqChallenge 0x04 457052Samw#define NETR_OPNUM_ServerAuthenticate 0x05 465331Samw#define NETR_OPNUM_ServerPasswordSet 0x06 477052Samw#define NETR_OPNUM_DatabaseDeltas 0x07 487052Samw#define NETR_OPNUM_DatabaseSync 0x08 497052Samw#define NETR_OPNUM_AccountDeltas 0x09 507052Samw#define NETR_OPNUM_AccountSync 0x0a 517052Samw#define NETR_OPNUM_GetDCName 0x0b 527052Samw#define NETR_OPNUM_LogonControl 0x0c 537052Samw#define NETR_OPNUM_GetAnyDCName 0x0d 545331Samw#define NETR_OPNUM_LogonControl2 0x0E 555331Samw#define NETR_OPNUM_ServerAuthenticate2 0x0F 567052Samw#define NETR_OPNUM_DatabaseSync2 0x10 577052Samw#define NETR_OPNUM_DatabaseRedo 0x11 587052Samw#define NETR_OPNUM_LogonControl2Ex 0x12 595331Samw#define NETR_OPNUM_TrustDomainList 0x13 605331Samw 615331Samw 625331Samwstruct netr_sid { 635331Samw BYTE Revision; 645331Samw BYTE SubAuthCount; 655331Samw BYTE Authority[6]; 665331Samw SIZE_IS(SubAuthCount) 675331Samw DWORD SubAuthority[ANY_SIZE_ARRAY]; 685331Samw}; 695331Samw 705331Samw 715331Samwstruct netr_string { 725331Samw WORD length; 735331Samw WORD allosize; 745331Samw LPTSTR str; 755331Samw}; 765331Samwtypedef struct netr_string netr_string_t; 775331Samw 785331Samw 795331Samw/* 805331Samw * Alternative varying/conformant string definition - for 815331Samw * non-null terminated strings. This definition must match 82*8334SJose.Borrego@Sun.COM * ndr_vcbuf_t. 835331Samw */ 847619SJose.Borrego@Sun.COMstruct netr_vcs { 855331Samw /* 865331Samw * size_is (actually a copy of length_is) will 875331Samw * be inserted here by the marshalling library. 885331Samw */ 895331Samw DWORD vc_first_is; 905331Samw DWORD vc_length_is; 915331Samw SIZE_IS(vc_length_is) 925331Samw WORD buffer[ANY_SIZE_ARRAY]; 935331Samw}; 945331Samw 957619SJose.Borrego@Sun.COMstruct netr_vcstr { 965331Samw WORD wclen; 975331Samw WORD wcsize; 987619SJose.Borrego@Sun.COM struct netr_vcs *vcs; 997619SJose.Borrego@Sun.COM}; 1007619SJose.Borrego@Sun.COMtypedef struct netr_vcstr netr_vcstr_t; 1017619SJose.Borrego@Sun.COM 1027619SJose.Borrego@Sun.COMstruct netr_vcb { 1037619SJose.Borrego@Sun.COM /* 1047619SJose.Borrego@Sun.COM * size_is (actually a copy of length_is) will 1057619SJose.Borrego@Sun.COM * be inserted here by the marshalling library. 1067619SJose.Borrego@Sun.COM */ 1077619SJose.Borrego@Sun.COM DWORD vc_first_is; 1087619SJose.Borrego@Sun.COM DWORD vc_length_is; 1097619SJose.Borrego@Sun.COM SIZE_IS(vc_length_is) 1107619SJose.Borrego@Sun.COM BYTE buffer[ANY_SIZE_ARRAY]; 1117619SJose.Borrego@Sun.COM}; 1127619SJose.Borrego@Sun.COM 1137619SJose.Borrego@Sun.COMstruct netr_vcbuf { 1147619SJose.Borrego@Sun.COM WORD len; 1157619SJose.Borrego@Sun.COM WORD size; 1165331Samw struct netr_vcb *vcb; 1175331Samw}; 1185331Samwtypedef struct netr_vcbuf netr_vcbuf_t; 1195331Samw 1205331Samwstruct netr_credential { 1215331Samw BYTE data[8]; 1225331Samw}; 1235331Samw 1245331Samwstruct netr_authenticator { 1255331Samw struct netr_credential credential; 1265331Samw DWORD timestamp; 1275331Samw}; 1285331Samwtypedef struct netr_authenticator netr_auth_t; 1295331Samw 1305331Samw 1315331Samwstruct OLD_LARGE_INTEGER { 1325331Samw DWORD LowPart; 1335331Samw DWORD HighPart; 1345331Samw}; 1355331Samwtypedef struct OLD_LARGE_INTEGER netr_int64_t; 1365331Samw 1375331Samw 1385331Samwstruct OWF_PASSWORD { 1395331Samw BYTE data[16]; 1405331Samw}; 1415331Samwtypedef struct OWF_PASSWORD netr_owf_password_t; 1425331Samw 1435331Samw 1445331Samwstruct CYPHER_BLOCK { 1455331Samw BYTE data[8]; 1465331Samw}; 1475331Samw 1485331Samw 1495331Samwstruct USER_SESSION_KEY { 1505331Samw struct CYPHER_BLOCK data[2]; 1515331Samw}; 1525331Samw 1535331Samw 1545331Samw 1555331Samw 1565331Samw/* 1575331Samw *********************************************************************** 1585331Samw * ServerReqChallenge 1595331Samw *********************************************************************** 1605331Samw */ 1615331SamwALIGN(2) 1625331SamwOPERATION(NETR_OPNUM_ServerReqChallenge) 1635331Samwstruct netr_ServerReqChallenge { 1645331Samw IN LPTSTR servername; 1655331Samw IN REFERENCE LPTSTR hostname; 1665331Samw IN struct netr_credential client_challenge; 1675331Samw OUT struct netr_credential server_challenge; 1685331Samw OUT DWORD status; 1695331Samw}; 1705331Samw 1715331Samw 1725331Samw/* 1735331Samw *********************************************************************** 1745331Samw * ServerAuthenticate2 1755331Samw *********************************************************************** 1765331Samw */ 1775331SamwALIGN(2) 1785331SamwOPERATION(NETR_OPNUM_ServerAuthenticate2) 1795331Samwstruct netr_ServerAuthenticate2 { 1805331Samw IN LPTSTR servername; 1815331Samw IN REFERENCE LPTSTR account_name; 1825331Samw IN WORD account_type; 1835331Samw IN REFERENCE LPTSTR hostname; 1845331Samw IN struct netr_credential client_credential; 1855331Samw OUT struct netr_credential server_credential; 1865331Samw INOUT DWORD negotiate_flags; 1875331Samw OUT DWORD status; 1885331Samw}; 1895331Samw 1905331Samw 1915331Samw/* 1925331Samw *********************************************************************** 1935331Samw * ServerPasswordSet 1945331Samw *********************************************************************** 1955331Samw */ 1965331SamwALIGN(2) 1975331SamwOPERATION(NETR_OPNUM_ServerPasswordSet) 1985331Samwstruct netr_PasswordSet { 1995331Samw IN LPTSTR servername; 2005331Samw IN REFERENCE LPTSTR account_name; 2015331Samw IN WORD account_type; 2025331Samw IN REFERENCE LPTSTR hostname; 2035331Samw INOUT struct netr_authenticator auth; 2045331Samw IN netr_owf_password_t uas_new_password; 2055331Samw OUT DWORD status; 2065331Samw}; 2075331Samw 2085331Samw 2095331Samw/* 2105331Samw *********************************************************************** 2115331Samw * SamLogon 2125331Samw *********************************************************************** 2135331Samw */ 2145331Samw 2155331Samw/* 2165331Samw * The challenge-response data should always be 24 bytes. 2175331Samw */ 2185331Samw#define NETR_CR_PASSWORD_SIZE 24 2195331Samw 2205331Samw 2215331Samwstruct lm_challenge { 2225331Samw BYTE data[8]; 2235331Samw}; 2245331Samwtypedef struct lm_challenge lm_challenge_t; 2255331Samw 2265331Samw/* 2275331Samw * Input data 2285331Samw */ 2295331Samwstruct netr_logon_identity_info { 2307619SJose.Borrego@Sun.COM netr_vcstr_t domain_name; 2315331Samw DWORD parameter_control; 2325331Samw struct OLD_LARGE_INTEGER logon_id; 2337619SJose.Borrego@Sun.COM netr_vcstr_t username; 2347619SJose.Borrego@Sun.COM netr_vcstr_t workstation; 2355331Samw}; 2365331Samwtypedef struct netr_logon_identity_info netr_logon_id_t; 2375331Samw 2385331Samw 2395331Samw/* 2405331Samw * Level 1: interactive logon 2415331Samw */ 2425331Samwstruct netr_logon_info1 { 2435331Samw netr_logon_id_t identity; 2445331Samw netr_owf_password_t lm_owf_password; 2455331Samw netr_owf_password_t nt_owf_password; 2465331Samw}; 2475331Samw 2485331Samw 2495331Samw/* 2505331Samw * Level 2: network logon. 2515331Samw */ 2525331Samwstruct netr_logon_info2 { 2535331Samw netr_logon_id_t identity; 2545331Samw lm_challenge_t lm_challenge; 2557619SJose.Borrego@Sun.COM netr_vcbuf_t nt_response; 2567619SJose.Borrego@Sun.COM netr_vcbuf_t lm_response; 2575331Samw}; 2585331Samw 2595331Samw 2605331Samwunion netr_logon_info_u { 2615331Samw UNION_INFO_PTR(1,netr_logon_info); 2625331Samw UNION_INFO_PTR(2,netr_logon_info); 2635331Samw DEFAULT DWORD nothing; 2645331Samw}; 2655331Samw 2665331Samw 2675331Samwstruct netr_login_info { 2685331Samw WORD logon_level; 2695331Samw WORD switch_value; 2705331Samw SWITCH(switch_value) 2715331Samw union netr_logon_info_u ru; 2725331Samw}; 2735331Samw 2745331Samw 2755331Samw/* 2765331Samw * Output data 2775331Samw */ 2785331Samwstruct netr_group_membership { 2795331Samw DWORD rid; 2805331Samw DWORD attributes; 2815331Samw}; 2825331Samw 2835331Samw 2845331Samwstruct netr_sid_and_attributes { 2855331Samw struct netr_sid *sid; 2865331Samw DWORD attributes; 2875331Samw}; 2885331Samw 2895331Samw 2905331Samwstruct netr_validation_info3 { 2915331Samw struct OLD_LARGE_INTEGER LogonTime; 2925331Samw struct OLD_LARGE_INTEGER LogoffTime; 2935331Samw struct OLD_LARGE_INTEGER KickOffTime; 2945331Samw struct OLD_LARGE_INTEGER PasswordLastSet; 2955331Samw struct OLD_LARGE_INTEGER PasswordCanChange; 2965331Samw struct OLD_LARGE_INTEGER PasswordMustChange; 2975331Samw netr_string_t EffectiveName; 2985331Samw netr_string_t FullName; 2995331Samw netr_string_t LogonScript; 3005331Samw netr_string_t ProfilePath; 3015331Samw netr_string_t HomeDirectory; 3025331Samw netr_string_t HomeDirectoryDrive; 3035331Samw WORD LogonCount; 3045331Samw WORD BadPasswordCount; 3055331Samw DWORD UserId; 3065331Samw DWORD PrimaryGroupId; 3075331Samw DWORD GroupCount; 3085331Samw SIZE_IS(GroupCount) 3095331Samw struct netr_group_membership *GroupIds; 3105331Samw DWORD UserFlags; 3115331Samw struct USER_SESSION_KEY UserSessionKey; 3125331Samw netr_string_t LogonServer; 3135331Samw netr_string_t LogonDomainName; 3145331Samw struct netr_sid *LogonDomainId; 3155331Samw DWORD ExpansionRoom[10]; 3165331Samw DWORD SidCount; 3175331Samw SIZE_IS(SidCount) 3185331Samw struct netr_sid_and_attributes *ExtraSids; 3195331Samw}; 3205331Samw 3215331Samw 3225331Samwunion netr_validation_u { 3235331Samw CASE(3) struct netr_validation_info3 *info3; 3245331Samw DEFAULT DWORD nothing; 3255331Samw}; 3265331Samw 3275331Samw 3285331Samw/* 3295331Samw * This structure needs to be declared, even though it can't be used 3305331Samw * in netr_SamLogon, in order to get the appropriate size to calculate 3315331Samw * the correct fixup offsets. If ndrgen did the right thing, 3325331Samw * netr_validation_info would be one of the out parameters. However, 3335331Samw * if we do it that way, the switch_value isn't known early enough to 3345331Samw * do the fixup calculation. So it all has to go in netr_SamLogon. 3355331Samw */ 3365331Samwstruct netr_validation_info { 3375331Samw WORD validation_level; 3385331Samw SWITCH(validation_level) 3395331Samw union netr_validation_u ru; 3405331Samw}; 3415331Samw 3425331Samw 3435331Samw/* 3445331Samw * WARNING 3455331Samw * 3465331Samw * Validation_level is really a WORD and authoritative is really a 3475331Samw * BYTE. They are declared as DWORD here due to the way things are 3485331Samw * unmarshalled. NT does not clear out the unused bytes in the 3495331Samw * DWORD so they must be cast to get the correct value. 3505331Samw */ 3515331SamwOPERATION(NETR_OPNUM_SamLogon) 3525331Samwstruct netr_SamLogon { 3535331Samw IN LPTSTR servername; 3545331Samw IN LPTSTR hostname; 3555331Samw IN struct netr_authenticator *auth; 3565331Samw INOUT struct netr_authenticator *ret_auth; 3575331Samw IN struct netr_login_info logon_info; 3585331Samw INOUT WORD validation_level; 3595331Samw SWITCH(validation_level) 3605331Samw OUT union netr_validation_u ru; 3615331Samw OUT DWORD authoritative; 3625331Samw OUT DWORD status; 3635331Samw}; 3645331Samw 3655331Samw 3665331Samw/* 3675331Samw *********************************************************************** 3685331Samw * SamLogoff 3695331Samw *********************************************************************** 3705331Samw */ 3715331SamwOPERATION(NETR_OPNUM_SamLogoff) 3725331Samwstruct netr_SamLogoff { 3735331Samw IN LPTSTR servername; 3745331Samw IN REFERENCE LPTSTR hostname; 3755331Samw IN struct netr_authenticator auth; 3765331Samw INOUT struct netr_authenticator ret_auth; 3775331Samw IN DWORD logon_level; 3785331Samw SWITCH(logon_level) 3795331Samw IN union netr_logon_info_u ru; 3805331Samw OUT DWORD status; 3815331Samw}; 3825331Samw 3835331Samw 3845331Samw/* 3855331Samw *********************************************************************** 3865331Samw * The NETR interface definition. 3875331Samw *********************************************************************** 3885331Samw */ 3895331SamwINTERFACE(0) 3905331Samwunion netr_interface { 3915331Samw CASE(NETR_OPNUM_ServerReqChallenge) 3925331Samw struct netr_ServerReqChallenge ServerReqChallenge; 3935331Samw CASE(NETR_OPNUM_ServerAuthenticate2) 3945331Samw struct netr_ServerAuthenticate2 ServerAuthenticate2; 3955331Samw CASE(NETR_OPNUM_SamLogon) 3965331Samw struct netr_SamLogon SamLogon; 3975331Samw CASE(NETR_OPNUM_SamLogoff) 3985331Samw struct netr_SamLogoff SamLogoff; 3995331Samw CASE(NETR_OPNUM_ServerPasswordSet) 4005331Samw struct netr_PasswordSet PasswordSet; 4015331Samw}; 4025331Samwtypedef union netr_interface netr_interface_t; 4035331SamwEXTERNTYPEINFO(netr_interface) 4045331Samw 4055331Samw#endif /* _MLSVC_NETR_NDL_ */ 406