/*++ Copyright (c) 1994 Microsoft Corporation Module Name: global.h Abstract: This module contains definitions for global server data. Author: Colin Watson (colinw) 14-Apr-1997 Environment: User Mode - Win32 Revision History: --*/ #ifndef GLOBAL_DATA_ALLOCATED #ifdef GLOBAL_DATA_ALLOCATE #undef GLOBAL_DATA #endif #endif #ifndef GLOBAL_DATA #define GLOBAL_DATA // // main.c will #include this file with GLOBAL_DATA_ALLOCATE defined. // That will cause each of these variables to be allocated. // #ifdef GLOBAL_DATA_ALLOCATE #undef EXTERN #define EXTERN #define GLOBAL_DATA_ALLOCATED #undef INIT_GLOBAL #define INIT_GLOBAL(v) =v #else #define EXTERN extern #define INIT_GLOBAL(v) #endif // // process global data passed to this service from tcpsvcs.exe // EXTERN PTCPSVCS_GLOBAL_DATA TcpsvcsGlobalData; // // Service variables // EXTERN SERVICE_STATUS BinlGlobalServiceStatus; EXTERN SERVICE_STATUS_HANDLE BinlGlobalServiceStatusHandle; // // Process data. // #define BINL_STOPPED 0 #define BINL_STARTED 1 EXTERN DWORD BinlCurrentState INIT_GLOBAL(BINL_STOPPED); EXTERN HANDLE BinlGlobalProcessTerminationEvent INIT_GLOBAL(NULL); EXTERN HANDLE BinlGlobalProcessorHandle; EXTERN HANDLE BinlGlobalMessageHandle; EXTERN LIST_ENTRY BinlGlobalFreeRecvList; EXTERN LIST_ENTRY BinlGlobalActiveRecvList; EXTERN CRITICAL_SECTION BinlGlobalRecvListCritSect; EXTERN HANDLE BinlGlobalRecvEvent INIT_GLOBAL(NULL); EXTERN int DHCPState INIT_GLOBAL(DHCP_STOPPED); EXTERN BOOL BinlGlobalSystemShuttingDown; // Temporary defaults until GPT lookup available EXTERN PWCHAR BinlGlobalDefaultContainer INIT_GLOBAL(NULL); EXTERN PWCHAR DefaultDomain INIT_GLOBAL(NULL); #define DEFAULT_MAXIMUM_DEBUGFILE_SIZE 20000000 EXTERN DWORD BinlGlobalDebugFlag; EXTERN CRITICAL_SECTION BinlGlobalDebugFileCritSect; EXTERN HANDLE BinlGlobalDebugFileHandle; EXTERN DWORD BinlGlobalDebugFileMaxSize; EXTERN LPWSTR BinlGlobalDebugSharePath; EXTERN DWORD BinlLdapOptReferrals INIT_GLOBAL(0); // // misc // // // We don't wait forever for the DS to come back with a reply. // #define BINL_LDAP_SEARCH_TIMEOUT_SECONDS 30 #define BINL_LDAP_SEARCH_MIN_TIMEOUT_MSECS 500 EXTERN struct l_timeval BinlLdapSearchTimeout; EXTERN DWORD BinlGlobalIgnoreBroadcastFlag; // whether to ignore the broadcast // bit in the client requests or not EXTERN HANDLE g_hevtProcessMessageComplete; EXTERN DWORD g_cMaxProcessingThreads; EXTERN DWORD g_cProcessMessageThreads; EXTERN CRITICAL_SECTION g_ProcessMessageCritSect; EXTERN CRITICAL_SECTION gcsDHCPBINL; EXTERN CRITICAL_SECTION gcsParameters; EXTERN LPENDPOINT BinlGlobalEndpointList INIT_GLOBAL(NULL); EXTERN DWORD BinlGlobalNumberOfNets; EXTERN DWORD g_Port; EXTERN BOOL AllowNewClients INIT_GLOBAL(TRUE); EXTERN BOOL LimitClients INIT_GLOBAL(FALSE); EXTERN BOOL AssignNewClientsToServer INIT_GLOBAL(FALSE); // // As part of rogue detection, the default for servers should be to not answer // for new clients. We'll get the ability to answer clients out of // the directory. // EXTERN BOOL AnswerRequests INIT_GLOBAL(TRUE); EXTERN BOOL AnswerOnlyValidClients INIT_GLOBAL(TRUE); EXTERN WCHAR NewMachineNamingPolicyDefault[] INIT_GLOBAL(L"%Username%#"); EXTERN PWCHAR NewMachineNamingPolicy INIT_GLOBAL(NULL); EXTERN DWORD CurrentClientCount INIT_GLOBAL(0); EXTERN DWORD BinlMaxClients INIT_GLOBAL(0); EXTERN DWORD BinlClientTimeout INIT_GLOBAL(0); EXTERN DWORD BinlUpdateFromDSTimeout INIT_GLOBAL(4*60*60*1000); // milliseconds (4 hours) EXTERN DWORD BinlHyperUpdateCount INIT_GLOBAL(0); EXTERN BOOL BinlHyperUpdateSatisfied INIT_GLOBAL(FALSE); EXTERN BOOL BinlParametersRead INIT_GLOBAL(FALSE); EXTERN PWCHAR BinlGlobalSCPPath INIT_GLOBAL(NULL); EXTERN PWCHAR BinlGlobalServerDN INIT_GLOBAL(NULL); EXTERN PWCHAR BinlGlobalGroupDN INIT_GLOBAL(NULL); EXTERN CRITICAL_SECTION ClientsCriticalSection; EXTERN LIST_ENTRY ClientsQueue; EXTERN CRITICAL_SECTION HackWorkaroundCriticalSection; // // By default, we cache DS responses for 25 seconds. It's relatively short // because we have no way of cheeply getting notified of DS changes. // #define BINL_CACHE_EXPIRE_DEFAULT (25*1000) // // We maintain a list of BINL_CACHE_ENTRY structures for short term caching. // The root of the list is in BinlCacheList and the lock that protects the // list is BinlCacheListLock. We expire these cache entries after a given // time period has expired (BinlCacheExpireMilliseconds holds it). // EXTERN LIST_ENTRY BinlCacheList; EXTERN CRITICAL_SECTION BinlCacheListLock; EXTERN ULONG BinlCacheExpireMilliseconds; // // When waiting for the threads to be done with the cache, we wait on the // BinlCloseCacheEvent event. // EXTERN HANDLE BinlCloseCacheEvent INIT_GLOBAL(NULL); // // default for max number to cache is 250. This seems reasonable number to // cache for at most BinlCacheExpireMilliseconds. // #define BINL_CACHE_COUNT_LIMIT_DEFAULT 250 EXTERN ULONG BinlGlobalCacheCountLimit; EXTERN DWORD BinlGlobalScavengerSleep; // in milliseconds #if DBG EXTERN BOOL BinlGlobalRunningAsProcess; #endif EXTERN ULONG BinlMinDelayResponseForNewClients; // // Remote boot path - as in "D:\RemoteInstall" with no trailing slash // EXTERN WCHAR IntelliMirrorPathW[ MAX_PATH ]; EXTERN CHAR IntelliMirrorPathA[ MAX_PATH ]; // // Default language to look for oschooser screens/setups in. // EXTERN PWCHAR BinlGlobalDefaultLanguage INIT_GLOBAL(NULL); EXTERN DHCP_ROGUE_STATE_INFO DhcpRogueInfo; EXTERN BOOL BinlGlobalHaveCalledRogueInit INIT_GLOBAL(FALSE); EXTERN BOOL BinlGlobalAuthorized INIT_GLOBAL(FALSE); EXTERN BOOL BinlRogueLoggedState INIT_GLOBAL(FALSE); EXTERN HANDLE BinlRogueTerminateEventHandle INIT_GLOBAL(NULL); EXTERN HANDLE RogueUnauthorizedHandle INIT_GLOBAL(NULL); EXTERN HANDLE BinlRogueThread INIT_GLOBAL(NULL); // // PNP globals. // EXTERN PDNS_ADDRESS_INFO BinlDnsAddressInfo INIT_GLOBAL(NULL); EXTERN ULONG BinlDnsAddressInfoCount INIT_GLOBAL(0); EXTERN BOOL BinlIsMultihomed INIT_GLOBAL(FALSE); EXTERN DHCP_IP_ADDRESS BinlGlobalMyIpAddress INIT_GLOBAL(0); EXTERN SOCKET BinlPnpSocket INIT_GLOBAL(INVALID_SOCKET); EXTERN WSAOVERLAPPED BinlPnpOverlapped; EXTERN HANDLE BinlGlobalPnpEvent INIT_GLOBAL(NULL); // // The four strings below are protected by the gcsParameters critical section. // EXTERN PWCHAR BinlGlobalOurDnsName INIT_GLOBAL(NULL); // our dns name EXTERN PWCHAR BinlGlobalOurDomainName INIT_GLOBAL(NULL);// our netbios domain name EXTERN PWCHAR BinlGlobalOurServerName INIT_GLOBAL(NULL);// our netbios server name EXTERN PWCHAR BinlGlobalOurFQDNName INIT_GLOBAL(NULL); // our distinguished name EXTERN HANDLE BinlGlobalLsaDnsNameNotifyEvent INIT_GLOBAL(NULL); EXTERN BOOL BinlGlobalHaveOutstandingLsaNotify INIT_GLOBAL(FALSE); // // Default organization to use in .sifs. // EXTERN PWCHAR BinlGlobalDefaultOrgname INIT_GLOBAL(NULL); // // Default timezone index to use in .sifs // EXTERN PWCHAR BinlGlobalDefaultTimezone INIT_GLOBAL(NULL); // // Default DS servers // EXTERN PWCHAR BinlGlobalDefaultDS INIT_GLOBAL(NULL); EXTERN PWCHAR BinlGlobalDefaultGC INIT_GLOBAL(NULL); // // The number of times we'll retry before giving up on the DS. // #define LDAP_SERVER_DOWN_LIMIT 4 // number of times to retry #define LDAP_BUSY_LIMIT 15 // number of times to retry #define LDAP_BUSY_DELAY 250 // milliseconds to wait EXTERN ULONG BinlGlobalLdapErrorCount INIT_GLOBAL(0); EXTERN ULONG BinlGlobalMaxLdapErrorsLogged INIT_GLOBAL(0); EXTERN ULONG BinlGlobalLdapErrorScavenger INIT_GLOBAL(0); // // Used to crack names // EXTERN HANDLE BinlOscClientDSHandle INIT_GLOBAL(NULL); #endif // GLOBAL_DATA*