#ifndef _RPLMSGF_ #define _RPLMSGF_ /*++ Copyright (c) 1989 Microsoft Corporation Module Name: rplmsgf.h Abstract: header file for interfacing with the rplmsgf.c module 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 "comm.h" #include "rpl.h" /* defines */ /* Sizes for the different messages to be sent between replicators */ #define RPLMSGF_ADDVERSMAP_REQ_SIZE (sizeof(LONG) + COMM_N_TCP_HDR_SZ) #define RPLMSGF_SNDENTRIES_REQ_SIZE (COMM_N_TCP_HDR_SZ + sizeof(RPLMSGF_SENDENTRIES_REQ_T)) #define RPLMSGF_ADDVERSMAP_RSP_SIZE_M(_NoOfOwners) \ (COMM_N_TCP_HDR_SZ + \ sizeof(RPLMSGF_ADDVERSMAP_RSP_T) + \ (sizeof(RPLMSGF_OWNER_MAP_INFO_T) * (_NoOfOwners))); // // RPLMSGF_UPD_VERS_NO_REQ_T includes COMM_N_TCP_HDR // #define RPLMSGF_UPDVERSNO_REQ_SIZE sizeof(RPLMSGF_UPD_VERS_NO_REQ_T) #define RPLMSGF_UPDVERSNO_RSP_SIZE (sizeof(RPLMSGF_UPD_VERS_NO_RSP_T) + \ COMM_N_TCP_HDR_SZ) /* macros */ #define RPLMSGF_SET_OPC_M(pTmpB, Opc_e) \ { \ *(pTmpB)++ = 0; \ *(pTmpB)++ = 0; \ *(pTmpB)++ = 0; \ *(pTmpB)++ = (BYTE)(Opc_e); \ } // // Opcode is stored in the 4th byte of the message (in keeping with the // convention of passing the MSB first). // #define RPLMSGF_GET_OPC_FROM_MSG_M(pBuff, Opc_e) \ { \ Opc_e = *(pBuff + 3); \ } /* * externs */ /* * typedef definitions */ // // Message structures // // // Some of these structures are used just for determining the sizes of the // buffers used for formatting the messages corresponding to them // typedef struct _RPLMSGF_ADD_VERS_MAP_REQ_T { DWORD Opcode; } RPLMSGF_ADD_VERS_MAP_REQ_T, *PRPLMSGF_ADD_VERS_MAP_REQ_T; typedef struct _RPLMSGF_OWNER_MAP_INFO_T { COMM_ADD_T Add; VERS_NO_T MaxVersNo; VERS_NO_T StartVersNo; DWORD Uid; } RPLMSGF_OWNER_MAP_INFO_T, *PRPLMSGF_OWNER_MAP_INFO_T; typedef struct _RPLMSGF_ADDVERSMAP_RSP_T { DWORD LengthOfMsg; DWORD Opcode; DWORD NoOfOwners; PRPLMSGF_OWNER_MAP_INFO_T pOwnerInfo; DWORD RplTimeInterval; } RPLMSGF_ADDVERSMAP_RSP_T, *PRPLMSGF_ADDVERSMAP_RSP_T; typedef struct _RPLMSGF_SENDENTRIES_REQ_T { DWORD LengthOfMsg; DWORD Opcode; COMM_ADD_T Add; VERS_NO_T MaxVersNo; VERS_NO_T MinVersNo; DWORD TypOfRec; } RPLMSGF_SENDENTRIES_REQ_T, PRPLMSGF_SENDENTRIES_REQ_T; typedef struct _RPLMSGF_UPD_VERS_NO_REQ_T { COMM_TCP_HDR_T TcpHdr; DWORD Opcode; BYTE Name[NMSDB_MAX_NAM_LEN]; DWORD NameLen; } RPLMSGF_UPD_VERS_NO_REQ_T, *PRPLMSGF_UPD_VERS_NO_REQ_T; typedef struct _RPLMSGF_UPD_VERS_NO_RSP_T { DWORD Opcode; BYTE Rcode; } RPLMSGF_UPD_VERS_NO_RSP_T, *PRPLMSGF_UPD_VERS_NO_RSP_T; /* RPLMSGF_MSG_OPCODE_E -- lists the various opcodes used in messages sent between replicators of different WINS servers. These opcodes are used by the formatting and unformatting functions of module rplmsgf.c */ typedef enum _RPLMSGF_MSG_OPCODE_E { RPLMSGF_E_ADDVERSNO_MAP_REQ = 0, RPLMSGF_E_ADDVERSNO_MAP_RSP, RPLMSGF_E_SNDENTRIES_REQ, RPLMSGF_E_SNDENTRIES_RSP, RPLMSGF_E_UPDATE_NTF, //update notification RPLMSGF_E_UPDATE_NTF_PROP, //update notification (to be //propagated RPLMSGF_E_UPDVERSNO_REQ, //update vers. no request RPLMSGF_E_UPDVERSNO_RSP, //update vers. no response //adding the following two at the end //so as to not mess up the parser's notion //of the above ones RPLMSGF_E_UPDATE_NTF_PRS, //update notification on a pers. conn RPLMSGF_E_UPDATE_NTF_PROP_PRS //update notification (to be propagated } RPLMSGF_MSG_OPCODE_E, *PRPLMSGF_MSG_OPCODE_E; /* function declarations */ extern VOID RplMsgfFrmAddVersMapReq( IN LPBYTE pBuff, OUT LPDWORD pMsgLen ); extern VOID RplMsgfFrmAddVersMapRsp( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN RPLMSGF_MSG_OPCODE_E Opcode_e, IN LPBYTE pBuff, IN DWORD BuffLen, IN PRPL_ADD_VERS_NO_T pOwnerAddVersNoMap, IN DWORD MaxNoOfOwners, IN DWORD RplTimeInterval, OUT LPDWORD pMsgLen ); extern VOID RplMsgfFrmSndEntriesReq( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN LPBYTE pBuff, IN PCOMM_ADD_T pWinsAdd, IN VERS_NO_T MaxversNo, IN VERS_NO_T MinVersNo, IN DWORD RplType, OUT LPDWORD pMsgLen ); extern VOID RplMsgfFrmSndEntriesRsp ( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN LPBYTE pBuff, IN DWORD NoOfRecs, IN LPBYTE pName, IN DWORD NameLen, IN BOOL fGrp, IN DWORD NoOfAdd, IN PCOMM_ADD_T pNodeAdd, IN DWORD Flag, IN VERS_NO_T VersNo, IN BOOL fFirstTime, OUT LPBYTE *ppNewPos ); extern VOID RplMsgfFrmUpdVersNoReq( IN LPBYTE pBuff, IN LPBYTE pName, IN DWORD NameLen, #if 0 IN BOOL fBrowserName, IN BOOL fStatic, IN BYTE NodeTyp, IN PCOMM_ADD_T pNodeAdd, #endif OUT LPDWORD pMsgLen ); extern VOID RplMsgfFrmUpdVersNoRsp( IN LPBYTE pBuff, IN BYTE Rcode, OUT LPDWORD pMsgLen ); extern VOID RplMsgfUfmAddVersMapRsp( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN LPBYTE pBuff, OUT LPDWORD pNoOfMaps, OUT LPDWORD pRplTimeInterval, IN OUT PRPL_ADD_VERS_NO_T *ppAddVers ); extern VOID RplMsgfUfmSndEntriesReq( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN LPBYTE pBuff, OUT PCOMM_ADD_T pWinsAdd, OUT PVERS_NO_T pMaxVersNo, OUT PVERS_NO_T pMinVersNo, OUT LPDWORD pRplType ); extern VOID RplMsgfUfmSndEntriesRsp( #if SUPPORT612WINS > 0 IN BOOL fPnrIsBeta1Wins, #endif IN OUT LPBYTE *ppBuff, OUT LPDWORD pNoOfRecs, OUT IN LPBYTE pName, OUT LPDWORD pNameLen, OUT LPBOOL pfGrp, OUT LPDWORD pNoOfAdd, OUT PCOMM_ADD_T pNodeAdd, OUT LPDWORD pFlag, OUT PVERS_NO_T pVersNo, IN BOOL fFirstTime ); extern VOID RplMsgfUfmUpdVersNoReq( IN LPBYTE pBuff, IN LPBYTE pName, IN LPDWORD pNameLen #if 0 IN LPBOOL pfBrowserName, IN LPBOOL pfStatic, IN LPBYTE pNodeTyp, IN PCOMM_ADD_T pNodeAdd #endif ); extern VOID RplMsgfUfmUpdVersNoRsp( IN LPBYTE pBuff, IN LPBYTE pRcode ); extern VOID RplMsgfUfmPullPnrReq( LPBYTE pMsg, DWORD MsgLen, PRPLMSGF_MSG_OPCODE_E pPullReqType_e ); #endif //_RPLMSGF_