xref: /titanic_50/usr/src/uts/common/smbsrv/ndl/netlogon.ndl (revision 12b65585e720714b31036daaa2b30eb76014048e)
1da6c28aaSamw/*
2da6c28aaSamw * CDDL HEADER START
3da6c28aaSamw *
4da6c28aaSamw * The contents of this file are subject to the terms of the
5da6c28aaSamw * Common Development and Distribution License (the "License").
6da6c28aaSamw * You may not use this file except in compliance with the License.
7da6c28aaSamw *
8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9da6c28aaSamw * or http://www.opensolaris.org/os/licensing.
10da6c28aaSamw * See the License for the specific language governing permissions
11da6c28aaSamw * and limitations under the License.
12da6c28aaSamw *
13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each
14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the
16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying
17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner]
18da6c28aaSamw *
19da6c28aaSamw * CDDL HEADER END
20da6c28aaSamw */
21da6c28aaSamw/*
223db3f65cSamw * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23da6c28aaSamw * Use is subject to license terms.
24*12b65585SGordon Ross *
25*12b65585SGordon Ross * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
26da6c28aaSamw */
27da6c28aaSamw
28da6c28aaSamw#ifndef _MLSVC_NETR_NDL_
29da6c28aaSamw#define _MLSVC_NETR_NDL_
30da6c28aaSamw
31da6c28aaSamw/*
32da6c28aaSamw ***********************************************************************
33da6c28aaSamw *
34da6c28aaSamw * NetLogon RPC (NETR) interface definition.
35da6c28aaSamw *
36da6c28aaSamw ***********************************************************************
37da6c28aaSamw */
38da6c28aaSamw
39da6c28aaSamw#include "ndrtypes.ndl"
40da6c28aaSamw
41da6c28aaSamw
423db3f65cSamw#define NETR_OPNUM_UasLogon			0x00
433db3f65cSamw#define NETR_OPNUM_UasLogoff			0x01
44da6c28aaSamw#define NETR_OPNUM_SamLogon			0x02
45da6c28aaSamw#define NETR_OPNUM_SamLogoff			0x03
46da6c28aaSamw#define NETR_OPNUM_ServerReqChallenge		0x04
473db3f65cSamw#define NETR_OPNUM_ServerAuthenticate		0x05
48da6c28aaSamw#define NETR_OPNUM_ServerPasswordSet		0x06
493db3f65cSamw#define NETR_OPNUM_DatabaseDeltas		0x07
503db3f65cSamw#define NETR_OPNUM_DatabaseSync			0x08
513db3f65cSamw#define NETR_OPNUM_AccountDeltas		0x09
523db3f65cSamw#define NETR_OPNUM_AccountSync			0x0a
533db3f65cSamw#define NETR_OPNUM_GetDCName			0x0b
543db3f65cSamw#define NETR_OPNUM_LogonControl			0x0c
553db3f65cSamw#define NETR_OPNUM_GetAnyDCName			0x0d
56da6c28aaSamw#define NETR_OPNUM_LogonControl2		0x0E
57da6c28aaSamw#define NETR_OPNUM_ServerAuthenticate2		0x0F
583db3f65cSamw#define NETR_OPNUM_DatabaseSync2		0x10
593db3f65cSamw#define NETR_OPNUM_DatabaseRedo			0x11
603db3f65cSamw#define NETR_OPNUM_LogonControl2Ex		0x12
61da6c28aaSamw#define NETR_OPNUM_TrustDomainList		0x13
621ed6b69aSGordon Ross#define NETR_OPNUM_DsrGetDcName			0x14
631ed6b69aSGordon Ross#define NETR_OPNUM_LogonGetCapabilities		0x15
641ed6b69aSGordon Ross#define NETR_OPNUM_LogonSetServiceBits		0x16
651ed6b69aSGordon Ross#define NETR_OPNUM_LogonGetTrustRid		0x17
661ed6b69aSGordon Ross#define NETR_OPNUM_LogonComputeServerDigest	0x18
671ed6b69aSGordon Ross#define NETR_OPNUM_LogonComputeClientDigest	0x19
681ed6b69aSGordon Ross#define NETR_OPNUM_ServerAuthenticate3		0x1A
691ed6b69aSGordon Ross#define NETR_OPNUM_DsrGetDcNameEx		0x1B
701ed6b69aSGordon Ross#define NETR_OPNUM_DsrGetSiteName		0x1C
711ed6b69aSGordon Ross#define NETR_OPNUM_LogonGetDomainInfo		0x1D
721ed6b69aSGordon Ross#define NETR_OPNUM_ServerPasswordSet2		0x1E
73da6c28aaSamw
74*12b65585SGordon Ross/*
75*12b65585SGordon Ross * This is not a real NETR OPNUM.  It's used to unpack the
76*12b65585SGordon Ross * struct krb5_validation_info found in the Kerberos PAC.
77*12b65585SGordon Ross */
78*12b65585SGordon Ross#define	NETR_OPNUM_decode_krb5_pac		1000
79*12b65585SGordon Ross
80da6c28aaSamw
81da6c28aaSamwstruct netr_sid {
82da6c28aaSamw	BYTE		Revision;
83da6c28aaSamw	BYTE		SubAuthCount;
84da6c28aaSamw	BYTE		Authority[6];
85da6c28aaSamw  SIZE_IS(SubAuthCount)
86da6c28aaSamw	DWORD		SubAuthority[ANY_SIZE_ARRAY];
87da6c28aaSamw};
88da6c28aaSamw
89da6c28aaSamw
90da6c28aaSamwstruct netr_string {
91da6c28aaSamw	WORD		length;
92da6c28aaSamw	WORD		allosize;
93da6c28aaSamw	LPTSTR		str;
94da6c28aaSamw};
95da6c28aaSamwtypedef struct netr_string netr_string_t;
96da6c28aaSamw
97da6c28aaSamw
98da6c28aaSamw/*
99da6c28aaSamw * Alternative varying/conformant string definition - for
100da6c28aaSamw * non-null terminated strings. This definition must match
1018d7e4166Sjose borrego * ndr_vcbuf_t.
102da6c28aaSamw */
1032c1b14e5Sjose borregostruct netr_vcs {
104da6c28aaSamw	/*
105da6c28aaSamw	 * size_is (actually a copy of length_is) will
106da6c28aaSamw	 * be inserted here by the marshalling library.
107da6c28aaSamw	 */
108da6c28aaSamw	DWORD vc_first_is;
109da6c28aaSamw	DWORD vc_length_is;
110da6c28aaSamw  SIZE_IS(vc_length_is)
111da6c28aaSamw	WORD buffer[ANY_SIZE_ARRAY];
112da6c28aaSamw};
113da6c28aaSamw
1142c1b14e5Sjose borregostruct netr_vcstr {
115da6c28aaSamw	WORD wclen;
116da6c28aaSamw	WORD wcsize;
1172c1b14e5Sjose borrego	struct netr_vcs *vcs;
1182c1b14e5Sjose borrego};
1192c1b14e5Sjose borregotypedef struct netr_vcstr netr_vcstr_t;
1202c1b14e5Sjose borrego
1212c1b14e5Sjose borregostruct netr_vcb {
1222c1b14e5Sjose borrego	/*
1232c1b14e5Sjose borrego	 * size_is (actually a copy of length_is) will
1242c1b14e5Sjose borrego	 * be inserted here by the marshalling library.
1252c1b14e5Sjose borrego	 */
1262c1b14e5Sjose borrego	DWORD vc_first_is;
1272c1b14e5Sjose borrego	DWORD vc_length_is;
1282c1b14e5Sjose borrego  SIZE_IS(vc_length_is)
1292c1b14e5Sjose borrego	BYTE buffer[ANY_SIZE_ARRAY];
1302c1b14e5Sjose borrego};
1312c1b14e5Sjose borrego
1322c1b14e5Sjose borregostruct netr_vcbuf {
1332c1b14e5Sjose borrego	WORD len;
1342c1b14e5Sjose borrego	WORD size;
135da6c28aaSamw	struct netr_vcb *vcb;
136da6c28aaSamw};
137da6c28aaSamwtypedef struct netr_vcbuf netr_vcbuf_t;
138da6c28aaSamw
139da6c28aaSamwstruct netr_credential {
140da6c28aaSamw	BYTE data[8];
141da6c28aaSamw};
142da6c28aaSamw
143da6c28aaSamwstruct netr_authenticator {
144da6c28aaSamw	struct netr_credential credential;
145da6c28aaSamw	DWORD timestamp;
146da6c28aaSamw};
147da6c28aaSamwtypedef struct netr_authenticator netr_auth_t;
148da6c28aaSamw
149da6c28aaSamw
150da6c28aaSamwstruct OLD_LARGE_INTEGER {
151da6c28aaSamw	DWORD LowPart;
152da6c28aaSamw	DWORD HighPart;
153da6c28aaSamw};
154da6c28aaSamwtypedef struct OLD_LARGE_INTEGER netr_int64_t;
155da6c28aaSamw
1561ed6b69aSGordon Rossstruct CYPHER_BLOCK {
1571ed6b69aSGordon Ross	BYTE data[8];
1581ed6b69aSGordon Ross};
159da6c28aaSamw
160da6c28aaSamwstruct OWF_PASSWORD {
161da6c28aaSamw	BYTE data[16];
162da6c28aaSamw};
163da6c28aaSamwtypedef struct OWF_PASSWORD netr_owf_password_t;
164da6c28aaSamw
1651ed6b69aSGordon Ross/*
1661ed6b69aSGordon Ross * NL_TRUST_PASSWORD
1671ed6b69aSGordon Ross * See also: samr_user_password
1681ed6b69aSGordon Ross */
1691ed6b69aSGordon Ross#define NETR_TRUST_PWLEN	256
1701ed6b69aSGordon Rossstruct netr_trust_password {
1711ed6b69aSGordon Ross	WORD	Buffer[NETR_TRUST_PWLEN];
1721ed6b69aSGordon Ross	DWORD	Length;
173da6c28aaSamw};
1741ed6b69aSGordon Rosstypedef struct netr_trust_password netr_trust_password_t;
175da6c28aaSamw
176da6c28aaSamwstruct USER_SESSION_KEY {
177da6c28aaSamw	struct CYPHER_BLOCK data[2];
178da6c28aaSamw};
179da6c28aaSamw
180da6c28aaSamw
181da6c28aaSamw
182da6c28aaSamw
183da6c28aaSamw/*
184da6c28aaSamw ***********************************************************************
185da6c28aaSamw * ServerReqChallenge
186da6c28aaSamw ***********************************************************************
187da6c28aaSamw */
188da6c28aaSamwALIGN(2)
189da6c28aaSamwOPERATION(NETR_OPNUM_ServerReqChallenge)
190da6c28aaSamwstruct netr_ServerReqChallenge {
191da6c28aaSamw	IN		LPTSTR servername;
192da6c28aaSamw	IN REFERENCE	LPTSTR hostname;
193da6c28aaSamw	IN		struct netr_credential client_challenge;
194da6c28aaSamw	OUT		struct netr_credential server_challenge;
195da6c28aaSamw	OUT		DWORD status;
196da6c28aaSamw};
197da6c28aaSamw
198da6c28aaSamw
199da6c28aaSamw/*
200da6c28aaSamw ***********************************************************************
201da6c28aaSamw * ServerAuthenticate2
202da6c28aaSamw ***********************************************************************
203da6c28aaSamw */
204da6c28aaSamwALIGN(2)
205da6c28aaSamwOPERATION(NETR_OPNUM_ServerAuthenticate2)
206da6c28aaSamwstruct netr_ServerAuthenticate2 {
207da6c28aaSamw	IN		LPTSTR servername;
208da6c28aaSamw	IN REFERENCE	LPTSTR account_name;
209da6c28aaSamw	IN		WORD account_type;
210da6c28aaSamw	IN REFERENCE	LPTSTR hostname;
211da6c28aaSamw	IN		struct netr_credential client_credential;
212da6c28aaSamw	OUT		struct netr_credential server_credential;
213da6c28aaSamw	INOUT	DWORD negotiate_flags;
214da6c28aaSamw	OUT		DWORD status;
215da6c28aaSamw};
216da6c28aaSamw
217da6c28aaSamw
218da6c28aaSamw/*
219da6c28aaSamw ***********************************************************************
220da6c28aaSamw * ServerPasswordSet
221da6c28aaSamw ***********************************************************************
222da6c28aaSamw */
223da6c28aaSamwALIGN(2)
224da6c28aaSamwOPERATION(NETR_OPNUM_ServerPasswordSet)
225da6c28aaSamwstruct netr_PasswordSet {
226da6c28aaSamw	IN		LPTSTR servername;
227da6c28aaSamw	IN REFERENCE	LPTSTR account_name;
2281ed6b69aSGordon Ross	IN		WORD sec_chan_type;
229da6c28aaSamw	IN REFERENCE	LPTSTR hostname;
230da6c28aaSamw	INOUT	struct netr_authenticator auth;
2311ed6b69aSGordon Ross	IN		netr_owf_password_t owf_password;
2321ed6b69aSGordon Ross	OUT		DWORD status;
2331ed6b69aSGordon Ross};
2341ed6b69aSGordon Ross
2351ed6b69aSGordon RossOPERATION(NETR_OPNUM_ServerPasswordSet2)
2361ed6b69aSGordon Rossstruct netr_PasswordSet2 {
2371ed6b69aSGordon Ross	IN		LPTSTR servername;
2381ed6b69aSGordon Ross	IN REFERENCE	LPTSTR account_name;
2391ed6b69aSGordon Ross	IN		WORD sec_chan_type;
2401ed6b69aSGordon Ross	IN REFERENCE	LPTSTR hostname;
2411ed6b69aSGordon Ross	INOUT	struct netr_authenticator auth;
2421ed6b69aSGordon Ross	IN		netr_trust_password_t trust_password;
243da6c28aaSamw	OUT		DWORD status;
244da6c28aaSamw};
245da6c28aaSamw
246da6c28aaSamw
247da6c28aaSamw/*
248da6c28aaSamw ***********************************************************************
249da6c28aaSamw * SamLogon
250da6c28aaSamw ***********************************************************************
251da6c28aaSamw */
252da6c28aaSamw
253da6c28aaSamw/*
254da6c28aaSamw * The challenge-response data should always be 24 bytes.
255da6c28aaSamw */
256da6c28aaSamw#define NETR_CR_PASSWORD_SIZE			24
257da6c28aaSamw
258da6c28aaSamw
259da6c28aaSamwstruct lm_challenge {
260da6c28aaSamw	BYTE data[8];
261da6c28aaSamw};
262da6c28aaSamwtypedef struct lm_challenge lm_challenge_t;
263da6c28aaSamw
264da6c28aaSamw/*
265da6c28aaSamw * Input data
266da6c28aaSamw */
267da6c28aaSamwstruct netr_logon_identity_info {
2682c1b14e5Sjose borrego	netr_vcstr_t domain_name;
269da6c28aaSamw	DWORD parameter_control;
270da6c28aaSamw	struct OLD_LARGE_INTEGER logon_id;
2712c1b14e5Sjose borrego	netr_vcstr_t username;
2722c1b14e5Sjose borrego	netr_vcstr_t workstation;
273da6c28aaSamw};
274da6c28aaSamwtypedef struct netr_logon_identity_info netr_logon_id_t;
275da6c28aaSamw
276da6c28aaSamw
277da6c28aaSamw/*
278da6c28aaSamw * Level 1: interactive logon
279da6c28aaSamw */
280da6c28aaSamwstruct netr_logon_info1 {
281da6c28aaSamw	netr_logon_id_t identity;
282da6c28aaSamw	netr_owf_password_t lm_owf_password;
283da6c28aaSamw	netr_owf_password_t nt_owf_password;
284da6c28aaSamw};
285da6c28aaSamw
286da6c28aaSamw
287da6c28aaSamw/*
288da6c28aaSamw * Level 2: network logon.
289da6c28aaSamw */
290da6c28aaSamwstruct netr_logon_info2 {
291da6c28aaSamw	netr_logon_id_t identity;
292da6c28aaSamw	lm_challenge_t lm_challenge;
2932c1b14e5Sjose borrego	netr_vcbuf_t nt_response;
2942c1b14e5Sjose borrego	netr_vcbuf_t lm_response;
295da6c28aaSamw};
296da6c28aaSamw
297da6c28aaSamw
298da6c28aaSamwunion netr_logon_info_u {
299da6c28aaSamw	UNION_INFO_PTR(1,netr_logon_info);
300da6c28aaSamw	UNION_INFO_PTR(2,netr_logon_info);
301da6c28aaSamw	DEFAULT	DWORD nothing;
302da6c28aaSamw};
303da6c28aaSamw
304da6c28aaSamw
305da6c28aaSamwstruct netr_login_info {
306da6c28aaSamw	WORD logon_level;
307da6c28aaSamw	WORD switch_value;
308da6c28aaSamw  SWITCH(switch_value)
309da6c28aaSamw	union netr_logon_info_u ru;
310da6c28aaSamw};
311da6c28aaSamw
312da6c28aaSamw
313da6c28aaSamw/*
314da6c28aaSamw * Output data
315da6c28aaSamw */
316da6c28aaSamwstruct netr_group_membership {
317da6c28aaSamw	DWORD rid;
318da6c28aaSamw	DWORD attributes;
319da6c28aaSamw};
320da6c28aaSamw
321da6c28aaSamw
322da6c28aaSamwstruct netr_sid_and_attributes {
323da6c28aaSamw	struct netr_sid *sid;
324da6c28aaSamw	DWORD attributes;
325da6c28aaSamw};
326da6c28aaSamw
327da6c28aaSamw
328da6c28aaSamwstruct netr_validation_info3 {
329da6c28aaSamw	struct OLD_LARGE_INTEGER LogonTime;
330da6c28aaSamw	struct OLD_LARGE_INTEGER LogoffTime;
331da6c28aaSamw	struct OLD_LARGE_INTEGER KickOffTime;
332da6c28aaSamw	struct OLD_LARGE_INTEGER PasswordLastSet;
333da6c28aaSamw	struct OLD_LARGE_INTEGER PasswordCanChange;
334da6c28aaSamw	struct OLD_LARGE_INTEGER PasswordMustChange;
335da6c28aaSamw	netr_string_t EffectiveName;
336da6c28aaSamw	netr_string_t FullName;
337da6c28aaSamw	netr_string_t LogonScript;
338da6c28aaSamw	netr_string_t ProfilePath;
339da6c28aaSamw	netr_string_t HomeDirectory;
340da6c28aaSamw	netr_string_t HomeDirectoryDrive;
341da6c28aaSamw	WORD LogonCount;
342da6c28aaSamw	WORD BadPasswordCount;
343da6c28aaSamw	DWORD UserId;
344da6c28aaSamw	DWORD PrimaryGroupId;
345da6c28aaSamw	DWORD GroupCount;
346da6c28aaSamw  SIZE_IS(GroupCount)
347da6c28aaSamw	struct netr_group_membership *GroupIds;
348da6c28aaSamw	DWORD UserFlags;
349da6c28aaSamw	struct USER_SESSION_KEY UserSessionKey;
350da6c28aaSamw	netr_string_t LogonServer;
351da6c28aaSamw	netr_string_t LogonDomainName;
352da6c28aaSamw	struct netr_sid *LogonDomainId;
353da6c28aaSamw	DWORD ExpansionRoom[10];
354da6c28aaSamw	DWORD SidCount;
355da6c28aaSamw  SIZE_IS(SidCount)
356da6c28aaSamw	struct netr_sid_and_attributes *ExtraSids;
357da6c28aaSamw};
358da6c28aaSamw
359*12b65585SGordon Ross/* NETR_OPNUM_decode_krb5_pac */
360*12b65585SGordon Rossstruct krb5_validation_info {
361*12b65585SGordon Ross	struct netr_validation_info3 info3;
362*12b65585SGordon Ross	/* Kerberos PAC "resource group" stuff. */
363*12b65585SGordon Ross	struct netr_sid *rg_dom_sid;
364*12b65585SGordon Ross	DWORD rg_rid_cnt;
365*12b65585SGordon Ross  SIZE_IS(rg_rid_cnt)
366*12b65585SGordon Ross	struct netr_group_membership *rg_rids;
367*12b65585SGordon Ross};
368da6c28aaSamw
369da6c28aaSamwunion netr_validation_u {
370da6c28aaSamw	CASE(3) struct netr_validation_info3 *info3;
371da6c28aaSamw	DEFAULT	DWORD nothing;
372da6c28aaSamw};
373da6c28aaSamw
374da6c28aaSamw
375da6c28aaSamw/*
376da6c28aaSamw * This structure needs to be declared, even though it can't be used
377da6c28aaSamw * in netr_SamLogon, in order to get the appropriate size to calculate
378da6c28aaSamw * the correct fixup offsets.  If ndrgen did the right thing,
379da6c28aaSamw * netr_validation_info would be one of the out parameters. However,
380da6c28aaSamw * if we do it that way, the switch_value isn't known early enough to
381da6c28aaSamw * do the fixup calculation. So it all has to go in netr_SamLogon.
382da6c28aaSamw */
383da6c28aaSamwstruct netr_validation_info {
384da6c28aaSamw	WORD validation_level;
385da6c28aaSamw  SWITCH(validation_level)
386da6c28aaSamw	union netr_validation_u ru;
387da6c28aaSamw};
388da6c28aaSamw
389da6c28aaSamw
390da6c28aaSamw/*
391da6c28aaSamw * WARNING
392da6c28aaSamw *
393da6c28aaSamw * Validation_level is really a WORD and authoritative is really a
394da6c28aaSamw * BYTE. They are declared as DWORD here due to the way things are
395da6c28aaSamw * unmarshalled. NT does not clear out the unused bytes in the
396da6c28aaSamw * DWORD so they must be cast to get the correct value.
397da6c28aaSamw */
398da6c28aaSamwOPERATION(NETR_OPNUM_SamLogon)
399da6c28aaSamwstruct netr_SamLogon {
400da6c28aaSamw	IN		LPTSTR servername;
401da6c28aaSamw	IN		LPTSTR hostname;
402da6c28aaSamw	IN		struct netr_authenticator *auth;
403da6c28aaSamw	INOUT	struct netr_authenticator *ret_auth;
404da6c28aaSamw	IN		struct netr_login_info logon_info;
405da6c28aaSamw	INOUT	WORD validation_level;
406da6c28aaSamw  SWITCH(validation_level)
407da6c28aaSamw	OUT		union netr_validation_u ru;
408da6c28aaSamw	OUT		DWORD authoritative;
409da6c28aaSamw	OUT		DWORD status;
410da6c28aaSamw};
411da6c28aaSamw
412da6c28aaSamw
413da6c28aaSamw/*
414da6c28aaSamw ***********************************************************************
415da6c28aaSamw * SamLogoff
416da6c28aaSamw ***********************************************************************
417da6c28aaSamw */
418da6c28aaSamwOPERATION(NETR_OPNUM_SamLogoff)
419da6c28aaSamwstruct netr_SamLogoff {
420da6c28aaSamw	IN		LPTSTR servername;
421da6c28aaSamw	IN REFERENCE	LPTSTR hostname;
422da6c28aaSamw	IN		struct netr_authenticator auth;
423da6c28aaSamw	INOUT	struct netr_authenticator ret_auth;
424da6c28aaSamw	IN		DWORD logon_level;
425da6c28aaSamw  SWITCH(logon_level)
426da6c28aaSamw	IN		union netr_logon_info_u ru;
427da6c28aaSamw	OUT		DWORD status;
428da6c28aaSamw};
429da6c28aaSamw
430da6c28aaSamw
431da6c28aaSamw/*
432da6c28aaSamw ***********************************************************************
433da6c28aaSamw * The NETR interface definition.
434da6c28aaSamw ***********************************************************************
435da6c28aaSamw */
436da6c28aaSamwINTERFACE(0)
437da6c28aaSamwunion netr_interface {
438da6c28aaSamw	CASE(NETR_OPNUM_ServerReqChallenge)
439da6c28aaSamw		struct netr_ServerReqChallenge		ServerReqChallenge;
440da6c28aaSamw	CASE(NETR_OPNUM_ServerAuthenticate2)
441da6c28aaSamw		struct netr_ServerAuthenticate2		ServerAuthenticate2;
442da6c28aaSamw	CASE(NETR_OPNUM_SamLogon)
443da6c28aaSamw		struct netr_SamLogon			SamLogon;
444da6c28aaSamw	CASE(NETR_OPNUM_SamLogoff)
445da6c28aaSamw		struct netr_SamLogoff			SamLogoff;
446da6c28aaSamw	CASE(NETR_OPNUM_ServerPasswordSet)
447da6c28aaSamw		struct netr_PasswordSet			PasswordSet;
4481ed6b69aSGordon Ross	CASE(NETR_OPNUM_ServerPasswordSet2)
4491ed6b69aSGordon Ross		struct netr_PasswordSet2		PasswordSet2;
450*12b65585SGordon Ross
451*12b65585SGordon Ross	/* Special, for smb_decode_krb5_pac() */
452*12b65585SGordon Ross	CASE(NETR_OPNUM_decode_krb5_pac)
453*12b65585SGordon Ross		struct krb5_validation_info		krb5pac;
454da6c28aaSamw};
455da6c28aaSamwtypedef union netr_interface netr_interface_t;
456da6c28aaSamwEXTERNTYPEINFO(netr_interface)
457da6c28aaSamw
458da6c28aaSamw#endif /* _MLSVC_NETR_NDL_ */
459