if_elect1.c,v
来自「TCP-IP红宝书源代码」· C,V 代码 · 共 109 行
C,V
109 行
head 1.2;
access;
symbols;
locks
dls:1.2; strict;
comment @ * @;
1.2
date 97.09.21.19.28.38; author dls; state Dist;
branches;
next 1.1;
1.1
date 94.02.13.19.38.53; author dls; state Works;
branches;
next ;
desc
@@
1.2
log
@pre-3e code
@
text
@/* if_elect1.c - if_elect1 */
#include <conf.h>
#include <kernel.h>
#include <network.h>
#include <ospf.h>
/*------------------------------------------------------------------------
* if_elect1 - make one neighbor list pass in the election algorithm
*------------------------------------------------------------------------
*/
int if_elect1(pif, ppdr, ppbr)
struct ospf_if *pif;
struct ospf_nb **ppdr, **ppbr;
{
unsigned long brid, drid;
Bool bdecl, cdecl;
struct ospf_nb *pnb, *pdr, *pbr;
int i;
drid = pif->if_drid;
brid = pif->if_brid;
bdecl = FALSE;
pdr = pbr = 0;
pnb = &pif->if_nbtab[0];
for (i=0; i<=MAXNBR; ++i, ++pnb) {
if (pnb->nb_state < NBS_2WAY)
continue;
if (pnb->nb_rid == pnb->nb_drid) {
/* neighbor claims designated routership */
if (pdr) {
if (pnb->nb_prio < pdr->nb_prio)
continue;
if ((pnb->nb_prio == pdr->nb_prio) &&
(net2hl(pnb->nb_rid) <
net2hl(pdr->nb_rid)))
continue;
}
pdr = pnb;
continue;
} /* else pnb is a backup candidate */
cdecl = pnb->nb_rid == pnb->nb_brid;
if (bdecl && !cdecl)
continue;
if (cdecl && !bdecl) {
bdecl = TRUE;
pbr = pnb;
continue;
}
if (pbr == 0) {
pbr = pnb;
continue;
}
if (pnb->nb_prio < pbr->nb_prio)
continue;
if ((pnb->nb_prio == pbr->nb_prio) &&
(net2hl(pnb->nb_rid) < net2hl(pbr->nb_rid)))
continue;
pbr = pnb; /* new backup */
}
*ppbr = pbr;
*ppdr = pdr;
}
@
1.1
log
@Initial revision
@
text
@d36 2
a37 1
(pnb->nb_rid < pdr->nb_rid))
d59 1
a59 1
(pnb->nb_rid < pbr->nb_rid))
@
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?