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. 2412b65585SGordon Ross * 25*ce8560eeSMatt Barden * Copyright 2020 Tintri by DDN, 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 393299f39fSGordon Ross#include <libmlrpc/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*ce8560eeSMatt Barden#define NETR_OPNUM_SamLogonEx 0x27 75*ce8560eeSMatt Barden 7612b65585SGordon Ross/* 7712b65585SGordon Ross * This is not a real NETR OPNUM. It's used to unpack the 7812b65585SGordon Ross * struct krb5_validation_info found in the Kerberos PAC. 7912b65585SGordon Ross */ 8012b65585SGordon Ross#define NETR_OPNUM_decode_krb5_pac 1000 8112b65585SGordon Ross 82da6c28aaSamw 83da6c28aaSamwstruct netr_sid { 84da6c28aaSamw BYTE Revision; 85da6c28aaSamw BYTE SubAuthCount; 86da6c28aaSamw BYTE Authority[6]; 87da6c28aaSamw SIZE_IS(SubAuthCount) 88da6c28aaSamw DWORD SubAuthority[ANY_SIZE_ARRAY]; 89da6c28aaSamw}; 90da6c28aaSamw 91da6c28aaSamw 92da6c28aaSamwstruct netr_string { 93da6c28aaSamw WORD length; 94da6c28aaSamw WORD allosize; 95da6c28aaSamw LPTSTR str; 96da6c28aaSamw}; 97da6c28aaSamwtypedef struct netr_string netr_string_t; 98da6c28aaSamw 99da6c28aaSamw 100da6c28aaSamw/* 101da6c28aaSamw * Alternative varying/conformant string definition - for 102da6c28aaSamw * non-null terminated strings. This definition must match 1038d7e4166Sjose borrego * ndr_vcbuf_t. 104da6c28aaSamw */ 1052c1b14e5Sjose borregostruct netr_vcs { 106da6c28aaSamw /* 107da6c28aaSamw * size_is (actually a copy of length_is) will 108da6c28aaSamw * be inserted here by the marshalling library. 109da6c28aaSamw */ 110da6c28aaSamw DWORD vc_first_is; 111da6c28aaSamw DWORD vc_length_is; 112da6c28aaSamw SIZE_IS(vc_length_is) 113da6c28aaSamw WORD buffer[ANY_SIZE_ARRAY]; 114da6c28aaSamw}; 115da6c28aaSamw 1162c1b14e5Sjose borregostruct netr_vcstr { 117da6c28aaSamw WORD wclen; 118da6c28aaSamw WORD wcsize; 1192c1b14e5Sjose borrego struct netr_vcs *vcs; 1202c1b14e5Sjose borrego}; 1212c1b14e5Sjose borregotypedef struct netr_vcstr netr_vcstr_t; 1222c1b14e5Sjose borrego 1232c1b14e5Sjose borregostruct netr_vcb { 1242c1b14e5Sjose borrego /* 1252c1b14e5Sjose borrego * size_is (actually a copy of length_is) will 1262c1b14e5Sjose borrego * be inserted here by the marshalling library. 1272c1b14e5Sjose borrego */ 1282c1b14e5Sjose borrego DWORD vc_first_is; 1292c1b14e5Sjose borrego DWORD vc_length_is; 1302c1b14e5Sjose borrego SIZE_IS(vc_length_is) 1312c1b14e5Sjose borrego BYTE buffer[ANY_SIZE_ARRAY]; 1322c1b14e5Sjose borrego}; 1332c1b14e5Sjose borrego 1342c1b14e5Sjose borregostruct netr_vcbuf { 1352c1b14e5Sjose borrego WORD len; 1362c1b14e5Sjose borrego WORD size; 137da6c28aaSamw struct netr_vcb *vcb; 138da6c28aaSamw}; 139da6c28aaSamwtypedef struct netr_vcbuf netr_vcbuf_t; 140da6c28aaSamw 141da6c28aaSamwstruct netr_credential { 142da6c28aaSamw BYTE data[8]; 143da6c28aaSamw}; 144da6c28aaSamw 145da6c28aaSamwstruct netr_authenticator { 146da6c28aaSamw struct netr_credential credential; 147da6c28aaSamw DWORD timestamp; 148da6c28aaSamw}; 149da6c28aaSamwtypedef struct netr_authenticator netr_auth_t; 150da6c28aaSamw 151da6c28aaSamw 152da6c28aaSamwstruct OLD_LARGE_INTEGER { 153da6c28aaSamw DWORD LowPart; 154da6c28aaSamw DWORD HighPart; 155da6c28aaSamw}; 156da6c28aaSamwtypedef struct OLD_LARGE_INTEGER netr_int64_t; 157da6c28aaSamw 1581ed6b69aSGordon Rossstruct CYPHER_BLOCK { 1591ed6b69aSGordon Ross BYTE data[8]; 1601ed6b69aSGordon Ross}; 161da6c28aaSamw 162da6c28aaSamwstruct OWF_PASSWORD { 163da6c28aaSamw BYTE data[16]; 164da6c28aaSamw}; 165da6c28aaSamwtypedef struct OWF_PASSWORD netr_owf_password_t; 166da6c28aaSamw 1671ed6b69aSGordon Ross/* 1681ed6b69aSGordon Ross * NL_TRUST_PASSWORD 1691ed6b69aSGordon Ross * See also: samr_user_password 1701ed6b69aSGordon Ross */ 1711ed6b69aSGordon Ross#define NETR_TRUST_PWLEN 256 1721ed6b69aSGordon Rossstruct netr_trust_password { 1731ed6b69aSGordon Ross WORD Buffer[NETR_TRUST_PWLEN]; 1741ed6b69aSGordon Ross DWORD Length; 175da6c28aaSamw}; 1761ed6b69aSGordon Rosstypedef struct netr_trust_password netr_trust_password_t; 177da6c28aaSamw 178da6c28aaSamwstruct USER_SESSION_KEY { 179da6c28aaSamw struct CYPHER_BLOCK data[2]; 180da6c28aaSamw}; 181da6c28aaSamw 182da6c28aaSamw 183da6c28aaSamw 184da6c28aaSamw 185da6c28aaSamw/* 186da6c28aaSamw *********************************************************************** 187da6c28aaSamw * ServerReqChallenge 188da6c28aaSamw *********************************************************************** 189da6c28aaSamw */ 190da6c28aaSamwALIGN(2) 191da6c28aaSamwOPERATION(NETR_OPNUM_ServerReqChallenge) 192da6c28aaSamwstruct netr_ServerReqChallenge { 193da6c28aaSamw IN LPTSTR servername; 194da6c28aaSamw IN REFERENCE LPTSTR hostname; 195da6c28aaSamw IN struct netr_credential client_challenge; 196da6c28aaSamw OUT struct netr_credential server_challenge; 197da6c28aaSamw OUT DWORD status; 198da6c28aaSamw}; 199da6c28aaSamw 200da6c28aaSamw 201da6c28aaSamw/* 202da6c28aaSamw *********************************************************************** 203da6c28aaSamw * ServerAuthenticate2 204da6c28aaSamw *********************************************************************** 205da6c28aaSamw */ 206da6c28aaSamwALIGN(2) 207da6c28aaSamwOPERATION(NETR_OPNUM_ServerAuthenticate2) 208da6c28aaSamwstruct netr_ServerAuthenticate2 { 209da6c28aaSamw IN LPTSTR servername; 210da6c28aaSamw IN REFERENCE LPTSTR account_name; 211da6c28aaSamw IN WORD account_type; 212da6c28aaSamw IN REFERENCE LPTSTR hostname; 213da6c28aaSamw IN struct netr_credential client_credential; 214da6c28aaSamw OUT struct netr_credential server_credential; 215da6c28aaSamw INOUT DWORD negotiate_flags; 216da6c28aaSamw OUT DWORD status; 217da6c28aaSamw}; 218da6c28aaSamw 219da6c28aaSamw 220da6c28aaSamw/* 221da6c28aaSamw *********************************************************************** 222da6c28aaSamw * ServerPasswordSet 223da6c28aaSamw *********************************************************************** 224da6c28aaSamw */ 225da6c28aaSamwALIGN(2) 226da6c28aaSamwOPERATION(NETR_OPNUM_ServerPasswordSet) 227da6c28aaSamwstruct netr_PasswordSet { 228da6c28aaSamw IN LPTSTR servername; 229da6c28aaSamw IN REFERENCE LPTSTR account_name; 2301ed6b69aSGordon Ross IN WORD sec_chan_type; 231da6c28aaSamw IN REFERENCE LPTSTR hostname; 232da6c28aaSamw INOUT struct netr_authenticator auth; 2331ed6b69aSGordon Ross IN netr_owf_password_t owf_password; 2341ed6b69aSGordon Ross OUT DWORD status; 2351ed6b69aSGordon Ross}; 2361ed6b69aSGordon Ross 2371ed6b69aSGordon RossOPERATION(NETR_OPNUM_ServerPasswordSet2) 2381ed6b69aSGordon Rossstruct netr_PasswordSet2 { 2391ed6b69aSGordon Ross IN LPTSTR servername; 2401ed6b69aSGordon Ross IN REFERENCE LPTSTR account_name; 2411ed6b69aSGordon Ross IN WORD sec_chan_type; 2421ed6b69aSGordon Ross IN REFERENCE LPTSTR hostname; 2431ed6b69aSGordon Ross INOUT struct netr_authenticator auth; 2441ed6b69aSGordon Ross IN netr_trust_password_t trust_password; 245da6c28aaSamw OUT DWORD status; 246da6c28aaSamw}; 247da6c28aaSamw 248da6c28aaSamw 249da6c28aaSamw/* 250da6c28aaSamw *********************************************************************** 251da6c28aaSamw * SamLogon 252da6c28aaSamw *********************************************************************** 253da6c28aaSamw */ 254da6c28aaSamw 255da6c28aaSamw/* 256da6c28aaSamw * The challenge-response data should always be 24 bytes. 257da6c28aaSamw */ 258da6c28aaSamw#define NETR_CR_PASSWORD_SIZE 24 259da6c28aaSamw 260da6c28aaSamw 261da6c28aaSamwstruct lm_challenge { 262da6c28aaSamw BYTE data[8]; 263da6c28aaSamw}; 264da6c28aaSamwtypedef struct lm_challenge lm_challenge_t; 265da6c28aaSamw 266da6c28aaSamw/* 267da6c28aaSamw * Input data 268da6c28aaSamw */ 269da6c28aaSamwstruct netr_logon_identity_info { 2702c1b14e5Sjose borrego netr_vcstr_t domain_name; 271da6c28aaSamw DWORD parameter_control; 272da6c28aaSamw struct OLD_LARGE_INTEGER logon_id; 2732c1b14e5Sjose borrego netr_vcstr_t username; 2742c1b14e5Sjose borrego netr_vcstr_t workstation; 275da6c28aaSamw}; 276da6c28aaSamwtypedef struct netr_logon_identity_info netr_logon_id_t; 277da6c28aaSamw 278da6c28aaSamw 279da6c28aaSamw/* 280da6c28aaSamw * Level 1: interactive logon 281da6c28aaSamw */ 282da6c28aaSamwstruct netr_logon_info1 { 283da6c28aaSamw netr_logon_id_t identity; 284da6c28aaSamw netr_owf_password_t lm_owf_password; 285da6c28aaSamw netr_owf_password_t nt_owf_password; 286da6c28aaSamw}; 287da6c28aaSamw 288da6c28aaSamw 289da6c28aaSamw/* 290da6c28aaSamw * Level 2: network logon. 291da6c28aaSamw */ 292da6c28aaSamwstruct netr_logon_info2 { 293da6c28aaSamw netr_logon_id_t identity; 294da6c28aaSamw lm_challenge_t lm_challenge; 2952c1b14e5Sjose borrego netr_vcbuf_t nt_response; 2962c1b14e5Sjose borrego netr_vcbuf_t lm_response; 297da6c28aaSamw}; 298da6c28aaSamw 299da6c28aaSamw 300da6c28aaSamwunion netr_logon_info_u { 301da6c28aaSamw UNION_INFO_PTR(1,netr_logon_info); 302da6c28aaSamw UNION_INFO_PTR(2,netr_logon_info); 303da6c28aaSamw DEFAULT DWORD nothing; 304da6c28aaSamw}; 305da6c28aaSamw 306da6c28aaSamw 307*ce8560eeSMatt BardenFAKE 308da6c28aaSamwstruct netr_login_info { 309da6c28aaSamw WORD logon_level; 310da6c28aaSamw WORD switch_value; 311da6c28aaSamw SWITCH(switch_value) 312da6c28aaSamw union netr_logon_info_u ru; 313da6c28aaSamw}; 314da6c28aaSamw 315da6c28aaSamw 316da6c28aaSamw/* 317da6c28aaSamw * Output data 318da6c28aaSamw */ 319da6c28aaSamwstruct netr_group_membership { 320da6c28aaSamw DWORD rid; 321da6c28aaSamw DWORD attributes; 322da6c28aaSamw}; 323da6c28aaSamw 324da6c28aaSamw 325da6c28aaSamwstruct netr_sid_and_attributes { 326da6c28aaSamw struct netr_sid *sid; 327da6c28aaSamw DWORD attributes; 328da6c28aaSamw}; 329da6c28aaSamw 330da6c28aaSamw 331da6c28aaSamwstruct netr_validation_info3 { 332da6c28aaSamw struct OLD_LARGE_INTEGER LogonTime; 333da6c28aaSamw struct OLD_LARGE_INTEGER LogoffTime; 334da6c28aaSamw struct OLD_LARGE_INTEGER KickOffTime; 335da6c28aaSamw struct OLD_LARGE_INTEGER PasswordLastSet; 336da6c28aaSamw struct OLD_LARGE_INTEGER PasswordCanChange; 337da6c28aaSamw struct OLD_LARGE_INTEGER PasswordMustChange; 338da6c28aaSamw netr_string_t EffectiveName; 339da6c28aaSamw netr_string_t FullName; 340da6c28aaSamw netr_string_t LogonScript; 341da6c28aaSamw netr_string_t ProfilePath; 342da6c28aaSamw netr_string_t HomeDirectory; 343da6c28aaSamw netr_string_t HomeDirectoryDrive; 344da6c28aaSamw WORD LogonCount; 345da6c28aaSamw WORD BadPasswordCount; 346da6c28aaSamw DWORD UserId; 347da6c28aaSamw DWORD PrimaryGroupId; 348da6c28aaSamw DWORD GroupCount; 349da6c28aaSamw SIZE_IS(GroupCount) 350da6c28aaSamw struct netr_group_membership *GroupIds; 351da6c28aaSamw DWORD UserFlags; 352da6c28aaSamw struct USER_SESSION_KEY UserSessionKey; 353da6c28aaSamw netr_string_t LogonServer; 354da6c28aaSamw netr_string_t LogonDomainName; 355da6c28aaSamw struct netr_sid *LogonDomainId; 356da6c28aaSamw DWORD ExpansionRoom[10]; 357da6c28aaSamw DWORD SidCount; 358da6c28aaSamw SIZE_IS(SidCount) 359da6c28aaSamw struct netr_sid_and_attributes *ExtraSids; 360da6c28aaSamw}; 361da6c28aaSamw 36212b65585SGordon Ross/* NETR_OPNUM_decode_krb5_pac */ 36312b65585SGordon Rossstruct krb5_validation_info { 36412b65585SGordon Ross struct netr_validation_info3 info3; 36512b65585SGordon Ross /* Kerberos PAC "resource group" stuff. */ 36612b65585SGordon Ross struct netr_sid *rg_dom_sid; 36712b65585SGordon Ross DWORD rg_rid_cnt; 36812b65585SGordon Ross SIZE_IS(rg_rid_cnt) 36912b65585SGordon Ross struct netr_group_membership *rg_rids; 37012b65585SGordon Ross}; 371da6c28aaSamw 372da6c28aaSamwunion netr_validation_u { 373da6c28aaSamw CASE(3) struct netr_validation_info3 *info3; 374da6c28aaSamw DEFAULT DWORD nothing; 375da6c28aaSamw}; 376da6c28aaSamw 377da6c28aaSamw 378da6c28aaSamw/* 379da6c28aaSamw * This structure needs to be declared, even though it can't be used 380da6c28aaSamw * in netr_SamLogon, in order to get the appropriate size to calculate 381da6c28aaSamw * the correct fixup offsets. If ndrgen did the right thing, 382da6c28aaSamw * netr_validation_info would be one of the out parameters. However, 383da6c28aaSamw * if we do it that way, the switch_value isn't known early enough to 384da6c28aaSamw * do the fixup calculation. So it all has to go in netr_SamLogon. 385da6c28aaSamw */ 386da6c28aaSamwstruct netr_validation_info { 387da6c28aaSamw WORD validation_level; 388da6c28aaSamw SWITCH(validation_level) 389da6c28aaSamw union netr_validation_u ru; 390da6c28aaSamw}; 391da6c28aaSamw 392da6c28aaSamw 393da6c28aaSamw/* 394da6c28aaSamw * WARNING 395da6c28aaSamw * 396da6c28aaSamw * Validation_level is really a WORD and authoritative is really a 397da6c28aaSamw * BYTE. They are declared as DWORD here due to the way things are 398da6c28aaSamw * unmarshalled. NT does not clear out the unused bytes in the 399da6c28aaSamw * DWORD so they must be cast to get the correct value. 400da6c28aaSamw */ 4012849e840SMatt BardenALIGN(2) 402da6c28aaSamwOPERATION(NETR_OPNUM_SamLogon) 403da6c28aaSamwstruct netr_SamLogon { 404da6c28aaSamw IN LPTSTR servername; 405da6c28aaSamw IN LPTSTR hostname; 406da6c28aaSamw IN struct netr_authenticator *auth; 407da6c28aaSamw INOUT struct netr_authenticator *ret_auth; 408da6c28aaSamw IN struct netr_login_info logon_info; 409da6c28aaSamw INOUT WORD validation_level; 410da6c28aaSamw SWITCH(validation_level) 411da6c28aaSamw OUT union netr_validation_u ru; 412da6c28aaSamw OUT DWORD authoritative; 413da6c28aaSamw OUT DWORD status; 414da6c28aaSamw}; 415da6c28aaSamw 416*ce8560eeSMatt BardenALIGN(2) 417*ce8560eeSMatt BardenOPERATION(NETR_OPNUM_SamLogonEx) 418*ce8560eeSMatt Bardenstruct netr_SamLogonEx { 419*ce8560eeSMatt Barden IN LPTSTR servername; 420*ce8560eeSMatt Barden IN LPTSTR hostname; 421*ce8560eeSMatt Barden IN struct netr_login_info logon_info; 422*ce8560eeSMatt Barden INOUT WORD validation_level; 423*ce8560eeSMatt Barden SWITCH(validation_level) 424*ce8560eeSMatt Barden OUT union netr_validation_u ru; 425*ce8560eeSMatt Barden OUT DWORD authoritative; 426*ce8560eeSMatt Barden INOUT DWORD extra_flags; 427*ce8560eeSMatt Barden OUT DWORD status; 428*ce8560eeSMatt Barden}; 429da6c28aaSamw 430da6c28aaSamw/* 431da6c28aaSamw *********************************************************************** 432da6c28aaSamw * SamLogoff 433da6c28aaSamw *********************************************************************** 434da6c28aaSamw */ 435da6c28aaSamwOPERATION(NETR_OPNUM_SamLogoff) 436da6c28aaSamwstruct netr_SamLogoff { 437da6c28aaSamw IN LPTSTR servername; 438da6c28aaSamw IN REFERENCE LPTSTR hostname; 439da6c28aaSamw IN struct netr_authenticator auth; 440da6c28aaSamw INOUT struct netr_authenticator ret_auth; 441da6c28aaSamw IN DWORD logon_level; 442da6c28aaSamw SWITCH(logon_level) 443da6c28aaSamw IN union netr_logon_info_u ru; 444da6c28aaSamw OUT DWORD status; 445da6c28aaSamw}; 446da6c28aaSamw 447da6c28aaSamw 448da6c28aaSamw/* 449da6c28aaSamw *********************************************************************** 450da6c28aaSamw * The NETR interface definition. 451da6c28aaSamw *********************************************************************** 452da6c28aaSamw */ 453da6c28aaSamwINTERFACE(0) 454da6c28aaSamwunion netr_interface { 455da6c28aaSamw CASE(NETR_OPNUM_ServerReqChallenge) 456da6c28aaSamw struct netr_ServerReqChallenge ServerReqChallenge; 457da6c28aaSamw CASE(NETR_OPNUM_ServerAuthenticate2) 458da6c28aaSamw struct netr_ServerAuthenticate2 ServerAuthenticate2; 459da6c28aaSamw CASE(NETR_OPNUM_SamLogon) 460da6c28aaSamw struct netr_SamLogon SamLogon; 461*ce8560eeSMatt Barden CASE(NETR_OPNUM_SamLogonEx) 462*ce8560eeSMatt Barden struct netr_SamLogonEx SamLogonEx; 463da6c28aaSamw CASE(NETR_OPNUM_SamLogoff) 464da6c28aaSamw struct netr_SamLogoff SamLogoff; 465da6c28aaSamw CASE(NETR_OPNUM_ServerPasswordSet) 466da6c28aaSamw struct netr_PasswordSet PasswordSet; 4671ed6b69aSGordon Ross CASE(NETR_OPNUM_ServerPasswordSet2) 4681ed6b69aSGordon Ross struct netr_PasswordSet2 PasswordSet2; 46912b65585SGordon Ross 47012b65585SGordon Ross /* Special, for smb_decode_krb5_pac() */ 47112b65585SGordon Ross CASE(NETR_OPNUM_decode_krb5_pac) 47212b65585SGordon Ross struct krb5_validation_info krb5pac; 473da6c28aaSamw}; 474da6c28aaSamwtypedef union netr_interface netr_interface_t; 475da6c28aaSamwEXTERNTYPEINFO(netr_interface) 476da6c28aaSamw 477da6c28aaSamw#endif /* _MLSVC_NETR_NDL_ */ 478