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

📄 update.h

📁 一个距离向量算法的路由器 路由表更新规则: 发现了一条到达某目的的新路由
💻 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 + -