452 lines
13 KiB
C
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_
|