|
|
#ifndef _WINSCNF_
#define _WINSCNF_
#ifdef __cplusplus
extern "C" { #endif
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
nmscnf.c
Abstract:
This is the header file to be included for calling functions defined in nmscnf.c file.
Functions:
Portability:
This header is portable.
Author:
Pradeep Bahl (PradeepB) Jan-1993
Revision History:
Modification Date Person Description of Modification ------------------ ------- ---------------------------
--*/
/*
includes */ #include "wins.h"
#include "rpl.h"
#include "winscnst.h"
#if MCAST > 0
#include "rnraddrs.h"
#endif
/*
defines */
/*
macros */
/*
* externs */ struct _WINSCNF_CNF_T; //forward declaration
extern DWORD WinsCnfCnfMagicNo; extern struct _WINSCNF_CNF_T WinsCnf; extern BOOL fWinsCnfRplEnabled; //replication is enabled/disabled
extern BOOL fWinsCnfScvEnabled; //scavenging is enabled/disabled
extern BOOL fWinsCnfReadNextTimeVersNo; //set if vers. no. to use next time
//is read in
FUTURES("use #ifdef PERF around the following three perf. mon. vars") extern BOOL fWinsCnfPerfMonEnabled; //Perf Mon is enabled/disabled
extern BOOL fWinsCnfHighResPerfCntr; //indicates whether the hardware
//supports a high resolution
//perf. counter
extern LARGE_INTEGER LiWinsCnfPerfCntrFreq; //Performance Counter's Frequency
extern CRITICAL_SECTION WinsCnfCnfCrtSec;
extern TCHAR WinsCnfDb[WINS_MAX_FILENAME_SZ]; //db file to hold tables
extern TCHAR WinsCnfStaticDataFile[WINS_MAX_FILENAME_SZ]; //file containing
//static data used
//to initialize WINS
extern BOOL WinsCnfRegUpdThdExists; extern HANDLE WinsCnfNbtHandle; extern PTCHAR pWinsCnfNbtPath; extern BOOL fWinsCnfInitStatePaused; extern BOOL sfNoLimitChk; //to override the limit checks
//
// magic number of the Wins Cnf structure used at process invocation. This
// WinsCnf structure is a global structure. When there is a reconfiguration
// of WINS, we allocate a new WinsCnf structure and copy its contents to
// the global WinsCnf structure. The magic number in the global WinsCnf is
// incremented.
//
#define WINSCNF_INITIAL_CNF_MAGIC_NO 0
#define WINSCNF_FILE_INFO_SZ sizeof(WINSCNF_DATAFILE_INFO_T)
#define WINSCNF_SPEC_GRP_MASK_SZ 32
/*
typedef definitions */
//
// Action to take regarding whether the MemberPrec field of NMSDB_ADD_STATE_T
// table should be set. Used in RplFindOwnerId (called by Pull Thread).
//
typedef enum _WINSCNF_INITP_ACTION_E { WINSCNF_E_INITP = 0, WINSCNF_E_INITP_IF_NON_EXISTENT, WINSCNF_E_IGNORE_PREC } WINSCNF_INITP_ACTION_E, *PWINSCNF_INITP_ACTION_E;
//
// This structure holds information about the file (name and type as
// found in the registry (REG_SZ, REG_EXPAND_SZ) to be used for static
// initialization of WINS
//
typedef struct _WINSCNF_DATAFILE_INFO_T{ TCHAR FileNm[WINS_MAX_FILENAME_SZ]; DWORD StrType; } WINSCNF_DATAFILE_INFO_T, *PWINSCNF_DATAFILE_INFO_T; //
// used to index the array of handles specified to WinsMscWaitUntilSignaled
// in nms.c
//
typedef enum _WINSCNF_HDL_SIGNALED_E { WINSCNF_E_TERM_HDL = 0, WINSCNF_E_WINS_HDL, WINSCNF_E_PARAMETERS_HDL, WINSCNF_E_PARTNERS_HDL, WINSCNF_E_NO_OF_HDLS_TO_MONITOR } WINSCNF_HDL_SIGNALED_E, *PWINSCNF_HDL_SIGNALED_E; //
// The various keys in the WINS configuration (in registry)
//
//
// Don't modify the following enum without looking at TypOfMon[] in winscnf.c
// first
//
typedef enum _WINSCNF_KEY_E { WINSCNF_E_WINS_KEY = 0, WINSCNF_E_PARAMETERS_KEY, WINSCNF_E_SPEC_GRP_MASKS_KEY, WINSCNF_E_DATAFILES_KEY, WINSCNF_E_PARTNERS_KEY, WINSCNF_E_PULL_KEY, WINSCNF_E_PUSH_KEY, WINSCNF_E_ALL_KEYS } WINSCNF_KEY_E, *PWINSCNF_KEY_E;
//
// The states of a WINS
//
typedef enum _WINSCNF_STATE_E { WINSCNF_E_INITING = 0, WINSCNF_E_STEADY_STATE, //not used currently
WINSCNF_E_STEADY_STATE_INITING, //not used currently
WINSCNF_E_RUNNING, WINSCNF_E_INIT_TIME_PAUSE, //paused at initialization time as directed
//via registry
WINSCNF_E_PAUSED, WINSCNF_E_TERMINATING } WINSCNF_STATE_E, *PWINSCNF_STATE_E;
//
// Stores the special groups
//
typedef struct _WINSCNF_SPEC_GRP_MASKS_T { DWORD NoOfSpecGrpMasks; LPSTR pSpecGrpMasks; } WINSCNF_SPEC_GRP_MASKS_T, *PWINSCNF_SPEC_GRP_MASKS_T;
typedef struct _WINSCNF_CC_T { DWORD TimeInt; BOOL fSpTime; DWORD SpTimeInt; DWORD MaxRecsAAT; BOOL fUseRplPnrs; } WINSCNF_CC_T, *PWINSCNF_CC_T;
//
// Stores the 1B names cache used in R_WinsGetBrowserNames
//
typedef struct _DOM_CACHE_T { DWORD NoOfUsers; HANDLE EvtHdl; DWORD EntriesRead; DWORD SzOfBlock; LPVOID pInfo; BOOL bRefresh; } DOM_CACHE_T;
//
// WINSCNF_CNF_T --
// Holds all the configuration information about the WINS
//
typedef struct _WINSCNF_CNF_T { DWORD MagicNo; //Id.
DWORD LogDetailedEvts; //log detailed events
DWORD NoOfProcessors; // No of processors on the WINS machine
DWORD NoOfDbBuffers; //No of buffers to specify to Jet
WINSCNF_SPEC_GRP_MASKS_T SpecGrpMasks; WINSCNF_STATE_E State_e; //State
DWORD RefreshInterval; //Refresh time interval
DWORD TombstoneInterval; //Tombstone time interval
DWORD TombstoneTimeout; //Tombstone timeout
DWORD VerifyInterval; //Verify time interval
DWORD ScvChunk; //# of records to handle at one
//time by the scavenger thread
DWORD MaxNoOfRetries; //Max # of retries for challenges
DWORD RetryInterval; //Retry time interval
LPBYTE pWinsDb; //db file name
DWORD NoOfDataFiles; //no of files to use for static init
PWINSCNF_DATAFILE_INFO_T pStaticDataFile; BOOL fStaticInit; //Do static initialization of WINS
HANDLE WinsKChgEvtHdl; /*event to specify to
*RegNotifyChangeKeyValue */ HANDLE ParametersKChgEvtHdl; /*event to specify to
*RegNotifyChangeKeyValue */ HANDLE PartnersKChgEvtHdl; /*event to specify to
*RegNotifyChangeKeyValue */ HANDLE CnfChgEvtHdl; //Manual reset event to signal on
//to notify other threads of config
//change
HANDLE LogHdl; /*
* Handle to the WINS event log * Used by ReportEvent */ DWORD WinsPriorityClass; //Priority class of the process
DWORD MaxNoOfWrkThds; //Max. no. of worker thds.
int ScvThdPriorityLvl; DWORD MaxRplTimeInterval; //max. rpl time interval
BOOL fRplOnlyWCnfPnrs; //Rpl only with Pull/Push Pnrs
BOOL fAdd1Bto1CQueries; //1B name should prepend responses to queries for 1C names
#if MCAST > 0
BOOL fUseSelfFndPnrs; //Rpl with Pnrs found by self
DWORD McastTtl; // TTL for Mcast packets
DWORD McastIntvl; // Time interval for mcast packets
#endif
BOOL fLoggingOn; //Turn on logging flag
LPBYTE pLogFilePath; //Path to log file
LPBYTE pBackupDirPath; //Path to backup directory
BOOL fDoBackupOnTerm; //To turn on backup on termination
BOOL fPStatic; //Set it TRUE to make static
//records p-static
BOOL fPersonaGrata; // TRUE/FALSE if pPersonaList is persona grata/non-grata
DWORD NoOfPersona; // number of personas in the pPersonas
PCOMM_ADD_T pPersonaList; // list of Personas
DWORD RplType; //Rpl types (defined in winscnf.h)
BOOL fNoRplOnErr; //stop rpl on error
#if PRSCONN
BOOL fPrsConn; //Prs Conn
#endif
WINSCNF_CC_T CC; //Consistency Chk
BOOL fDoSpoofing; BOOL fRandomize1CList; // whether or not to randomize 1C list
// list members.
struct _PULL_T { DWORD MaxNoOfRetries; //no of retries to do in case
//of comm. failure
DWORD NoOfPushPnrs; //No of Push Pnrs
PRPL_CONFIG_REC_T pPullCnfRecs; //ptr. to buff holding
//cnf records for PULL
//thd
DWORD InitTimeRpl; // indicates whether
// Replication
//should be done at invocation
DWORD RplType; //replication type
#if PRSCONN
BOOL fPrsConn; #endif
} PullInfo; struct _PUSH_T {
BOOL fAddChgTrigger; //trigger repl. on address chg
//of entry owned by us
DWORD NoOfPullPnrs; //No of Pull Pnrs
DWORD NoPushRecsWValUpdCnt; PRPL_CONFIG_REC_T pPushCnfRecs; //ptr to buffer holding
//cnf records for PUSH
//thd
DWORD InitTimePush; //indicates whether Push
// notifications should
//be sent at invocation
BOOL PropNetUpdNtf; //set to TRUE if we want
//net triggers to be
//propagated
DWORD RplType; //replication type
#if PRSCONN
BOOL fPrsConn; #endif
} PushInfo; } WINSCNF_CNF_T, *PWINSCNF_CNF_T; /*
function declarations */
#if USENETBT > 0
extern STATUS WinsCnfReadNbtDeviceName( VOID ); #endif
extern STATUS WinsCnfInitConfig( VOID );
extern VOID WinsCnfSetLastUpdCnt( PWINSCNF_CNF_T pWinsCnf ); extern VOID WinsCnfReadRegInfo( PWINSCNF_CNF_T pWinsCnf );
extern VOID WinsCnfCopyWinsCnf( WINS_CLIENT_E Client_e, PWINSCNF_CNF_T pSrc );
extern LPVOID WinsCnfGetNextRplCnfRec( PRPL_CONFIG_REC_T pCnfRec, RPL_REC_TRAVERSAL_E RecTrv_e );
extern VOID WinsCnfAskToBeNotified( WINSCNF_KEY_E Key_e );
extern VOID WinsCnfDeallocCnfMem( PWINSCNF_CNF_T pWinsCnf );
extern VOID WinsCnfReadWinsInfo( PWINSCNF_CNF_T pWinsCnf );
extern VOID WinsCnfReadPartnerInfo( PWINSCNF_CNF_T pWinsCnf );
extern VOID WinsCnfOpenSubKeys( VOID ); extern VOID WinsCnfCloseKeys( VOID );
extern VOID WinsCnfCloseSubKeys( VOID );
extern STATUS WinsCnfGetNamesOfDataFiles( IN PWINSCNF_CNF_T pWinsCnf );
extern DWORD WinsCnfWriteReg( LPVOID pTmp );
extern STATUS WinsCnfInitLog( VOID );
#if MCAST > 0
extern STATUS WinsCnfAddPnr( RPL_RR_TYPE_E PnrType_e, LPBYTE pPnrAdd );
extern STATUS WinsCnfDelPnr( RPL_RR_TYPE_E PnrType_e, LPBYTE pPnrAdd );
#endif
#ifdef DBGSVC
extern VOID WinsCnfReadWinsDbgFlagValue( VOID ); #endif
#ifdef __cplusplus
} #endif
#endif //_WINSCNF_
|