nb_reform.c

来自「TCP-IP红宝书源代码」· C语言 代码 · 共 38 行

C
38
字号
/* nb_reform.c - nb_reform */

#include <conf.h>
#include <kernel.h>
#include <network.h>
#include <ospf.h>

SYSCALL gettime(unsigned long *);

/*------------------------------------------------------------------------
 *  nb_reform - reform adjacencies after a DR or BDR change
 *------------------------------------------------------------------------
 */
int
nb_reform(struct ospf_if *pif)
{
	struct ospf_nb	*pnb = &pif->if_nbtab[1];
	int		nn;

	for (nn=0; nn<MAXNBR; ++nn, ++pnb) {
		if (pnb->nb_state >= NBS_EXSTART) {
			if (!nb_aok(pif, pnb)) {
				/* break an adjacency */
				pnb->nb_state = NBS_2WAY;
				nb_clearl(pnb);
			}
		} else if (pnb->nb_state == NBS_2WAY) {
			if (nb_aok(pif, pnb)) {
				/* form an adjacency */
				gettime(&pnb->nb_seq);
				pnb->nb_state = NBS_EXSTART;
				nb_makel(pnb);
				dd_queue(pif, pnb);
			}
		}
	}
}

⌨️ 快捷键说明

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