336 lines
6.7 KiB
C
336 lines
6.7 KiB
C
#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_
|