⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mflood-seqtable.cc.bak

📁 mflood协议在ns2中的实现
💻 BAK
字号:
#include "mflood/mflood-seqtable.h"



// The Routing Table

MFlood_RTEntry::MFlood_RTEntry() {

src_ = 0;

for(int i=0;i<REM_SEQ_COUNT;i++)

       rt_seqnos = 0xffffffff;

max_seqno = 0;

min_seqno = 0;

seq_it = 0;

};



// The Routing Table

MFlood_RTEntry::MFlood_RTEntry(nsaddr_t src,u_int32_t seq) {

src_ = src;

for(int i=0;i<REM_SEQ_COUNT;i++)

rt_seqnos[i] = 0xffffffff;

rt_seqnos[0] = seq;

max_seqno = seq;

min_seqno = 0;

seq_it = 1;

};



bool MFlood_RTEntry::isNewSeq(u_int32_t seq)

{

if(seq > max_seqno)

return true;

//採用min_seqno來拋棄掉太久以前的包

if(seq < min_seqno)

return false;

for(int i=0;i<REM_SEQ_COUNT;i++)

if(seq == rt_seqnos[i])

   return false;

return true;

}



void MFlood_RTEntry::addSeq(u_int32_t seq)

{

u_int16_t min_it = 0;

if(seq < min_seqno)

return;

if(seq > max_seqno)

max_seqno = seq;

/*

for(int i=0;i<REM_SEQ_COUNT;i++)

if(seq == rt_seqnos)

   return;

*/

rt_seqnos[seq_it++] = seq;

seq_it %= REM_SEQ_COUNT;

min_seqno = 0xffffffff;

//計算出min_seqno

for(int i=0;i<REM_SEQ_COUNT;i++)

if(min_seqno > rt_seqnos[i])

   min_seqno = rt_seqnos[i];

}



// The Routing Table

MFlood_RTEntry*

MFlood_RTable::rt_lookup(nsaddr_t id) {

MFlood_RTEntry *rt = rthead.lh_first;

for(; rt; rt = rt->rt_link.le_next) {

if(rt->src_ == id)

   break;

}

return rt;

}



void

MFlood_RTable::rt_delete(nsaddr_t id) {

MFlood_RTEntry *rt = rt_lookup(id);

if(rt) {

LIST_REMOVE(rt, rt_link);

delete rt;

}

}



void

MFlood_RTable::rt_print() {

MFlood_RTEntry *rt = rthead.lh_first;

printf("\n Seq table:\n");

for(; rt; rt = rt->rt_link.le_next) {

       printf("index: %d , seq: %d \n",rt->src_,rt->max_seqno);

}

return;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -