📄 odmrp.h
字号:
/* Total number of join query txed. */ int numQueryTxed; /* Total number of join reply packets sent. */ int numReplySent; /* Total number of explicit acks sent. */ int numAckSent; /* Total number of data packets sent by the source. */ int numDataSent; /* Total number of data packets received by the destination. */ int numDataReceived; /* Total number of data packets should be received by the destination. */ int numDataToReceive; /* Total number of data packets transmitted by each node. */ int numDataTxed;} ODMRP_Stats;typedef struct glomo_network_odmrp_str { ODMRP_Membership memberFlag; ODMRP_FgFlag fgFlag; ODMRP_MT memberTable; ODMRP_TT tempTable; ODMRP_RT routeTable; ODMRP_MC messageCache; int seqTable; ODMRP_SS sentTable; ODMRP_Stats stats; ODMRP_AT ackTable; ODMRP_RPT responseTable;} GlomoRoutingOdmrp;void RoutingOdmrpHandleProtocolEvent(GlomoNode *node, Message *msg);void RoutingOdmrpHandleProtocolPacket(GlomoNode *node, Message *msg, NODE_ADDR srcAddr, NODE_ADDR destAddr);void RoutingOdmrpRouterFunction(GlomoNode *node, Message *msg, NODE_ADDR destAddr, BOOL *packetWasRouted);void RoutingOdmrpInit(GlomoNode *node, GlomoRoutingOdmrp **odmrpPtr, const GlomoNodeInput *nodeInput);void RoutingOdmrpFinalize(GlomoNode *node);void RoutingOdmrpHandleData(GlomoNode *node, Message *msg);void RoutingOdmrpHandleJoinQuery(GlomoNode *node, Message *msg);void RoutingOdmrpHandleReply( GlomoNode *node, Message *msg, NODE_ADDR lastAddr, NODE_ADDR mcastAddr);void RoutingOdmrpHandleAck( GlomoNode *node, Message *msg, NODE_ADDR lastAddr, NODE_ADDR targetAddr);void RoutingOdmrpInitMembership(ODMRP_Membership *memberFlag);void RoutingOdmrpInitFgFlag(ODMRP_FgFlag *fgFlag);void RoutingOdmrpInitMemberTable(ODMRP_MT *memberTable);void RoutingOdmrpInitResponseTable(ODMRP_RPT *responseTable);void RoutingOdmrpInitTempTable(ODMRP_TT *tempTable);void RoutingOdmrpInitRouteTable(ODMRP_RT *routeTable);void RoutingOdmrpInitMessageCache(ODMRP_MC *messageCache);void RoutingOdmrpInitSeqTable(GlomoNode *node);void RoutingOdmrpInitSent(ODMRP_SS *sentTable);void RoutingOdmrpInitStats(GlomoNode *node);void RoutingOdmrpDeleteMsgCache(ODMRP_MC *messageCache);BOOL RoutingOdmrpLookupMessageCache( NODE_ADDR srcAddr, int seqNumber, ODMRP_MC *messageCache);BOOL RoutingOdmrpLookupMembership(NODE_ADDR mcastAddr, ODMRP_Membership *memberFlag);BOOL RoutingOdmrpLookupFgFlag(NODE_ADDR mcastAddr, ODMRP_FgFlag *fgFlag);BOOL RoutingOdmrpLookupMemberTable(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);BOOL RoutingOdmrpLookupSentTable(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);BOOL RoutingOdmrpCheckFgExpired(NODE_ADDR mcastAddr, ODMRP_FgFlag *fgFlag);void RoutingOdmrpSetMemberFlag(NODE_ADDR mcastAddr, ODMRP_Membership *memberFlag);ODMRP_M_Node *RoutingOdmrpSetMemFlagInOrder( NODE_ADDR mcastAddr, ODMRP_M_Node *old);void RoutingOdmrpResetMemberFlag(NODE_ADDR mcastAddr, ODMRP_Membership *memberFlag);void RoutingOdmrpUpdateFgFlag(NODE_ADDR mcastAddr, ODMRP_FgFlag *fgFlag);void RoutingOdmrpSetFgFlag(NODE_ADDR mcastAddr, ODMRP_FgFlag *fgFlag);ODMRP_FF_Node *RoutingOdmrpSetFgFlagInOrder( NODE_ADDR mcastAddr, ODMRP_FF_Node *old);void RoutingOdmrpResetFgFlag(NODE_ADDR mcastAddr, ODMRP_FgFlag *fgFlag);void RoutingOdmrpSetSent(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);ODMRP_SS_Node *RoutingOdmrpSetSentInOrder( NODE_ADDR mcastAddr, ODMRP_SS_Node *old);void RoutingOdmrpDeleteSourceSent(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);ODMRP_MT_Node *RoutingOdmrpGetMTEntry( NODE_ADDR mcastAddr, ODMRP_MT *memberTable);void RoutingOdmrpInsertMemberTable(NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_MT *memberTable);ODMRP_MT_Node *RoutingOdmrpInsertMTInOrder( NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_MT_Node *old);BOOL RoutingOdmrpCheckMSExist(NODE_ADDR srcAddr, ODMRP_MT_Node *mcast);ODMRP_MT_Snode *RoutingOdmrpInsertMemberSource( NODE_ADDR srcAddr, ODMRP_MT_Node *mcast);ODMRP_MT_Snode *RoutingOdmrpInsertMSInOrder( NODE_ADDR srcAddr, ODMRP_MT_Snode *old, ODMRP_MT_Snode *last);void RoutingOdmrpCheckSourceExpired(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);ODMRP_TT_Node *RoutingOdmrpGetTTEntry(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpInsertTempTable(NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_TT *tempTable);ODMRP_TT_Node *RoutingOdmrpInsertTTInOrder( NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_TT_Node *old);BOOL RoutingOdmrpCheckTSExist(NODE_ADDR srcAddr, ODMRP_TT_Node *mcast);ODMRP_TT_Snode *RoutingOdmrpInsertTempSource( NODE_ADDR srcAddr, ODMRP_TT_Node *mcast);ODMRP_TT_Snode *RoutingOdmrpInsertTSInOrder( NODE_ADDR srcAddr, ODMRP_TT_Snode *old, ODMRP_TT_Snode *last);BOOL RoutingOdmrpCheckTempChanged(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpCheckTempExpired(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);ODMRP_RPT_Node *RoutingOdmrpGetRPTEntry( NODE_ADDR mcastAddr, ODMRP_RPT *rspnsTable);void RoutingOdmrpInsertResponseTable( NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_RPT *rspnsTable);ODMRP_RPT_Node *RoutingOdmrpInsertRPTInOrder( NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_RPT_Node *old);BOOL RoutingOdmrpCheckRPSExist(NODE_ADDR srcAddr, ODMRP_RPT_Node *mcast);ODMRP_RPT_Snode *RoutingOdmrpInsertResponseSource( NODE_ADDR srcAddr, ODMRP_RPT_Node *mcast);ODMRP_RPT_Snode *RoutingOdmrpInsertRPSInOrder( NODE_ADDR srcAddr, ODMRP_RPT_Snode *old);ODMRP_AT_Node *RoutingOdmrpGetATEntry(NODE_ADDR mcastAddr, ODMRP_AT *ackTable);void RoutingOdmrpInsertAckTable( NODE_ADDR mcastAddr, ODMRP_AT *ackTable, ODMRP_JoinReply *reply);ODMRP_AT_Node *RoutingOdmrpInsertATInOrder( NODE_ADDR mcastAddr, ODMRP_AT_Node *old, ODMRP_JoinReply *reply);BOOL RoutingOdmrpCheckASExist(NODE_ADDR srcAddr, ODMRP_AT_Node *mcast);ODMRP_AT_Snode *RoutingOdmrpInsertAckSource( NODE_ADDR srcAddr, NODE_ADDR nextAddr, ODMRP_AT_Node *mcast);ODMRP_AT_Snode *RoutingOdmrpInsertASInOrder(NODE_ADDR srcAddr, NODE_ADDR nextAddr, ODMRP_AT_Snode *old, ODMRP_AT_Snode *last);void RoutingOdmrpInsertRouteTable(NODE_ADDR destAddr, NODE_ADDR nextAddr, int hopCount, ODMRP_RT *routeTable);ODMRP_RT_Node *RoutingOdmrpInsertRTInOrder( NODE_ADDR destAddr, NODE_ADDR nextAddr, int hopCount, ODMRP_RT_Node *old);BOOL RoutingOdmrpCheckRouteExist(NODE_ADDR destAddr, ODMRP_RT *routeTable);void RoutingOdmrpInsertMessageCache(GlomoNode *node, NODE_ADDR srcAddr, int seqNumber, ODMRP_MC *messageCache);int RoutingOdmrpGetSeq(GlomoNode *node);NODE_ADDR RoutingOdmrpGetNextNode(NODE_ADDR destAddr, ODMRP_RT *routeTable);int RoutingOdmrpGetTempCount(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);int RoutingOdmrpGetMemberCount(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);int RoutingOdmrpGetAckCount(NODE_ADDR mcastAddr, ODMRP_AT *ackTable);void RoutingOdmrpJoinGroup(GlomoNode *node, NODE_ADDR mcastAddr);void RoutingOdmrpLeaveGroup(GlomoNode *node, NODE_ADDR mcastAddr);BOOL RoutingOdmrpCheckLastSent(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);void RoutingOdmrpUpdateLastSent(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);BOOL RoutingOdmrpCheckAckTable(NODE_ADDR mcastAddr, ODMRP_AT *ackTable);void RoutingOdmrpDeleteAckTable(NODE_ADDR mcastAddr, NODE_ADDR srcAddr, NODE_ADDR lastAddr, ODMRP_AT *ackTable);void RoutingOdmrpInitAckTable(ODMRP_AT *ackTable);void RoutingOdmrpDeleteMemberTable(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);void RoutingOdmrpDeleteTempTable(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpDeleteResponseTable( NODE_ADDR mcastAddr, ODMRP_RPT *rspnsTable);BOOL RoutingOdmrpCheckResponseMatch( NODE_ADDR mcastAddr, NODE_ADDR srcAddr, ODMRP_RPT *rspnsTable);BOOL RoutingOdmrpCheckMinExpTime(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);BOOL RoutingOdmrpCheckCongestionTime( NODE_ADDR mcastAddr, ODMRP_MT *memberTable);BOOL RoutingOdmrpCheckSendQuery(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);void RoutingOdmrpSetSendQuery(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);void RoutingOdmrpUnsetSendQuery(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);void RoutingOdmrpSetMinExpireTime(NODE_ADDR mcastAddr, ODMRP_SS *sentTable);BOOL RoutingOdmrpCheckTempSent(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpSetTempSent(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpUnsetTempSent(NODE_ADDR mcastAddr, ODMRP_TT *tempTable);void RoutingOdmrpSetMemberSent(NODE_ADDR mcastAddr, ODMRP_MT *memberTable);void RoutingOdmrpSetTimer( GlomoNode *node, long eventType, NODE_ADDR mcastAddr, clocktype delay);void RoutingOdmrpSendReply(GlomoNode *node, NODE_ADDR mcastAddr, ODMRP_MT *memberTable, ODMRP_TT *tempTable);void RoutingOdmrpRetxReply( GlomoNode *node, NODE_ADDR mcastAddr, ODMRP_AT *ackTable);void RoutingOdmrpSendData(GlomoNode *node, Message *msg, NODE_ADDR mcastAddr);void RoutingOdmrpSendQuery(GlomoNode *node, Message *msg, NODE_ADDR mcastAddr);void AddCustomOdmrpIpOptionFields(GlomoNode* node, Message* msg);OdmrpIpOptionType GetOdmrpIpOptionField(const Message* msg);void SetOdmrpIpOptionField( Message* msg, const OdmrpIpOptionType* OdmrpIpOption);#endif /* _ODMRP_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -