mirror of https://github.com/lianthony/NT4.0
392 lines
6.5 KiB
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);
|