You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
7.2 KiB
244 lines
7.2 KiB
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: Locals.cpp
|
|
* Content: Global variables for the DNWsock service provider
|
|
*
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 11/25/98 jtk Created
|
|
***************************************************************************/
|
|
|
|
#include "dnwsocki.h"
|
|
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
#if ((! defined(WINCE)) && (! defined(_XBOX)))
|
|
//
|
|
// DLL instance
|
|
//
|
|
HINSTANCE g_hDLLInstance = NULL;
|
|
#endif // ! WINCE and ! _XBOX
|
|
#ifdef _XBOX
|
|
BOOL g_fStartedXNet = FALSE;
|
|
#endif // _XBOX
|
|
|
|
#ifndef DPNBUILD_LIBINTERFACE
|
|
//
|
|
// count of outstanding COM interfaces
|
|
//
|
|
volatile LONG g_lOutstandingInterfaceCount = 0;
|
|
#endif // ! DPNBUILD_LIBINTERFACE
|
|
|
|
|
|
#ifndef DPNBUILD_ONLYONETHREAD
|
|
//
|
|
// thread count
|
|
//
|
|
LONG g_iThreadCount = 0;
|
|
#endif // ! DPNBUILD_ONLYONETHREAD
|
|
|
|
#ifndef DPNBUILD_NOREGISTRY
|
|
#if ((! defined(DPNBUILD_NOWINSOCK2)) && (! defined(DPNBUILD_ONLYWINSOCK2)))
|
|
DWORD g_dwWinsockVersion = 0;
|
|
#endif // ! DPNBUILD_NOWINSOCK2 and ! DPNBUILD_ONLYWINSOCK2
|
|
#endif // ! DPNBUILD_NOREGISTRY
|
|
|
|
//
|
|
// Winsock receive buffer size
|
|
//
|
|
BOOL g_fWinsockReceiveBufferSizeOverridden = FALSE;
|
|
INT g_iWinsockReceiveBufferSize = 0;
|
|
|
|
|
|
#ifndef DPNBUILD_NONATHELP
|
|
//
|
|
// global NAT/firewall traversal information
|
|
//
|
|
#ifndef DPNBUILD_NOREGISTRY
|
|
BOOL g_fDisableDPNHGatewaySupport = FALSE;
|
|
BOOL g_fDisableDPNHFirewallSupport = FALSE;
|
|
DWORD g_dwDefaultTraversalMode = DPNA_TRAVERSALMODE_PORTREQUIRED;
|
|
#endif // ! DPNBUILD_NOREGISTRY
|
|
|
|
IDirectPlayNATHelp ** g_papNATHelpObjects = NULL;
|
|
#ifndef DPNBUILD_NOLOCALNAT
|
|
BOOL g_fLocalNATDetectedAtStartup = FALSE;
|
|
#endif // ! DPNBUILD_NOLOCALNAT
|
|
#endif // ! DPNBUILD_NONATHELP
|
|
|
|
#ifndef DPNBUILD_NOREGISTRY
|
|
|
|
#if ((defined(WINNT)) && (! defined(DPNBUILD_NOMULTICAST)))
|
|
BOOL g_fDisableMadcapSupport = FALSE;
|
|
MCAST_CLIENT_UID g_mcClientUid;
|
|
#endif // WINNT and not DPNBUILD_NOMULTICAST
|
|
|
|
//
|
|
// ignore enums performance option
|
|
//
|
|
BOOL g_fIgnoreEnums = FALSE;
|
|
|
|
//
|
|
// disconnect upon reception of ICMP port not reachable option
|
|
//
|
|
BOOL g_fDisconnectOnICMP = FALSE;
|
|
|
|
#ifndef DPNBUILD_NOIPV6
|
|
//
|
|
// IPv4 only/IPv6 only/hybrid setting
|
|
//
|
|
int g_iIPAddressFamily = PF_INET;
|
|
#endif // ! DPNBUILD_NOIPV6
|
|
|
|
//
|
|
// IP banning globals
|
|
//
|
|
CHashTable * g_pHashBannedIPv4Addresses = NULL;
|
|
DWORD g_dwBannedIPv4Masks = 0;
|
|
|
|
//
|
|
// proxy support options
|
|
//
|
|
#ifndef DPNBUILD_NOWINSOCK2
|
|
BOOL g_fDontAutoDetectProxyLSP = FALSE;
|
|
#endif // ! DPNBUILD_NOWINSOCK2
|
|
BOOL g_fTreatAllResponsesAsProxied = FALSE;
|
|
|
|
//
|
|
// settings for overriding MTU
|
|
//
|
|
DWORD g_dwMaxUserDataSize = DEFAULT_MAX_USER_DATA_SIZE;
|
|
DWORD g_dwMaxEnumDataSize = DEFAULT_MAX_ENUM_DATA_SIZE;
|
|
|
|
//
|
|
// default port range
|
|
//
|
|
WORD g_wBaseDPlayPort = BASE_DPLAY8_PORT;
|
|
WORD g_wMaxDPlayPort = MAX_DPLAY8_PORT;
|
|
|
|
#endif // ! DPNBUILD_NOREGISTRY
|
|
|
|
|
|
//
|
|
// ID of most recent endpoint generated
|
|
//
|
|
DWORD g_dwCurrentEndpointID = 0;
|
|
|
|
|
|
#ifdef DBG
|
|
//
|
|
// Bilink for tracking DPNWSock critical sections
|
|
//
|
|
CBilink g_blDPNWSockCritSecsHeld;
|
|
#endif // DBG
|
|
|
|
|
|
#ifdef DPNBUILD_WINSOCKSTATISTICS
|
|
//
|
|
// Winsock debugging/tuning stats
|
|
//
|
|
DWORD g_dwWinsockStatNumSends = 0;
|
|
DWORD g_dwWinsockStatSendCallTime = 0;
|
|
#endif // DPNBUILD_WINSOCKSTATISTICS
|
|
|
|
|
|
|
|
#ifndef DPNBUILD_NOREGISTRY
|
|
//
|
|
// registry strings
|
|
//
|
|
const WCHAR g_RegistryBase[] = L"SOFTWARE\\Microsoft\\DirectPlay8";
|
|
|
|
const WCHAR g_RegistryKeyReceiveBufferSize[] = L"WinsockReceiveBufferSize";
|
|
#ifndef DPNBUILD_ONLYONETHREAD
|
|
const WCHAR g_RegistryKeyThreadCount[] = L"ThreadCount";
|
|
#endif // ! DPNBUILD_ONLYONETHREAD
|
|
|
|
#if ((! defined(DPNBUILD_NOWINSOCK2)) && (! defined(DPNBUILD_ONLYWINSOCK2)))
|
|
const WCHAR g_RegistryKeyWinsockVersion[] = L"WinsockVersion";
|
|
#endif // ! DPNBUILD_NOWINSOCK2 and ! DPNBUILD_ONLYWINSOCK2
|
|
|
|
#ifndef DPNBUILD_NONATHELP
|
|
const WCHAR g_RegistryKeyDisableDPNHGatewaySupport[] = L"DisableDPNHGatewaySupport";
|
|
const WCHAR g_RegistryKeyDisableDPNHFirewallSupport[] = L"DisableDPNHFirewallSupport";
|
|
const WCHAR g_RegistryKeyTraversalModeSettings[] = L"TraversalModeSettings";
|
|
const WCHAR g_RegistryKeyDefaultTraversalMode[] = L"DefaultTraversalMode";
|
|
#endif // !DPNBUILD_NONATHELP
|
|
|
|
const WCHAR g_RegistryKeyAppsToIgnoreEnums[] = L"AppsToIgnoreEnums";
|
|
const WCHAR g_RegistryKeyAppsToDisconnectOnICMP[] = L"AppsToDisconnectOnICMP";
|
|
|
|
#ifndef DPNBUILD_NOIPV6
|
|
const WCHAR g_RegistryKeyIPAddressFamilySettings[] = L"IPAddressFamilySettings";
|
|
const WCHAR g_RegistryKeyDefaultIPAddressFamily[]= L"DefaultIPAddressFamily";
|
|
#endif // ! DPNBUILD_NOIPV6
|
|
|
|
#ifndef DPNBUILD_NOWINSOCK2
|
|
const WCHAR g_RegistryKeyDontAutoDetectProxyLSP[] = L"DontAutoDetectProxyLSP";
|
|
#endif // ! DPNBUILD_NOWINSOCK2
|
|
const WCHAR g_RegistryKeyTreatAllResponsesAsProxied[] = L"TreatAllResponsesAsProxied";
|
|
|
|
#if ((defined(WINNT)) && (! defined(DPNBUILD_NOMULTICAST)))
|
|
const WCHAR g_RegistryKeyDisableMadcapSupport[] = L"DisableMadcapSupport";
|
|
#endif // WINNT and not DPNBUILD_NOMULTICAST
|
|
|
|
const WCHAR g_RegistryKeyBannedIPv4Addresses[] = L"BannedIPv4Addresses";
|
|
|
|
const WCHAR g_RegistryKeyMaxUserDataSize[] = L"MaxUserDataSize";
|
|
const WCHAR g_RegistryKeyMaxEnumDataSize[] = L"MaxEnumDataSize";
|
|
|
|
const WCHAR g_RegistryKeyBaseDPlayPort[] = L"BaseDPlayPort";
|
|
const WCHAR g_RegistryKeyMaxDPlayPort[] = L"MaxDPlayPort";
|
|
|
|
#endif // ! DPNBUILD_NOREGISTRY
|
|
|
|
//
|
|
// GUIDs for munging device and scope IDs
|
|
//
|
|
// {4CE725F4-7B00-4397-BA6F-11F965BC4299}
|
|
GUID g_IPSPEncryptionGuid = { 0x4ce725f4, 0x7b00, 0x4397, { 0xba, 0x6f, 0x11, 0xf9, 0x65, 0xbc, 0x42, 0x99 } };
|
|
|
|
#ifndef DPNBUILD_NOIPX
|
|
// {CA734945-3FC1-42ea-BF49-84AFCD4764AA}
|
|
GUID g_IPXSPEncryptionGuid = { 0xca734945, 0x3fc1, 0x42ea, { 0xbf, 0x49, 0x84, 0xaf, 0xcd, 0x47, 0x64, 0xaa } };
|
|
#endif // ! DPNBUILD_NOIPX
|
|
|
|
|
|
#ifndef DPNBUILD_NOIPV6
|
|
//
|
|
// IPv6 link-local multicast address for enumerating DirectPlay sessions
|
|
//
|
|
#pragma TODO(vanceo, "\"Standardize\" enum multicast address?")
|
|
const IN6_ADDR c_in6addrEnumMulticast = {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0x01,0x30};
|
|
#endif // ! DPNBUILD_NOIPV6
|
|
|
|
|
|
|
|
|
|
//**********************************************************************
|
|
// Function prototypes
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Function definitions
|
|
//**********************************************************************
|
|
|