Windows NT 4.0 source code leak
 
 
 
 
 
 

392 lines
6.5 KiB

/*++
Copyright (c) 1987-1992 Microsoft Corporation
Module Name:
logonsrv.h
Abstract:
Netlogon service internal constants and definitions.
Author:
Ported from Lan Man 2.0
Revision History:
21-May-1991 (cliffv)
Ported to NT. Converted to NT style.
09-Apr-1992 JohnRo
Prepare for WCHAR.H (_wcsicmp vs _wcscmpi, etc).
--*/
////////////////////////////////////////////////////////////////////////////
//
// Common include files needed by ALL netlogon server files
//
////////////////////////////////////////////////////////////////////////////
#if ( _MSC_VER >= 800 )
#pragma warning ( 3 : 4100 ) // enable "Unreferenced formal parameter"
#pragma warning ( 3 : 4219 ) // enable "trailing ',' used for variable argument list"
#endif
#include <nt.h> // LARGE_INTEGER definition
#include <ntrtl.h> // LARGE_INTEGER definition
#include <nturtl.h> // LARGE_INTEGER definition
#include <ntlsa.h> // Needed by lsrvdata.h
#define NOMINMAX // Avoid redefinition of min and max in stdlib.h
#include <rpc.h> // Needed by logon.h
#include <logon_s.h> // includes lmcons.h, lmaccess.h, netlogon.h, ssi.h, windef.h
#include <winbase.h>
#include <lmerrlog.h> // NELOG_*
#include <lmsname.h> // Needed for NETLOGON service name
#include <winsvc.h> // Needed for new service controller APIs
#include <logonp.h> // NetpLogon routines
#include <samrpc.h> // Needed by lsrvdata.h and logonsrv.h
#include <samisrv.h> // SamIFree routines
#include "changelg.h" // Change log support
#include "chutil.h" // Change log support
#include <lsarpc.h> // Needed by lsrvdata.h and logonsrv.h
#include <lsaisrv.h> // LsaI routines
#include "ssiinit.h" // Misc global definitions
#include <icanon.h> // NAMETYPE_* defines
#include "lsrvdata.h" // Globals
#include <debugfmt.h> // FORMAT_*
#include <netlib.h> // NetpCopy...
#include <netlibnt.h> // NetpNtStatusToApiStatus
#include "nldebug.h" // Netlogon debugging
#include "nlp.h" // Nlp routines
#include <stdlib.h> // wcs routines
//
// On x86, allow bad alignment in debug statements.
//
#ifdef _X86_
#define BAD_ALIGNMENT
#endif // _X86_
#define NETLOGON_SCRIPTS_SHARE TEXT( "NETLOGON" )
#define IPC_SHARE TEXT( "IPC$" )
#define THREAD_STACKSIZE 8192
#define MAX_LOGONREQ_COUNT 3
#define NETLOGON_INSTALL_WAIT 30000 // 30 secs
////////////////////////////////////////////////////////////////////////
//
// NlNameCompare
//
// I_NetNameCompare but always takes UNICODE strings
//
////////////////////////////////////////////////////////////////////////
#define NlNameCompare( _name1, _name2, _nametype ) \
I_NetNameCompare(NULL, (_name1), (_name2), (_nametype), 0 )
//
// Exit codes for NlExit
//
typedef enum {
DontLogError,
LogError,
LogErrorAndNtStatus,
LogErrorAndNetStatus
} NL_EXIT_CODE;
////////////////////////////////////////////////////////////////////////
//
// Procedure Forwards
//
////////////////////////////////////////////////////////////////////////
//
// error.c
//
NET_API_STATUS
NlCleanup(
VOID
);
VOID
NlExit(
IN DWORD ServiceError,
IN DWORD Data,
IN NL_EXIT_CODE ExitCode,
IN LPWSTR ErrorString
);
BOOL
GiveInstallHints(
IN BOOL Started
);
VOID
NlControlHandler(
IN DWORD opcode
);
VOID
RaiseAlert(
IN DWORD alert_no,
IN LPWSTR *string_array
);
//
// Nlparse.c
//
BOOL
Nlparse(
VOID
);
//
// announce.c
//
VOID
NlRemovePendingBdc(
IN PSERVER_SESSION ServerSession
);
VOID
NlPrimaryAnnouncementFinish(
IN PSERVER_SESSION ServerSession,
IN DWORD DatabaseId,
IN PLARGE_INTEGER SerialNumber
);
VOID
NlPrimaryAnnouncementTimeout(
VOID
);
VOID
NlPrimaryAnnouncement(
IN DWORD AnnounceFlags
);
#define ANNOUNCE_FORCE 0x01
#define ANNOUNCE_CONTINUE 0x02
#define ANNOUNCE_IMMEDIATE 0x04
VOID
NlLanmanPrimaryAnnouncement(
VOID
);
VOID
NlAnnouncePrimaryStart(
VOID
);
//
// lsrvutil.c
//
BOOL
NlSetPrimaryName(
IN LPWSTR PrimaryName
);
BOOL
NlResetFirstTimeFullSync(
IN DWORD DBIndex
);
NTSTATUS
NlSessionSetup(
IN OUT PCLIENT_SESSION ClientSession
);
BOOLEAN
NlTimeHasElapsed(
IN LARGE_INTEGER StartTime,
IN DWORD Timeout
);
BOOLEAN
NlTimeToReauthenticate(
IN PCLIENT_SESSION ClientSession
);
NTSTATUS
NlNewSessionSetup(
IN LPWSTR primary
);
NTSTATUS
NlAuthenticate(
IN LPWSTR AccountName,
IN NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
IN LPWSTR ComputerName,
IN PNETLOGON_CREDENTIAL ClientCredential,
OUT PNETLOGON_CREDENTIAL ServerCredential,
IN ULONG NegotiatedFlags
);
NET_API_STATUS
NlCreateShare(
LPWSTR SharePath,
LPWSTR ShareName
);
NTSTATUS
NlForceStartupSync(
PDB_INFO DBInfo
);
BOOL
NlCheckUpdateNotices(
IN PNETLOGON_DB_CHANGE UasChange,
IN DWORD UasChangeSize
);
VOID
NlStopReplicator(
VOID
);
BOOL
IsReplicatorRunning(
VOID
);
BOOL
NlStartReplicatorThread(
IN DWORD RandomSleep
);
NTSTATUS
NlSamOpenNamedUser(
IN LPWSTR UserName,
OUT SAMPR_HANDLE *UserHandle OPTIONAL,
OUT PULONG UserId OPTIONAL
);
NTSTATUS
NlChangePassword(
PCLIENT_SESSION ClientSession
);
NTSTATUS
NlCheckMachineAccount(
IN LPWSTR AccountName,
IN NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
);
NTSTATUS
NlOpenSecret(
IN PCLIENT_SESSION ClientSession,
IN ULONG DesiredAccess,
OUT PLSAPR_HANDLE SecretHandle
);
NTSTATUS
NlGetUserPriv(
IN ULONG GroupCount,
IN PGROUP_MEMBERSHIP Groups,
IN ULONG UserRelativeId,
OUT LPDWORD Priv,
OUT LPDWORD AuthFlags
);
//
// netlogon.c
//
int
NlNetlogonMain(
IN DWORD argc,
IN LPWSTR *argv
);
VOID
NlScavenger(
IN LPVOID ScavengerParam
);
BOOL
IsScavengerRunning(
VOID
);
VOID
NlStopScavenger(
VOID
);
BOOL
NlStartScavengerThread(
);
//
// mailslot.c
//
BOOL
NlBrowserOpen(
VOID
);
VOID
NlBrowserClose(
VOID
);
NTSTATUS
NlBrowserSendDatagram(
IN LPSTR OemServerName,
IN LPWSTR TransportName,
IN LPSTR OemMailslotName,
IN PVOID Buffer,
IN ULONG BufferSize
);
VOID
NlBrowserAddName(
VOID
);
VOID
NlMailslotPostRead(
IN BOOLEAN IgnoreDuplicatesOfPreviousMessage
);
BOOL
NlMailslotOverlappedResult(
OUT LPBYTE *Message,
OUT PULONG BytesRead,
OUT LPWSTR *Transport,
OUT PBOOLEAN IgnoreDuplicatesOfPreviousMessage
);
//
// oldstub.c
//
void _fgs__NETLOGON_DELTA_ENUM (NETLOGON_DELTA_ENUM * _source);