nb_add.c,v

来自「TCP-IP红宝书源代码」· C,V 代码 · 共 122 行

C,V
122
字号
head	1.4;
access;
symbols;
locks
	dls:1.4; strict;
comment	@ * @;


1.4
date	97.09.21.19.28.38;	author dls;	state Dist;
branches;
next	1.3;

1.3
date	94.02.20.18.59.56;	author dls;	state Works;
branches;
next	1.2;

1.2
date	94.02.13.19.38.53;	author dls;	state Works;
branches;
next	1.1;

1.1
date	94.02.06.18.20.21;	author dls;	state Ok;
branches;
next	;


desc
@@


1.4
log
@pre-3e code
@
text
@/* nb_add.c - nb_add */

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

/*------------------------------------------------------------------------
 *  nb_add - add a neighbor to our neighbor list (update timer if present)
 *------------------------------------------------------------------------
 */
struct ospf_nb *nb_add(pif, po)
struct ospf_if	*pif;
struct ospf	*po;
{
	struct ospf_hello	*poh = (struct ospf_hello *)po->ospf_data;
	struct ospf_nb		*pnb, *pnbfree;
	int			nn;

	wait(pif->if_nbmutex);
	pnb = &pif->if_nbtab[1];
	pnbfree = 0;
	for (nn=0; nn<MAXNBR; ++nn, ++pnb) {
		if (pnbfree == 0 && pnb->nb_state == NBS_DOWN) {
			pnbfree = pnb;
			continue;
		}
		if (pnb->nb_rid == po->ospf_rid)
			break;
	}
	if (nn >= MAXNBR)
		pnb = pnbfree;
	if (pnb) {
		if (pnb->nb_state < NBS_INIT) {
			pnb->nb_rid = po->ospf_rid;
			pnb->nb_prio = 0;
			pnb->nb_drid = 0;
			pnb->nb_brid = 0;
			pnb->nb_lsal = pnb->nb_dsl = EMPTY;
			pnb->nb_lsrl = EMPTY;
			pnb->nb_state = NBS_INIT;
			pnb->nb_tlastdd = 0;
		}
		pnb->nb_lastheard = pif->if_rdintv;
	}
	signal(pif->if_nbmutex);
	return pnb;
}
@


1.3
log
@*** empty log message ***
@
text
@@


1.2
log
@*** empty log message ***
@
text
@d32 1
a32 4
		if (pnbfree)
			pnb = pnbfree;
		else
			pnb = 0;
d42 1
@


1.1
log
@Initial revision
@
text
@d42 2
a43 1
			pnb->nb_lsar = pnb->nb_dsl = pnb->nb_lsrr = EMPTY;
@

⌨️ 快捷键说明

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