da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER START
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The contents of this file are subject to the terms of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Common Development and Distribution License (the "License").
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You may not use this file except in compliance with the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * or http://www.opensolaris.org/os/licensing.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * See the License for the specific language governing permissions
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and limitations under the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * When distributing Covered Code, include this CDDL HEADER in each
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If applicable, add the following below this CDDL HEADER, with the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * fields enclosed by brackets "[]" replaced with your own identifying
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * information: Portions Copyright [yyyy] [name of copyright owner]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER END
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
3db3f65c6274eb042354801a308c8e9bc4994553amw * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Use is subject to license terms.
12b65585e720714b31036daaa2b30eb76014048eGordon Ross *
12b65585e720714b31036daaa2b30eb76014048eGordon Ross * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#ifndef _MLSVC_NETR_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define _MLSVC_NETR_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * NetLogon RPC (NETR) interface definition.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include "ndrtypes.ndl"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_UasLogon 0x00
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_UasLogoff 0x01
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_SamLogon 0x02
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_SamLogoff 0x03
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_ServerReqChallenge 0x04
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_ServerAuthenticate 0x05
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_ServerPasswordSet 0x06
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_DatabaseDeltas 0x07
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_DatabaseSync 0x08
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_AccountDeltas 0x09
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_AccountSync 0x0a
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_GetDCName 0x0b
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_LogonControl 0x0c
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_GetAnyDCName 0x0d
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_LogonControl2 0x0E
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_ServerAuthenticate2 0x0F
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_DatabaseSync2 0x10
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_DatabaseRedo 0x11
3db3f65c6274eb042354801a308c8e9bc4994553amw#define NETR_OPNUM_LogonControl2Ex 0x12
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_OPNUM_TrustDomainList 0x13
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_DsrGetDcName 0x14
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonGetCapabilities 0x15
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonSetServiceBits 0x16
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonGetTrustRid 0x17
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonComputeServerDigest 0x18
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonComputeClientDigest 0x19
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_ServerAuthenticate3 0x1A
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_DsrGetDcNameEx 0x1B
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_DsrGetSiteName 0x1C
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_LogonGetDomainInfo 0x1D
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_OPNUM_ServerPasswordSet2 0x1E
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
12b65585e720714b31036daaa2b30eb76014048eGordon Ross/*
12b65585e720714b31036daaa2b30eb76014048eGordon Ross * This is not a real NETR OPNUM. It's used to unpack the
12b65585e720714b31036daaa2b30eb76014048eGordon Ross * struct krb5_validation_info found in the Kerberos PAC.
12b65585e720714b31036daaa2b30eb76014048eGordon Ross */
12b65585e720714b31036daaa2b30eb76014048eGordon Ross#define NETR_OPNUM_decode_krb5_pac 1000
12b65585e720714b31036daaa2b30eb76014048eGordon Ross
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_sid {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE SubAuthCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Authority[6];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(SubAuthCount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD SubAuthority[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_string {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD allosize;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw LPTSTR str;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct netr_string netr_string_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Alternative varying/conformant string definition - for
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * non-null terminated strings. This definition must match
8d7e41661dc4633488e93b13363137523ce59977jose borrego * ndr_vcbuf_t.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
2c1b14e51525da2c09064641416fc4aed457c72fjose borregostruct netr_vcs {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * size_is (actually a copy of length_is) will
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * be inserted here by the marshalling library.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD vc_first_is;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD vc_length_is;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(vc_length_is)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD buffer[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
2c1b14e51525da2c09064641416fc4aed457c72fjose borregostruct netr_vcstr {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD wclen;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD wcsize;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego struct netr_vcs *vcs;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego};
2c1b14e51525da2c09064641416fc4aed457c72fjose borregotypedef struct netr_vcstr netr_vcstr_t;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego
2c1b14e51525da2c09064641416fc4aed457c72fjose borregostruct netr_vcb {
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego /*
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego * size_is (actually a copy of length_is) will
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego * be inserted here by the marshalling library.
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego */
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego DWORD vc_first_is;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego DWORD vc_length_is;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego SIZE_IS(vc_length_is)
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego BYTE buffer[ANY_SIZE_ARRAY];
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego};
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego
2c1b14e51525da2c09064641416fc4aed457c72fjose borregostruct netr_vcbuf {
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego WORD len;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego WORD size;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_vcb *vcb;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct netr_vcbuf netr_vcbuf_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_credential {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE data[8];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_authenticator {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_credential credential;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD timestamp;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct netr_authenticator netr_auth_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct OLD_LARGE_INTEGER {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD LowPart;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD HighPart;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct OLD_LARGE_INTEGER netr_int64_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct CYPHER_BLOCK {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE data[8];
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct OWF_PASSWORD {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE data[16];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct OWF_PASSWORD netr_owf_password_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * NL_TRUST_PASSWORD
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * See also: samr_user_password
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define NETR_TRUST_PWLEN 256
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct netr_trust_password {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD Buffer[NETR_TRUST_PWLEN];
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD Length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rosstypedef struct netr_trust_password netr_trust_password_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct USER_SESSION_KEY {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct CYPHER_BLOCK data[2];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * ServerReqChallenge
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwALIGN(2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(NETR_OPNUM_ServerReqChallenge)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_ServerReqChallenge {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR hostname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct netr_credential client_challenge;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct netr_credential server_challenge;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * ServerAuthenticate2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwALIGN(2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(NETR_OPNUM_ServerAuthenticate2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_ServerAuthenticate2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR account_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD account_type;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR hostname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct netr_credential client_credential;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct netr_credential server_credential;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD negotiate_flags;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * ServerPasswordSet
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwALIGN(2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(NETR_OPNUM_ServerPasswordSet)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_PasswordSet {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR account_name;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN WORD sec_chan_type;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN REFERENCE LPTSTR hostname;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross INOUT struct netr_authenticator auth;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN netr_owf_password_t owf_password;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross OUT DWORD status;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon RossOPERATION(NETR_OPNUM_ServerPasswordSet2)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct netr_PasswordSet2 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN LPTSTR servername;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN REFERENCE LPTSTR account_name;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN WORD sec_chan_type;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR hostname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct netr_authenticator auth;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN netr_trust_password_t trust_password;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SamLogon
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The challenge-response data should always be 24 bytes.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define NETR_CR_PASSWORD_SIZE 24
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lm_challenge {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE data[8];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct lm_challenge lm_challenge_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Input data
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_logon_identity_info {
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego netr_vcstr_t domain_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD parameter_control;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER logon_id;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego netr_vcstr_t username;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego netr_vcstr_t workstation;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct netr_logon_identity_info netr_logon_id_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Level 1: interactive logon
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_logon_info1 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_logon_id_t identity;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_owf_password_t lm_owf_password;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_owf_password_t nt_owf_password;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Level 2: network logon.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_logon_info2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_logon_id_t identity;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw lm_challenge_t lm_challenge;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego netr_vcbuf_t nt_response;
2c1b14e51525da2c09064641416fc4aed457c72fjose borrego netr_vcbuf_t lm_response;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion netr_logon_info_u {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_PTR(1,netr_logon_info);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_PTR(2,netr_logon_info);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT DWORD nothing;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_login_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD logon_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union netr_logon_info_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Output data
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_group_membership {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_sid_and_attributes {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_validation_info3 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER LogonTime;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER LogoffTime;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER KickOffTime;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER PasswordLastSet;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER PasswordCanChange;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct OLD_LARGE_INTEGER PasswordMustChange;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t EffectiveName;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t FullName;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t LogonScript;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t ProfilePath;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t HomeDirectory;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t HomeDirectoryDrive;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD LogonCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD BadPasswordCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD UserId;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD PrimaryGroupId;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD GroupCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(GroupCount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_group_membership *GroupIds;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD UserFlags;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct USER_SESSION_KEY UserSessionKey;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t LogonServer;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw netr_string_t LogonDomainName;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_sid *LogonDomainId;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD ExpansionRoom[10];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD SidCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(SidCount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_sid_and_attributes *ExtraSids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
12b65585e720714b31036daaa2b30eb76014048eGordon Ross/* NETR_OPNUM_decode_krb5_pac */
12b65585e720714b31036daaa2b30eb76014048eGordon Rossstruct krb5_validation_info {
12b65585e720714b31036daaa2b30eb76014048eGordon Ross struct netr_validation_info3 info3;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross /* Kerberos PAC "resource group" stuff. */
12b65585e720714b31036daaa2b30eb76014048eGordon Ross struct netr_sid *rg_dom_sid;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross DWORD rg_rid_cnt;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross SIZE_IS(rg_rid_cnt)
12b65585e720714b31036daaa2b30eb76014048eGordon Ross struct netr_group_membership *rg_rids;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion netr_validation_u {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(3) struct netr_validation_info3 *info3;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT DWORD nothing;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This structure needs to be declared, even though it can't be used
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * in netr_SamLogon, in order to get the appropriate size to calculate
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the correct fixup offsets. If ndrgen did the right thing,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * netr_validation_info would be one of the out parameters. However,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * if we do it that way, the switch_value isn't known early enough to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * do the fixup calculation. So it all has to go in netr_SamLogon.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_validation_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD validation_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(validation_level)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union netr_validation_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * WARNING
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Validation_level is really a WORD and authoritative is really a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * BYTE. They are declared as DWORD here due to the way things are
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * unmarshalled. NT does not clear out the unused bytes in the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * DWORD so they must be cast to get the correct value.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(NETR_OPNUM_SamLogon)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_SamLogon {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR hostname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct netr_authenticator *auth;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct netr_authenticator *ret_auth;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct netr_login_info logon_info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT WORD validation_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(validation_level)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT union netr_validation_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD authoritative;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SamLogoff
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(NETR_OPNUM_SamLogoff)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct netr_SamLogoff {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE LPTSTR hostname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct netr_authenticator auth;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct netr_authenticator ret_auth;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD logon_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(logon_level)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN union netr_logon_info_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The NETR interface definition.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwINTERFACE(0)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion netr_interface {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(NETR_OPNUM_ServerReqChallenge)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_ServerReqChallenge ServerReqChallenge;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(NETR_OPNUM_ServerAuthenticate2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_ServerAuthenticate2 ServerAuthenticate2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(NETR_OPNUM_SamLogon)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_SamLogon SamLogon;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(NETR_OPNUM_SamLogoff)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_SamLogoff SamLogoff;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(NETR_OPNUM_ServerPasswordSet)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct netr_PasswordSet PasswordSet;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross CASE(NETR_OPNUM_ServerPasswordSet2)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct netr_PasswordSet2 PasswordSet2;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross
12b65585e720714b31036daaa2b30eb76014048eGordon Ross /* Special, for smb_decode_krb5_pac() */
12b65585e720714b31036daaa2b30eb76014048eGordon Ross CASE(NETR_OPNUM_decode_krb5_pac)
12b65585e720714b31036daaa2b30eb76014048eGordon Ross struct krb5_validation_info krb5pac;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef union netr_interface netr_interface_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwEXTERNTYPEINFO(netr_interface)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif /* _MLSVC_NETR_NDL_ */