lsu_in.c
来自「TCP-IP红宝书源代码」· C语言 代码 · 共 37 行
C
37 行
/* lsu_in.c - lsu_in */
#include <conf.h>
#include <kernel.h>
#include <network.h>
#include <ospf.h>
/*------------------------------------------------------------------------
* lsu_in - handle a received link state update packet
*------------------------------------------------------------------------
*/
void
lsu_in(struct ep *pep)
{
struct ip *pip = (struct ip *)pep->ep_data;
struct ospf *po;
struct ospf_if *pif = &ospf_if[pep->ep_ifn];
struct ospf_lsu *plsu;
struct ospf_db *pdb, *db_lookup();
struct ospf_nb *pnb;
int i;
if (pif->if_state <= IFS_WAITING)
return;
pnb = &pif->if_nbtab[1];
po = (struct ospf *)((char *)pip+IP_HLEN(pip));
for (i=0; i<MAXNBR; ++i, ++pnb)
if (pnb->nb_rid == po->ospf_rid)
break;
if (i == MAXNBR || pnb->nb_state < NBS_EXCHNG)
return;
/* db update here */
if (headq(pnb->nb_lsrl) && lsr_check(pnb))
freebuf(deq(pnb->nb_lsrl));
/* flooding procedure */
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?