Leaked source code of windows server 2003
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.
|
|
#ifndef _NMS_
#define _NMS_
#ifdef __cplusplus
extern "C" { #endif
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
nms.h
Abstract:
This is the header file for the name space manager component of the Name Server.
Author:
Pradeep Bahl (PradeepB) Dec-1992
Revision History:
--*/
/*
includes */
#include "wins.h"
#include "comm.h"
/*
defines */
#ifdef WINSDBG
FUTURES("Put all in a structure") extern DWORD NmsGenHeapAlloc; extern DWORD NmsDlgHeapAlloc; extern DWORD NmsUdpDlgHeapAlloc; extern DWORD NmsTcpMsgHeapAlloc; extern DWORD NmsUdpHeapAlloc; extern DWORD NmsQueHeapAlloc; extern DWORD NmsAssocHeapAlloc; extern DWORD NmsRpcHeapAlloc; extern DWORD NmsRplWrkItmHeapAlloc; extern DWORD NmsChlHeapAlloc; extern DWORD NmsTmmHeapAlloc; extern DWORD NmsCatchAllHeapAlloc;
extern DWORD NmsHeapAllocForList;
extern DWORD NmsGenHeapFree; extern DWORD NmsDlgHeapFree; extern DWORD NmsUdpDlgHeapFree; extern DWORD NmsTcpMsgHeapFree; extern DWORD NmsUdpHeapFree; extern DWORD NmsQueHeapFree; extern DWORD NmsAssocHeapFree; extern DWORD NmsRpcHeapFree; extern DWORD NmsRplWrkItmHeapFree; extern DWORD NmsChlHeapFree; extern DWORD NmsTmmHeapFree; extern DWORD NmsCatchAllHeapFree;
extern DWORD NmsHeapCreate; extern DWORD NmsHeapDestroy;
//
// Count of updates (to version number) made by WINS.
//
extern DWORD NmsRplUpd; extern DWORD NmsRplGUpd; extern DWORD NmsNmhUpd; extern DWORD NmsNmhGUpd; extern DWORD NmsNmhRelUpd; extern DWORD NmsNmhRelGUpd; extern DWORD NmsScvUpd; extern DWORD NmsScvGUpd; extern DWORD NmsChlUpd; extern DWORD NmsChlGUpd; extern DWORD NmsRpcUpd; extern DWORD NmsRpcGUpd; extern DWORD NmsOthUpd; extern DWORD NmsOthGUpd;
#if DBG
//
// No of reg/ref/rel requests dropped because of WINS hitting the threshold
// of max. requets on its queue. Used by InsertOtherNbtWorkItem
//
extern volatile DWORD NmsRegReqQDropped; #endif
//
// NmsUpdCtrs[Client][TypeOfUpd][TypeOfRec][StateOfNewRec][VersNoInc]
//
extern DWORD NmsUpdCtrs[WINS_NO_OF_CLIENTS][2][4][3][2]; extern CRITICAL_SECTION NmsHeapCrtSec; #endif
#define NMS_OPCODE_MASK 0x78 /*to weed out the 4 bits of the 3rd byte
* of the name packet */ #define NMS_RESPONSE_MASK 0x80 /*to weed out the bit that indicates
* whether the datagram is a request or * a response */ /*
macros */
/*
* NMSISNBT_M -- Is this an nbt request message * * Examines the third byte of the message to determine this */ #define NMSISNBT_M(pMsg) \
(((*(pMsg + 2) & NMS_OPCODE_MASK) >> 3) != WINS_IS_NOT_NBT)
/*
* NMSISRPL_M -- Is this a replicator message * * Examines the third byte of the message to determine this */ #define NMSISRPL_MSG_M(pMsg ) \
(((*(pMsg + 2) & NMS_OPCODE_MASK) >> 3) == WINS_IS_NOT_NBT)
/*
GEN_INIT_BUFF_HEAP_SIZE -- This is the initial size of the heap for allocating queue items for the various queues, TLS storage, for reading in a file,etc. Keep it 1000 */ #define GEN_INIT_BUFF_HEAP_SIZE 1000
//
// RPC_INIT_BUFF_HEAP_SIZE -- This is the initial size of the heap for
// use by rpc
//
#define RPC_INIT_BUFF_HEAP_SIZE 1000
#define RPL_WRKITM_BUFF_HEAP_SIZE 1000 //1000 bytes
//
// Initial heap size for timer work items
//
#define TMM_INIT_HEAP_SIZE 1000
//
// The maximum number of concurrent RPC calls allowed
//
FUTURES("Move these defines to winsthd.h") #define NMS_MAX_RPC_CALLS 15
#define NMS_MAX_BROWSER_RPC_CALLS (NMS_MAX_RPC_CALLS - 4)
//
// Minimum number of RPC call threads
//
#define NMS_MIN_RPC_CALL_THDS 2
//
// This is the amount of time the service controller is asked to wait
//
#define MSECS_WAIT_WHEN_DEL_WINS 120000 //from ReadOwnAddTbl
/*
structure definitions */
/*
QUERY_RSP -- structure used to hold the information that needs to be sent in a positive name query response message */
typedef struct { DWORD CountOfIPAdd; //it is a DWORD for alignment
DWORD IPAdd[1]; //one or more IP addresses start here.
} QUERY_RSP;
#ifdef WINSDBG
typedef struct _PUSH_CTRS_T { DWORD NoUpdNtfAcc; DWORD NoUpdNtfRej; DWORD NoSndEntReq; DWORD NoAddVersReq; DWORD NoUpdNtfReq; DWORD NoUpdVersReq; DWORD NoInvReq; } PUSH_CTRS_T, *PPUSH_CTRS_T;
typedef struct _PULL_CTRS_T { DWORD PH; } PULL_CTRS_T, *PPULL_CTRS_T; typedef struct _NMS_CTRS_T { PUSH_CTRS_T RplPushCtrs; PULL_CTRS_T RplPullCtrs; } NMS_CTRS_T, *PNMS_CTRS_T; #endif
/*
externs */ #ifdef WINSDBG
extern NMS_CTRS_T NmsCtrs; #endif
extern HANDLE NmsMainTermEvt; extern HANDLE NmsTermEvt; extern CRITICAL_SECTION NmsTermCrtSec; extern HANDLE NmsCrDelNbtThdEvt; extern DWORD NmsNoOfNbtThds; extern DWORD NmsTotalTrmThdCnt;
extern BOOL fNmsThdOutOfReck;
extern VERS_NO_T NmsRangeSize; extern VERS_NO_T NmsHalfRangeSize; extern VERS_NO_T NmsVersNoToStartFromNextTime; extern VERS_NO_T NmsHighWaterMarkVersNo;
extern DWORD NmsNoOfRpcCallsToDb; //
// required for security checking. The types are defined in ntseapi.h
//
extern GENERIC_MAPPING NmsInfoMapping; extern PSECURITY_DESCRIPTOR pNmsSecurityDescriptor;
FUTURES("move to winsque.h") extern HANDLE GenBuffHeapHdl; //handle to heap for use for general
//allocation
extern HANDLE NmsRpcHeapHdl; //handle to heap for use for allocation
//by rpc
extern COMM_ADD_T NmsLocalAdd; //WINS's Address
extern BOOL fNmsAbruptTerm; extern BOOL fNmsMainSessionActive;
#ifdef TEST_DATA
extern HANDLE NmsFileHdl; #endif
#ifdef DBGSVC
extern HANDLE NmsDbgFileHdl; //extern FILE *pNmsDbgFile;
#endif
extern CRITICAL_SECTION WinsIntfNoOfUsersCrtSec; /*
function definitions */
//
// Handler used for interfacing with the service controller
//
extern VOID NmsServiceControlHandler( IN DWORD Opcode );
extern VOID ENmsHandleMsg( PCOMM_HDL_T pDlgHdl, MSG_T pMsg, MSG_LEN_T MsgLen );
extern VOID ENmsWinsUpdateStatus( DWORD MSecsToWait );
#ifdef WINSDBG
extern VOID NmsPrintCtrs( VOID ); #endif
#ifndef WINS_INTERACTIVE
extern VOID NmsChkDbgFileSz( VOID ); #endif
#ifdef __cplusplus
} #endif
#endif //_NMS_
|