windows-nt/Source/XPSP1/NT/net/wins/server/inc/winscnf.h
2020-09-26 16:20:57 +08:00

452 lines
13 KiB
C

#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_