?? update.h
字號:
#include"DVsim.h"
void AddtoTable(Route *a,Route *b);
void AltertoTable(Route *a,Route *b);
void UpdateTable(Route *newr)//接收到鄰接路由器的路由信息,要更新路由表
{
if(routetable[newr->dest_addr].dest_addr==newr->dest_addr)
{
if(newr->cost+1<routetable[newr->dest_addr].cost)
{//發現了一條到達某目的的、距離更短的新路由,則用該路由替換原有的路由
AltertoTable(&routetable[newr->dest_addr],newr);
}
}
else
{//在此路由表中沒有到達目的地的路徑,發現了一條到達某目的的新路由,
//而該路由在原來的路由表中不存在(即發現了一條新路由),則在路由表中增加該路由
if(newr->dest_addr!=routetable[newr->dest_addr].src_addr)
AddtoTable(&routetable[newr->dest_addr],newr);//將newr添加到路由表
}
}
void AddtoTable(Route *a,Route *b)
{ //發現了一條到達某目的的新路由
//加入到路由表中,將b中的路由信息添加到路由表中
a->routpath[0]=b->src_addr;//經過的第一個路由為b
for(int i=0;i<MAX_ROUTES-1;i++)
a->routpath[i+1]=b->routpath[i];//除第一個路由外,其他的路由路徑直接拷過來
a->cost=b->cost+1;//距離向量加1
}
void AltertoTable(Route *a,Route *b)
{//發現了一條到達某目的的、距離更短的新路由,則用該路由替換原有的路由
//改變路由表,用b中的路由信息修改a中的信息
a->routpath[0]=b->src_addr;//經過的第一個路由為b
for(int i=0;i<MAX_ROUTES-1;i++)
a->routpath[i+1]=b->routpath[i];
a->cost=b->cost+1;//修改距離向量
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -