#ifndef _NMSNMH_ #define _NMSNMH_ #ifdef __cplusplus extern "C" { #endif /*++ Copyright (c) 1989 Microsoft Corporation Module Name: nmsnmh.h Abstract: 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 "nmsdb.h" #include "comm.h" #include "nmsmsgf.h" #include "nms.h" /* defines */ extern BOOL NmsNmhRegThdExists; /* macros */ #define NMSNMH_VERS_NO_EQ_ZERO_M(VersNo) ((VersNo).QuadPart == 0) #define NMSNMH_INC_VERS_NO_M(VersNoToInc, TgtVersNo) { \ (TgtVersNo).QuadPart = LiAdd((VersNoToInc), NmsNmhIncNo); \ } #define NMSNMH_DEC_VERS_NO_M(VersNoToDec, TgtVersNo) { \ (TgtVersNo).QuadPart = LiSub((VersNoToDec), NmsNmhIncNo); \ } #define NMSNMH_INC_VERS_COUNTER_M2(VersNoToInc, TgtVersNo) { \ if (LiGtr((VersNoToInc), NmsHighWaterMarkVersNo)) \ { \ DWORD ThdId;\ HANDLE ThdHdl;\ if(!WinsCnfRegUpdThdExists) { \ WinsCnfRegUpdThdExists = TRUE; \ ThdHdl = WinsMscCreateThd(WinsCnfWriteReg, NULL, &ThdId); \ CloseHandle(ThdHdl); \ } \ } \ NMSNMH_INC_VERS_NO_M((VersNoToInc), (TgtVersNo)); \ } #define NMSNMH_INC_VERS_COUNTER_M(VersNoToInc, TgtVersNo) \ NMSNMH_INC_VERS_COUNTER_M2(VersNoToInc, TgtVersNo) #ifdef WINSDBG #if 0 #define NMSNMH_UPD_UPD_CTRS_M(pRowInfo) { \ IF_DBG(UPD_CNTRS) \ { \ PWINSTHD_TLS_T _pTls; \ _pTls = TlsGetValue(WinsTlsIndex); /*GET_TLS_M(_pTls); */\ switch(_pTls->Client_e) \ { \ case(WINS_E_RPLPULL): NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsRplUpd++ : NmsRplGUpd++; break; \ case(WINS_E_NMSNMH): NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsNmhUpd++ : NmsNmhGUpd++; break; \ case(WINS_E_NMSCHL): NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsChlUpd++ : NmsChlGUpd++; break;\ case(WINS_E_NMSSCV): NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsScvUpd++ : NmsScvGUpd++; break; \ case(WINS_E_WINSRPC): NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsRpcUpd++ : NmsRpcGUpd++; break; \ default: NMSDB_ENTRY_UNIQUE_M(pRowInfo->EntTyp) ? NmsOthUpd++ : NmsOthGUpd++; break; \ } \ } \ } #endif #define NMSNMH_UPD_UPD_CTRS_M(fIndexUpd, fUpd, pRowInfo) { \ IF_DBG(UPD_CNTRS) \ { \ PWINSTHD_TLS_T _pTls; \ _pTls = TlsGetValue(WinsTlsIndex); /*GET_TLS_M(_pTls); */\ NmsUpdCtrs[_pTls->Client_e][fUpd][pRowInfo->EntTyp][pRowInfo->EntryState_e][fIndexUpd]++; \ } \ } #else #define NMSNMH_UPD_UPD_CTRS_M(fIndexUpd, fUpd, pRowInfo) #endif /* externs */ /* NmsNmhMyMaxVersNo -- Stores highest version no. for entries owned by the local WINS in its local db */ extern VERS_NO_T NmsNmhMyMaxVersNo; extern VERS_NO_T NmsNmhIncNo; /* NmsNmhNamRegCrtSect -- Variable for the critical section entered when name registrations or refreshes need to be done */ extern CRITICAL_SECTION NmsNmhNamRegCrtSec; /* typedef definitions */ /* NMSNMH_QUERY_RSP_T -- this contains the addresses found in a group entry. -- not being used currently */ typedef struct _NMSNMH_QUERY_RSP_T { BOOL fGrp; //is it rsp. for a group WORD NoOfAdd; //no of addresses in the group COMM_ADD_T NodeAdd[NMSDB_MAX_MEMS_IN_GRP]; //addresses } NMSNMH_QUERY_RSP_T, *PNMSNMH_QUERY_RSP_T; /* function prototypes */ extern STATUS NmsNmhNamRegInd( IN PCOMM_HDL_T pDlgHdl, IN LPBYTE pName, IN DWORD NameLen, IN PCOMM_ADD_T pNodeAdd, IN BYTE NodeTyp, //change to take Flag byte IN MSG_T pMsg, IN MSG_LEN_T MsgLen, IN DWORD QuesNamSecLen, IN BOOL fRefresh, IN BOOL fStatic, IN BOOL fAdmin ); extern STATUS NmsNmhNamRegGrp( IN PCOMM_HDL_T pDlgHdl, IN PBYTE pName, IN DWORD NameLen, IN PNMSMSGF_CNT_ADD_T pCntAdd, IN BYTE NodeTyp, IN MSG_T pMsg, IN MSG_LEN_T MsgLen, IN DWORD QuesNamSecLen, IN DWORD TypeOfRec, IN BOOL fRefresh, IN BOOL fStatic, IN BOOL fAdmin ); extern STATUS NmsNmhNamRel( IN PCOMM_HDL_T pDlgHdl, IN LPBYTE pName, IN DWORD NameLen, IN PCOMM_ADD_T pNodeAdd, IN BOOL fGrp, IN MSG_T pMsg, IN MSG_LEN_T MsgLen, IN DWORD QuesNamSecLen, IN BOOL fAdmin ); extern STATUS NmsNmhNamQuery( IN PCOMM_HDL_T pDlgHdl, //dlg handle IN LPBYTE pName, //Name to release IN DWORD NameLen, //length of name to release IN MSG_T pMsg, //message received IN MSG_LEN_T MsgLen, //length of message IN DWORD QuesNamSecLen, //length of ques. name sec in msg IN BOOL fAdmin, OUT PNMSDB_STAT_INFO_T pStatInfo ); extern VOID NmsNmhSndNamRegRsp( PCOMM_HDL_T pDlgHdl, PNMSMSGF_RSP_INFO_T pRspInfo ); extern STATUS NmsNmhReplRegInd( IN LPBYTE pName, IN DWORD NameLen, IN PCOMM_ADD_T pNodeAdd, IN DWORD Flag, //change to take Flag byte IN DWORD OwnerId, IN VERS_NO_T VersNo, IN PCOMM_ADD_T pOwnerWinsAdd ); extern STATUS NmsNmhReplGrpMems( IN LPBYTE pName, IN DWORD NameLen, IN BYTE EntTyp, IN PNMSDB_NODE_ADDS_T pGrpMem, IN DWORD Flag, //change to take Flag byte IN DWORD OwnerId, IN VERS_NO_T VersNo, IN PCOMM_ADD_T pOwnerWinsAdd ); extern VOID NmsNmhUpdVersNo( IN LPBYTE pName, IN DWORD NameLen, //IN BYTE NodeTyp, //IN BOOL fBrowserName, //IN BOOL fStatic, //IN PCOMM_ADD_T pNodeAdd, OUT LPBYTE pRcode, IN PCOMM_ADD_T pWinsAdd ); #ifdef __cplusplus } #endif #endif //_NMSNMH_