Symbol: nbr
usr.bin/mandoc/term.c
103
size_t nbr; /* Number of bytes to print in this field. */
usr.bin/mandoc/term.c
140
term_fill(p, &nbr, &vbr,
usr.bin/mandoc/term.c
142
if (nbr == 0)
usr.bin/mandoc/term.c
160
term_field(p, vbl, nbr);
usr.bin/mandoc/term.c
261
term_fill(struct termp *p, size_t *nbr, size_t *vbr, size_t vtarget)
usr.bin/mandoc/term.c
273
*nbr = *vbr = vis = 0;
usr.bin/mandoc/term.c
294
*nbr = ic;
usr.bin/mandoc/term.c
319
*nbr = ic + 1;
usr.bin/mandoc/term.c
347
if (vis > vtarget && *nbr > 0)
usr.bin/mandoc/term.c
360
if (graph && (vis <= vtarget || *nbr == 0)) {
usr.bin/mandoc/term.c
361
*nbr = ic;
usr.bin/mandoc/term.c
372
term_field(struct termp *p, size_t vbl, size_t nbr)
usr.bin/mandoc/term.c
384
for (ic = p->tcol->col; ic < nbr; ic++) {
usr.bin/mandoc/term.c
440
p->tcol->col = nbr;
usr.sbin/dvmrpctl/dvmrpctl.c
479
struct ctl_nbr *nbr;
usr.sbin/dvmrpctl/dvmrpctl.c
483
nbr = imsg->data;
usr.sbin/dvmrpctl/dvmrpctl.c
484
printf("%-15s %-10s %-10s", inet_ntoa(nbr->id),
usr.sbin/dvmrpctl/dvmrpctl.c
485
print_nbr_state(nbr->state),
usr.sbin/dvmrpctl/dvmrpctl.c
486
fmt_timeframe_core(nbr->dead_timer));
usr.sbin/dvmrpctl/dvmrpctl.c
487
printf("%-15s %-11s %s\n", inet_ntoa(nbr->addr),
usr.sbin/dvmrpctl/dvmrpctl.c
488
nbr->name, fmt_timeframe_core(nbr->uptime));
usr.sbin/dvmrpd/ask_nbrs2.c
68
recv_ask_nbrs2(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/ask_nbrs2.c
70
log_debug("recv_ask_nbrs2: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/dvmrpd.h
181
LIST_HEAD(, nbr) nbr_list;
usr.sbin/dvmrpd/dvmrpe.c
314
struct nbr *nbr;
usr.sbin/dvmrpd/dvmrpe.c
372
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/dvmrpd/dvmrpe.c
373
rr_list_add(&nbr->rr_list, rr);
usr.sbin/dvmrpd/dvmrpe.c
390
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/dvmrpd/dvmrpe.c
391
rr_list_send(&nbr->rr_list, NULL, nbr);
usr.sbin/dvmrpd/dvmrpe.c
406
nbr = nbr_find_ip(iface, p.nexthop.s_addr);
usr.sbin/dvmrpd/dvmrpe.c
407
if (nbr == NULL)
usr.sbin/dvmrpd/dvmrpe.c
410
send_prune(nbr, &p);
usr.sbin/dvmrpd/dvmrpe.c
499
struct nbr *nbr;
usr.sbin/dvmrpd/dvmrpe.c
503
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/dvmrpd/dvmrpe.c
504
nctl = nbr_to_ctl(nbr);
usr.sbin/dvmrpd/dvmrpe.h
105
void recv_graft(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/dvmrpe.h
109
void recv_graft_ack(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/dvmrpe.h
155
void recv_nbrs2(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/dvmrpe.h
159
struct nbr *nbr_new(u_int32_t, struct iface *, int);
usr.sbin/dvmrpd/dvmrpe.h
160
int nbr_del(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
162
struct nbr *nbr_find_ip(struct iface *, u_int32_t);
usr.sbin/dvmrpd/dvmrpe.h
163
struct nbr *nbr_find_peerid(u_int32_t);
usr.sbin/dvmrpd/dvmrpe.h
165
int nbr_fsm(struct nbr *, enum nbr_event);
usr.sbin/dvmrpd/dvmrpe.h
167
int nbr_start_itimer(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
168
int nbr_stop_itimer(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
169
int nbr_reset_itimer(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
173
int nbr_act_start(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
174
int nbr_act_reset_itimer(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
175
int nbr_act_start_itimer(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
176
int nbr_act_delete(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
177
int nbr_act_clear_lists(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
182
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
196
int send_prune(struct nbr *, struct prune *);
usr.sbin/dvmrpd/dvmrpe.h
197
void recv_prune(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/dvmrpe.h
201
void recv_report(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/dvmrpe.h
209
void rr_list_send(struct rr_head *, struct iface *, struct nbr *);
usr.sbin/dvmrpd/dvmrpe.h
49
LIST_ENTRY(nbr) entry, hash;
usr.sbin/dvmrpd/dvmrpe.h
90
void recv_ask_nbrs2(struct nbr *, char *, u_int16_t);
usr.sbin/dvmrpd/graft.c
68
recv_graft(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/graft.c
70
log_debug("recv_graft: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/graft_ack.c
68
recv_graft_ack(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/graft_ack.c
70
log_debug("recv_graft_ack: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/interface.c
247
struct nbr *nbr = NULL;
usr.sbin/dvmrpd/interface.c
250
while ((nbr = LIST_FIRST(&iface->nbr_list)) != NULL) {
usr.sbin/dvmrpd/interface.c
251
LIST_REMOVE(nbr, entry);
usr.sbin/dvmrpd/interface.c
252
nbr_del(nbr);
usr.sbin/dvmrpd/interface.c
453
struct nbr *nbr;
usr.sbin/dvmrpd/interface.c
487
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/dvmrpd/interface.c
488
if (nbr_fsm(nbr, NBR_EVT_KILL_NBR)) {
usr.sbin/dvmrpd/interface.c
490
inet_ntoa(nbr->id));
usr.sbin/dvmrpd/nbrs2.c
69
recv_nbrs2(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/nbrs2.c
71
log_debug("recv_nbrs2: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
109
inet_ntoa(nbr->id), nbr_event_name(event),
usr.sbin/dvmrpd/neighbor.c
116
ret = nbr_act_reset_itimer(nbr);
usr.sbin/dvmrpd/neighbor.c
119
ret = nbr_act_start_itimer(nbr);
usr.sbin/dvmrpd/neighbor.c
125
ret = nbr_act_delete(nbr);
usr.sbin/dvmrpd/neighbor.c
128
ret = nbr_act_clear_lists(nbr);
usr.sbin/dvmrpd/neighbor.c
137
"event '%s', state '%s'", inet_ntoa(nbr->id),
usr.sbin/dvmrpd/neighbor.c
143
nbr->state = new_state;
usr.sbin/dvmrpd/neighbor.c
145
if (old_state != nbr->state) {
usr.sbin/dvmrpd/neighbor.c
146
if (old_state & NBR_STA_2_WAY || nbr->state & NBR_STA_2_WAY) {
usr.sbin/dvmrpd/neighbor.c
150
nbr->uptime = now.tv_sec;
usr.sbin/dvmrpd/neighbor.c
152
if (nbr->state & NBR_STA_2_WAY)
usr.sbin/dvmrpd/neighbor.c
153
nbr->iface->adj_cnt++;
usr.sbin/dvmrpd/neighbor.c
155
nbr->iface->adj_cnt--;
usr.sbin/dvmrpd/neighbor.c
162
inet_ntoa(nbr->id), nbr_state_name(old_state),
usr.sbin/dvmrpd/neighbor.c
163
nbr_state_name(nbr->state));
usr.sbin/dvmrpd/neighbor.c
186
struct nbr *
usr.sbin/dvmrpd/neighbor.c
190
struct nbr *nbr = NULL;
usr.sbin/dvmrpd/neighbor.c
192
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/dvmrpd/neighbor.c
195
nbr->state = NBR_STA_DOWN;
usr.sbin/dvmrpd/neighbor.c
196
nbr->id.s_addr = nbr_id;
usr.sbin/dvmrpd/neighbor.c
201
nbr->peerid = peercnt;
usr.sbin/dvmrpd/neighbor.c
202
head = NBR_HASH(nbr->peerid);
usr.sbin/dvmrpd/neighbor.c
203
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/dvmrpd/neighbor.c
206
nbr->iface = iface;
usr.sbin/dvmrpd/neighbor.c
207
LIST_INSERT_HEAD(&iface->nbr_list, nbr, entry);
usr.sbin/dvmrpd/neighbor.c
209
TAILQ_INIT(&nbr->rr_list);
usr.sbin/dvmrpd/neighbor.c
212
evtimer_set(&nbr->inactivity_timer, nbr_itimer, nbr);
usr.sbin/dvmrpd/neighbor.c
215
inet_ntoa(nbr->id), nbr->peerid);
usr.sbin/dvmrpd/neighbor.c
217
return (nbr);
usr.sbin/dvmrpd/neighbor.c
221
nbr_del(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
224
rr_list_clr(&nbr->rr_list);
usr.sbin/dvmrpd/neighbor.c
226
LIST_REMOVE(nbr, entry);
usr.sbin/dvmrpd/neighbor.c
227
LIST_REMOVE(nbr, hash);
usr.sbin/dvmrpd/neighbor.c
229
free(nbr);
usr.sbin/dvmrpd/neighbor.c
234
struct nbr *
usr.sbin/dvmrpd/neighbor.c
238
struct nbr *nbr;
usr.sbin/dvmrpd/neighbor.c
242
LIST_FOREACH(nbr, head, hash) {
usr.sbin/dvmrpd/neighbor.c
243
if (nbr->peerid == peerid)
usr.sbin/dvmrpd/neighbor.c
244
return (nbr);
usr.sbin/dvmrpd/neighbor.c
250
struct nbr *
usr.sbin/dvmrpd/neighbor.c
253
struct nbr *nbr = NULL;
usr.sbin/dvmrpd/neighbor.c
255
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/dvmrpd/neighbor.c
256
if (nbr->id.s_addr == src_ip) {
usr.sbin/dvmrpd/neighbor.c
257
return (nbr);
usr.sbin/dvmrpd/neighbor.c
268
struct nbr *nbr = arg;
usr.sbin/dvmrpd/neighbor.c
270
log_debug("nbr_itimer: %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
272
nbr_fsm(nbr, NBR_EVT_ITIMER);
usr.sbin/dvmrpd/neighbor.c
276
nbr_start_itimer(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
280
log_debug("nbr_start_itimer: %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
283
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/dvmrpd/neighbor.c
285
return (evtimer_add(&nbr->inactivity_timer, &tv));
usr.sbin/dvmrpd/neighbor.c
289
nbr_stop_itimer(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
291
return (evtimer_del(&nbr->inactivity_timer));
usr.sbin/dvmrpd/neighbor.c
295
nbr_reset_itimer(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
300
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/dvmrpd/neighbor.c
302
return (evtimer_add(&nbr->inactivity_timer, &tv));
usr.sbin/dvmrpd/neighbor.c
307
nbr_act_start(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
309
log_debug("nbr_act_start: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
315
nbr_act_reset_itimer(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
317
if (nbr_reset_itimer(nbr)) {
usr.sbin/dvmrpd/neighbor.c
319
"timer, neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
327
nbr_act_start_itimer(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
329
if (nbr_start_itimer(nbr)) {
usr.sbin/dvmrpd/neighbor.c
332
inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
336
if (nbr->state == NBR_STA_1_WAY) {
usr.sbin/dvmrpd/neighbor.c
339
inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
341
dvmrpe_imsg_compose_rde(IMSG_FULL_ROUTE_REPORT, nbr->peerid, 0,
usr.sbin/dvmrpd/neighbor.c
349
nbr_act_delete(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
353
log_debug("nbr_act_delete: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
356
if (nbr_stop_itimer(nbr)) {
usr.sbin/dvmrpd/neighbor.c
358
"neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
362
nm.address.s_addr = nbr->addr.s_addr;
usr.sbin/dvmrpd/neighbor.c
363
nm.ifindex = nbr->iface->ifindex;
usr.sbin/dvmrpd/neighbor.c
367
return (nbr_del(nbr));
usr.sbin/dvmrpd/neighbor.c
371
nbr_act_clear_lists(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
373
log_debug("nbr_act_clear_lists: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/neighbor.c
374
rr_list_clr(&nbr->rr_list);
usr.sbin/dvmrpd/neighbor.c
393
nbr_to_ctl(struct nbr *nbr)
usr.sbin/dvmrpd/neighbor.c
398
memcpy(nctl.name, nbr->iface->name, sizeof(nctl.name));
usr.sbin/dvmrpd/neighbor.c
399
memcpy(&nctl.id, &nbr->id, sizeof(nctl.id));
usr.sbin/dvmrpd/neighbor.c
400
memcpy(&nctl.addr, &nbr->addr, sizeof(nctl.addr));
usr.sbin/dvmrpd/neighbor.c
402
nctl.state = nbr->state;
usr.sbin/dvmrpd/neighbor.c
405
if (evtimer_pending(&nbr->inactivity_timer, &tv)) {
usr.sbin/dvmrpd/neighbor.c
411
if (nbr->state == NBR_STA_2_WAY) {
usr.sbin/dvmrpd/neighbor.c
412
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/dvmrpd/neighbor.c
42
LIST_HEAD(nbr_head, nbr);
usr.sbin/dvmrpd/neighbor.c
90
nbr_fsm(struct nbr *nbr, enum nbr_event event)
usr.sbin/dvmrpd/neighbor.c
97
old_state = nbr->state;
usr.sbin/dvmrpd/packet.c
108
struct nbr *nbr = NULL;
usr.sbin/dvmrpd/packet.c
174
nbr = nbr_new(ip_hdr.ip_src.s_addr, iface, 0);
usr.sbin/dvmrpd/packet.c
175
nbr_fsm(nbr, NBR_EVT_PROBE_RCVD);
usr.sbin/dvmrpd/packet.c
176
nbr->compat = 1;
usr.sbin/dvmrpd/packet.c
177
nbr->addr = ip_hdr.ip_src;
usr.sbin/dvmrpd/packet.c
183
if ((nbr = nbr_find_ip(iface, ip_hdr.ip_src.s_addr))
usr.sbin/dvmrpd/packet.c
207
recv_report(nbr, buf, len);
usr.sbin/dvmrpd/packet.c
210
recv_ask_nbrs2(nbr, buf,len);
usr.sbin/dvmrpd/packet.c
213
recv_nbrs2(nbr, buf,len);
usr.sbin/dvmrpd/packet.c
216
recv_prune(nbr, buf, len);
usr.sbin/dvmrpd/packet.c
219
recv_graft(nbr, buf,len);
usr.sbin/dvmrpd/packet.c
222
recv_graft_ack(nbr, buf,len);
usr.sbin/dvmrpd/probe.c
102
nbr_fsm(nbr, NBR_EVT_PROBE_RCVD);
usr.sbin/dvmrpd/probe.c
104
if ((nbr->gen_id != gen_id) || (nbr->capabilities != capabilities)) {
usr.sbin/dvmrpd/probe.c
105
if (!nbr->compat)
usr.sbin/dvmrpd/probe.c
106
nbr_fsm(nbr, NBR_EVT_1_WAY_RCVD);
usr.sbin/dvmrpd/probe.c
107
nbr->gen_id = gen_id;
usr.sbin/dvmrpd/probe.c
108
nbr->capabilities = capabilities;
usr.sbin/dvmrpd/probe.c
117
if (nbr->state < NBR_STA_2_WAY)
usr.sbin/dvmrpd/probe.c
118
nbr_fsm(nbr, NBR_EVT_2_WAY_RCVD);
usr.sbin/dvmrpd/probe.c
126
nbr_fsm(nbr, NBR_EVT_1_WAY_RCVD);
usr.sbin/dvmrpd/probe.c
42
struct nbr *nbr;
usr.sbin/dvmrpd/probe.c
59
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/dvmrpd/probe.c
60
if (nbr->state > NBR_STA_DOWN)
usr.sbin/dvmrpd/probe.c
61
ibuf_add(buf, &nbr->id, sizeof(nbr->id));
usr.sbin/dvmrpd/probe.c
82
struct nbr *nbr = NULL;
usr.sbin/dvmrpd/probe.c
86
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/dvmrpd/probe.c
87
if (nbr->id.s_addr == src_ip)
usr.sbin/dvmrpd/probe.c
95
if (!nbr) {
usr.sbin/dvmrpd/probe.c
96
nbr = nbr_new(src_ip, iface, 0);
usr.sbin/dvmrpd/probe.c
97
nbr->gen_id = gen_id;
usr.sbin/dvmrpd/probe.c
98
nbr->capabilities = capabilities;
usr.sbin/dvmrpd/probe.c
99
nbr->addr = src;
usr.sbin/dvmrpd/prune.c
106
p.ifindex = nbr->iface->ifindex;
usr.sbin/dvmrpd/prune.c
108
dvmrpe_imsg_compose_rde(IMSG_RECV_PRUNE, nbr->peerid, 0, &p, sizeof(p));
usr.sbin/dvmrpd/prune.c
36
send_prune(struct nbr *nbr, struct prune *p)
usr.sbin/dvmrpd/prune.c
43
log_debug("send_prune: interface %s nbr %s", nbr->iface->name,
usr.sbin/dvmrpd/prune.c
44
inet_ntoa(nbr->addr));
usr.sbin/dvmrpd/prune.c
46
if (nbr->iface->passive)
usr.sbin/dvmrpd/prune.c
53
dst.sin_addr = nbr->addr;
usr.sbin/dvmrpd/prune.c
55
if ((buf = ibuf_open(nbr->iface->mtu - sizeof(struct ip))) == NULL)
usr.sbin/dvmrpd/prune.c
59
if (gen_dvmrp_hdr(buf, nbr->iface, DVMRP_CODE_PRUNE))
usr.sbin/dvmrpd/prune.c
71
ret = send_packet(nbr->iface, buf, &dst);
usr.sbin/dvmrpd/prune.c
82
recv_prune(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/prune.c
87
log_debug("recv_prune: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/prune.c
91
inet_ntoa(nbr->id));
usr.sbin/dvmrpd/rde.h
66
struct in_addr nbr;
usr.sbin/dvmrpd/rde_mfc.c
446
pn->nbr.s_addr = p->nexthop.s_addr;
usr.sbin/dvmrpd/rde_mfc.c
464
if (p->nexthop.s_addr == pn->nbr.s_addr)
usr.sbin/dvmrpd/report.c
135
rr.nexthop = nbr->id;
usr.sbin/dvmrpd/report.c
139
rr.ifindex = nbr->iface->ifindex;
usr.sbin/dvmrpd/report.c
142
dvmrpe_imsg_compose_rde(IMSG_ROUTE_REPORT, nbr->peerid,
usr.sbin/dvmrpd/report.c
219
rr_list_send(struct rr_head *rr_list, struct iface *xiface, struct nbr *nbr)
usr.sbin/dvmrpd/report.c
231
iface = nbr->iface;
usr.sbin/dvmrpd/report.c
232
addr = nbr->addr;
usr.sbin/dvmrpd/report.c
75
recv_report(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/dvmrpd/report.c
81
log_debug("recv_report: neighbor ID %s", inet_ntoa(nbr->id));
usr.sbin/dvmrpd/report.c
83
if ((nbr->state != NBR_STA_2_WAY) && (!nbr->compat)) {
usr.sbin/dvmrpd/report.c
85
inet_ntoa(nbr->id), "2-WAY");
usr.sbin/eigrpctl/eigrpctl.c
184
memset(&nbr, 0, sizeof(nbr));
usr.sbin/eigrpctl/eigrpctl.c
185
nbr.af = res->family;
usr.sbin/eigrpctl/eigrpctl.c
186
nbr.as = res->as;
usr.sbin/eigrpctl/eigrpctl.c
187
memcpy(&nbr.addr, &res->addr, sizeof(res->addr));
usr.sbin/eigrpctl/eigrpctl.c
188
imsg_compose(ibuf, IMSG_CTL_CLEAR_NBR, 0, 0, -1, &nbr,
usr.sbin/eigrpctl/eigrpctl.c
189
sizeof(nbr));
usr.sbin/eigrpctl/eigrpctl.c
441
struct ctl_nbr *nbr;
usr.sbin/eigrpctl/eigrpctl.c
448
nbr = imsg->data;
usr.sbin/eigrpctl/eigrpctl.c
450
if (res->family != AF_UNSPEC && res->family != nbr->af)
usr.sbin/eigrpctl/eigrpctl.c
452
if (res->as != 0 && res->as != nbr->as)
usr.sbin/eigrpctl/eigrpctl.c
455
addr = log_addr(nbr->af, &nbr->addr);
usr.sbin/eigrpctl/eigrpctl.c
457
printf("%-4s %-5u %-18s", af_name(nbr->af), nbr->as, addr);
usr.sbin/eigrpctl/eigrpctl.c
460
printf(" %-11s %-10u %8s\n", nbr->ifname, nbr->hello_holdtime,
usr.sbin/eigrpctl/eigrpctl.c
461
fmt_timeframe_core(nbr->uptime));
usr.sbin/eigrpctl/eigrpctl.c
89
struct ctl_nbr nbr;
usr.sbin/eigrpd/eigrpd.h
124
struct nbr;
usr.sbin/eigrpd/eigrpd.h
125
RB_HEAD(nbr_addr_head, nbr);
usr.sbin/eigrpd/eigrpd.h
126
RB_HEAD(nbr_pid_head, nbr);
usr.sbin/eigrpd/eigrpd.h
223
TAILQ_HEAD(, nbr) nbr_list;
usr.sbin/eigrpd/eigrpd.h
224
struct nbr *self;
usr.sbin/eigrpd/eigrpe.c
398
struct nbr *nbr;
usr.sbin/eigrpd/eigrpe.c
432
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/eigrpd/eigrpe.c
433
if (nbr == NULL) {
usr.sbin/eigrpd/eigrpe.c
441
message_add(&nbr->update_list, &rinfo);
usr.sbin/eigrpd/eigrpe.c
444
message_add(&nbr->query_list, &rinfo);
usr.sbin/eigrpd/eigrpe.c
447
message_add(&nbr->reply_list, &rinfo);
usr.sbin/eigrpd/eigrpe.c
477
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/eigrpd/eigrpe.c
478
if (nbr == NULL) {
usr.sbin/eigrpd/eigrpe.c
486
send_update(nbr->ei, nbr, 0, &nbr->update_list);
usr.sbin/eigrpd/eigrpe.c
487
message_list_clr(&nbr->update_list);
usr.sbin/eigrpd/eigrpe.c
490
send_reply(nbr, &nbr->reply_list, 0);
usr.sbin/eigrpd/eigrpe.c
491
message_list_clr(&nbr->reply_list);
usr.sbin/eigrpd/eigrpe.c
494
send_query(nbr->ei, nbr, &nbr->query_list, 1);
usr.sbin/eigrpd/eigrpe.c
495
message_list_clr(&nbr->query_list);
usr.sbin/eigrpd/eigrpe.c
498
send_reply(nbr, &nbr->reply_list, 1);
usr.sbin/eigrpd/eigrpe.c
499
message_list_clr(&nbr->reply_list);
usr.sbin/eigrpd/eigrpe.c
524
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/eigrpd/eigrpe.c
525
if (nbr == NULL) {
usr.sbin/eigrpd/eigrpe.c
531
send_peerterm(nbr);
usr.sbin/eigrpd/eigrpe.c
532
nbr_del(nbr);
usr.sbin/eigrpd/eigrpe.c
659
struct nbr *nbr;
usr.sbin/eigrpd/eigrpe.c
663
RB_FOREACH(nbr, nbr_addr_head, &eigrp->nbrs) {
usr.sbin/eigrpd/eigrpe.c
664
if (nbr->flags & (F_EIGRP_NBR_PENDING|F_EIGRP_NBR_SELF))
usr.sbin/eigrpd/eigrpe.c
667
nctl = nbr_to_ctl(nbr);
usr.sbin/eigrpd/eigrpe.h
117
struct nbr *nbr_new(struct eigrp_iface *, union eigrpd_addr *,
usr.sbin/eigrpd/eigrpe.h
119
void nbr_init(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
120
void nbr_del(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
121
struct nbr *nbr_find(struct eigrp_iface *, union eigrpd_addr *);
usr.sbin/eigrpd/eigrpe.h
122
struct nbr *nbr_find_peerid(uint32_t);
usr.sbin/eigrpd/eigrpe.h
123
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
125
void nbr_start_timeout(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
129
void rtp_process_ack(struct nbr *, uint32_t);
usr.sbin/eigrpd/eigrpe.h
130
void rtp_send_ucast(struct nbr *, struct ibuf *);
usr.sbin/eigrpd/eigrpe.h
131
void rtp_send(struct eigrp_iface *, struct nbr *, struct ibuf *);
usr.sbin/eigrpd/eigrpe.h
132
void rtp_send_ack(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
134
void rtp_ack_start_timer(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
135
void rtp_ack_stop_timer(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
140
int send_packet(struct eigrp_iface *, struct nbr *, uint32_t,
usr.sbin/eigrpd/eigrpe.h
165
void send_peerterm(struct nbr *);
usr.sbin/eigrpd/eigrpe.h
166
void recv_hello(struct eigrp_iface *, union eigrpd_addr *, struct nbr *,
usr.sbin/eigrpd/eigrpe.h
170
void send_update(struct eigrp_iface *, struct nbr *, uint32_t,
usr.sbin/eigrpd/eigrpe.h
172
void recv_update(struct nbr *, struct rinfo_head *, uint32_t);
usr.sbin/eigrpd/eigrpe.h
175
void send_query(struct eigrp_iface *, struct nbr *, struct rinfo_head *,
usr.sbin/eigrpd/eigrpe.h
177
void recv_query(struct nbr *, struct rinfo_head *, int);
usr.sbin/eigrpd/eigrpe.h
180
void send_reply(struct nbr *, struct rinfo_head *, int);
usr.sbin/eigrpd/eigrpe.h
181
void recv_reply(struct nbr *, struct rinfo_head *, int);
usr.sbin/eigrpd/eigrpe.h
35
struct nbr *nbr;
usr.sbin/eigrpd/eigrpe.h
43
RB_ENTRY(nbr) addr_tree, pid_tree;
usr.sbin/eigrpd/eigrpe.h
44
TAILQ_ENTRY(nbr) entry;
usr.sbin/eigrpd/eigrpe.h
66
RB_PROTOTYPE(nbr_addr_head, nbr, addr_tree, nbr_compare)
usr.sbin/eigrpd/eigrpe.h
67
RB_PROTOTYPE(nbr_pid_head, nbr, pid_tree, nbr_pid_compare)
usr.sbin/eigrpd/hello.c
112
if (nbr) {
usr.sbin/eigrpd/hello.c
114
nbr_del(nbr);
usr.sbin/eigrpd/hello.c
119
if (nbr == NULL) {
usr.sbin/eigrpd/hello.c
126
nbr = nbr_new(ei, src, ntohs(tp->holdtime), 0);
usr.sbin/eigrpd/hello.c
131
send_update(nbr->ei, nbr, EIGRP_HDR_FLAG_INIT, NULL);
usr.sbin/eigrpd/hello.c
71
send_peerterm(struct nbr *nbr)
usr.sbin/eigrpd/hello.c
73
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/hello.c
85
if (gen_parameter_tlv(buf, nbr->ei, 1))
usr.sbin/eigrpd/hello.c
89
send_packet(nbr->ei, nbr, 0, buf);
usr.sbin/eigrpd/hello.c
99
recv_hello(struct eigrp_iface *ei, union eigrpd_addr *src, struct nbr *nbr,
usr.sbin/eigrpd/interface.c
409
struct nbr *nbr;
usr.sbin/eigrpd/interface.c
416
while ((nbr = TAILQ_FIRST(&ei->nbr_list)) != NULL)
usr.sbin/eigrpd/interface.c
417
nbr_del(nbr);
usr.sbin/eigrpd/interface.c
477
struct nbr *nbr;
usr.sbin/eigrpd/interface.c
518
TAILQ_FOREACH(nbr, &ei->nbr_list, entry)
usr.sbin/eigrpd/interface.c
519
if (!(nbr->flags & (F_EIGRP_NBR_PENDING|F_EIGRP_NBR_SELF)))
usr.sbin/eigrpd/logmsg.c
115
log_route_origin(int af, struct rde_nbr *nbr)
usr.sbin/eigrpd/logmsg.c
117
if (nbr->flags & F_RDE_NBR_SELF) {
usr.sbin/eigrpd/logmsg.c
118
if (nbr->flags & F_RDE_NBR_REDIST)
usr.sbin/eigrpd/logmsg.c
120
if (nbr->flags & F_RDE_NBR_SUMMARY)
usr.sbin/eigrpd/logmsg.c
126
return (log_addr(af, &nbr->addr));
usr.sbin/eigrpd/neighbor.c
103
nbr->flags &= ~F_EIGRP_NBR_PENDING;
usr.sbin/eigrpd/neighbor.c
106
nbr->uptime = now.tv_sec;
usr.sbin/eigrpd/neighbor.c
108
nbr_update_peerid(nbr);
usr.sbin/eigrpd/neighbor.c
111
rnbr.addr = nbr->addr;
usr.sbin/eigrpd/neighbor.c
112
rnbr.ifaceid = nbr->ei->ifaceid;
usr.sbin/eigrpd/neighbor.c
113
if (nbr->flags & F_EIGRP_NBR_SELF)
usr.sbin/eigrpd/neighbor.c
117
eigrpe_imsg_compose_rde(IMSG_NEIGHBOR_UP, nbr->peerid, 0, &rnbr,
usr.sbin/eigrpd/neighbor.c
122
nbr_del(struct nbr *nbr)
usr.sbin/eigrpd/neighbor.c
124
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/neighbor.c
127
if (!(nbr->flags & F_EIGRP_NBR_SELF))
usr.sbin/eigrpd/neighbor.c
129
log_addr(eigrp->af, &nbr->addr));
usr.sbin/eigrpd/neighbor.c
131
eigrpe_imsg_compose_rde(IMSG_NEIGHBOR_DOWN, nbr->peerid, 0, NULL, 0);
usr.sbin/eigrpd/neighbor.c
133
nbr_stop_timeout(nbr);
usr.sbin/eigrpd/neighbor.c
136
while ((pkt = TAILQ_FIRST(&nbr->retrans_list)) != NULL)
usr.sbin/eigrpd/neighbor.c
139
if (nbr->peerid)
usr.sbin/eigrpd/neighbor.c
140
RB_REMOVE(nbr_pid_head, &nbrs_by_pid, nbr);
usr.sbin/eigrpd/neighbor.c
141
RB_REMOVE(nbr_addr_head, &eigrp->nbrs, nbr);
usr.sbin/eigrpd/neighbor.c
142
TAILQ_REMOVE(&nbr->ei->nbr_list, nbr, entry);
usr.sbin/eigrpd/neighbor.c
144
free(nbr);
usr.sbin/eigrpd/neighbor.c
148
nbr_update_peerid(struct nbr *nbr)
usr.sbin/eigrpd/neighbor.c
152
if (nbr->peerid)
usr.sbin/eigrpd/neighbor.c
153
RB_REMOVE(nbr_pid_head, &nbrs_by_pid, nbr);
usr.sbin/eigrpd/neighbor.c
158
nbr->peerid = peercnt;
usr.sbin/eigrpd/neighbor.c
160
if (RB_INSERT(nbr_pid_head, &nbrs_by_pid, nbr) != NULL)
usr.sbin/eigrpd/neighbor.c
164
struct nbr *
usr.sbin/eigrpd/neighbor.c
167
struct nbr n;
usr.sbin/eigrpd/neighbor.c
181
struct nbr *
usr.sbin/eigrpd/neighbor.c
184
struct nbr n;
usr.sbin/eigrpd/neighbor.c
190
nbr_to_ctl(struct nbr *nbr)
usr.sbin/eigrpd/neighbor.c
195
nctl.af = nbr->ei->eigrp->af;
usr.sbin/eigrpd/neighbor.c
196
nctl.as = nbr->ei->eigrp->as;
usr.sbin/eigrpd/neighbor.c
197
memcpy(nctl.ifname, nbr->ei->iface->name, sizeof(nctl.ifname));
usr.sbin/eigrpd/neighbor.c
198
nctl.addr = nbr->addr;
usr.sbin/eigrpd/neighbor.c
199
nctl.hello_holdtime = nbr->hello_holdtime;
usr.sbin/eigrpd/neighbor.c
201
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/eigrpd/neighbor.c
210
struct nbr *nbr, *safe;
usr.sbin/eigrpd/neighbor.c
218
RB_FOREACH_SAFE(nbr, nbr_addr_head, &eigrp->nbrs, safe) {
usr.sbin/eigrpd/neighbor.c
219
if (nbr->flags & (F_EIGRP_NBR_PENDING|F_EIGRP_NBR_SELF))
usr.sbin/eigrpd/neighbor.c
222
eigrp_addrcmp(nctl->af, &nctl->addr, &nbr->addr))
usr.sbin/eigrpd/neighbor.c
226
log_addr(nbr->ei->eigrp->af, &nbr->addr));
usr.sbin/eigrpd/neighbor.c
227
send_peerterm(nbr);
usr.sbin/eigrpd/neighbor.c
228
nbr_del(nbr);
usr.sbin/eigrpd/neighbor.c
238
struct nbr *nbr = arg;
usr.sbin/eigrpd/neighbor.c
239
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/neighbor.c
241
log_debug("%s: neighbor %s", __func__, log_addr(eigrp->af, &nbr->addr));
usr.sbin/eigrpd/neighbor.c
243
nbr_del(nbr);
usr.sbin/eigrpd/neighbor.c
247
nbr_start_timeout(struct nbr *nbr)
usr.sbin/eigrpd/neighbor.c
252
tv.tv_sec = nbr->hello_holdtime;
usr.sbin/eigrpd/neighbor.c
254
if (evtimer_add(&nbr->ev_hello_timeout, &tv) == -1)
usr.sbin/eigrpd/neighbor.c
259
nbr_stop_timeout(struct nbr *nbr)
usr.sbin/eigrpd/neighbor.c
261
if (evtimer_pending(&nbr->ev_hello_timeout, NULL) &&
usr.sbin/eigrpd/neighbor.c
262
evtimer_del(&nbr->ev_hello_timeout) == -1)
usr.sbin/eigrpd/neighbor.c
29
static __inline int nbr_compare(struct nbr *, struct nbr *);
usr.sbin/eigrpd/neighbor.c
30
static __inline int nbr_pid_compare(struct nbr *, struct nbr *);
usr.sbin/eigrpd/neighbor.c
31
static void nbr_update_peerid(struct nbr *);
usr.sbin/eigrpd/neighbor.c
33
static void nbr_stop_timeout(struct nbr *);
usr.sbin/eigrpd/neighbor.c
35
RB_GENERATE(nbr_addr_head, nbr, addr_tree, nbr_compare)
usr.sbin/eigrpd/neighbor.c
36
RB_GENERATE(nbr_pid_head, nbr, pid_tree, nbr_pid_compare)
usr.sbin/eigrpd/neighbor.c
41
nbr_compare(struct nbr *a, struct nbr *b)
usr.sbin/eigrpd/neighbor.c
52
nbr_pid_compare(struct nbr *a, struct nbr *b)
usr.sbin/eigrpd/neighbor.c
57
struct nbr *
usr.sbin/eigrpd/neighbor.c
62
struct nbr *nbr;
usr.sbin/eigrpd/neighbor.c
68
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/eigrpd/neighbor.c
71
nbr->ei = ei;
usr.sbin/eigrpd/neighbor.c
72
TAILQ_INSERT_TAIL(&ei->nbr_list, nbr, entry);
usr.sbin/eigrpd/neighbor.c
73
nbr->addr = *addr;
usr.sbin/eigrpd/neighbor.c
74
nbr->peerid = 0;
usr.sbin/eigrpd/neighbor.c
75
nbr->hello_holdtime = holdtime;
usr.sbin/eigrpd/neighbor.c
76
nbr->flags = F_EIGRP_NBR_PENDING;
usr.sbin/eigrpd/neighbor.c
78
nbr->flags |= F_EIGRP_NBR_SELF;
usr.sbin/eigrpd/neighbor.c
79
TAILQ_INIT(&nbr->update_list);
usr.sbin/eigrpd/neighbor.c
80
TAILQ_INIT(&nbr->query_list);
usr.sbin/eigrpd/neighbor.c
81
TAILQ_INIT(&nbr->reply_list);
usr.sbin/eigrpd/neighbor.c
82
TAILQ_INIT(&nbr->retrans_list);
usr.sbin/eigrpd/neighbor.c
84
if (RB_INSERT(nbr_addr_head, &eigrp->nbrs, nbr) != NULL)
usr.sbin/eigrpd/neighbor.c
89
evtimer_set(&nbr->ev_ack, rtp_ack_timer, nbr);
usr.sbin/eigrpd/neighbor.c
90
evtimer_set(&nbr->ev_hello_timeout, nbr_timeout, nbr);
usr.sbin/eigrpd/neighbor.c
91
nbr_start_timeout(nbr);
usr.sbin/eigrpd/neighbor.c
94
return (nbr);
usr.sbin/eigrpd/neighbor.c
98
nbr_init(struct nbr *nbr)
usr.sbin/eigrpd/packet.c
126
send_packet_v6(struct iface *iface, struct nbr *nbr, struct ibuf *buf)
usr.sbin/eigrpd/packet.c
134
if (nbr) {
usr.sbin/eigrpd/packet.c
135
sa6.sin6_addr = nbr->addr.v6;
usr.sbin/eigrpd/packet.c
159
send_packet(struct eigrp_iface *ei, struct nbr *nbr, uint32_t flags,
usr.sbin/eigrpd/packet.c
171
if (nbr) {
usr.sbin/eigrpd/packet.c
173
nbr->recv_seq) == -1)
usr.sbin/eigrpd/packet.c
175
rtp_ack_stop_timer(nbr);
usr.sbin/eigrpd/packet.c
199
if (nbr)
usr.sbin/eigrpd/packet.c
201
log_addr(eigrp->af, &nbr->addr));
usr.sbin/eigrpd/packet.c
213
if (send_packet_v4(iface, nbr, buf) < 0)
usr.sbin/eigrpd/packet.c
217
if (send_packet_v6(iface, nbr, buf) < 0)
usr.sbin/eigrpd/packet.c
254
recv_packet_nbr(struct nbr *nbr, struct eigrp_hdr *eigrp_hdr,
usr.sbin/eigrpd/packet.c
268
nbr_start_timeout(nbr);
usr.sbin/eigrpd/packet.c
273
nbr->flags |= F_EIGRP_NBR_CR_MODE;
usr.sbin/eigrpd/packet.c
279
if_primary_addr(nbr->ei->iface)) {
usr.sbin/eigrpd/packet.c
280
nbr->flags &= ~F_EIGRP_NBR_CR_MODE;
usr.sbin/eigrpd/packet.c
286
&nbr->ei->iface->linklocal)) {
usr.sbin/eigrpd/packet.c
287
nbr->flags &= ~F_EIGRP_NBR_CR_MODE;
usr.sbin/eigrpd/packet.c
296
nbr->next_mcast_seq = ntohl(tm->seq);
usr.sbin/eigrpd/packet.c
300
if (!(nbr->flags & F_EIGRP_NBR_CR_MODE))
usr.sbin/eigrpd/packet.c
302
nbr->flags &= ~F_EIGRP_NBR_CR_MODE;
usr.sbin/eigrpd/packet.c
303
if (ntohl(eigrp_hdr->seq_num) != nbr->next_mcast_seq)
usr.sbin/eigrpd/packet.c
309
rtp_process_ack(nbr, ack);
usr.sbin/eigrpd/packet.c
312
if (nbr->recv_seq >= seq &&
usr.sbin/eigrpd/packet.c
313
!(nbr->recv_seq == UINT32_MAX && seq == 1)) {
usr.sbin/eigrpd/packet.c
315
rtp_send_ack(nbr);
usr.sbin/eigrpd/packet.c
318
nbr->recv_seq = seq;
usr.sbin/eigrpd/packet.c
329
struct nbr *nbr;
usr.sbin/eigrpd/packet.c
36
static int send_packet_v4(struct iface *, struct nbr *, struct ibuf *);
usr.sbin/eigrpd/packet.c
37
static int send_packet_v6(struct iface *, struct nbr *, struct ibuf *);
usr.sbin/eigrpd/packet.c
38
static int recv_packet_nbr(struct nbr *, struct eigrp_hdr *,
usr.sbin/eigrpd/packet.c
422
nbr = nbr_find(ei, src);
usr.sbin/eigrpd/packet.c
423
if (nbr == NULL && (eigrp_hdr->opcode != EIGRP_OPC_HELLO ||
usr.sbin/eigrpd/packet.c
427
} else if (nbr && recv_packet_nbr(nbr, eigrp_hdr, &seq_addr_list,
usr.sbin/eigrpd/packet.c
434
opcode_name(eigrp_hdr->opcode), log_addr(af, &nbr->addr),
usr.sbin/eigrpd/packet.c
442
recv_hello(ei, src, nbr, tp);
usr.sbin/eigrpd/packet.c
448
recv_update(nbr, &rinfo_list, ntohl(eigrp_hdr->flags));
usr.sbin/eigrpd/packet.c
452
recv_query(nbr, &rinfo_list, 0);
usr.sbin/eigrpd/packet.c
456
recv_reply(nbr, &rinfo_list, 0);
usr.sbin/eigrpd/packet.c
460
recv_query(nbr, &rinfo_list, 1);
usr.sbin/eigrpd/packet.c
464
recv_reply(nbr, &rinfo_list, 1);
usr.sbin/eigrpd/packet.c
68
send_packet_v4(struct iface *iface, struct nbr *nbr, struct ibuf *buf)
usr.sbin/eigrpd/packet.c
78
if (nbr)
usr.sbin/eigrpd/packet.c
79
dst.sin_addr = nbr->addr.v4;
usr.sbin/eigrpd/query.c
104
rtp_ack_start_timer(nbr);
usr.sbin/eigrpd/query.c
112
eigrpe_imsg_compose_rde(type, nbr->peerid, 0, &re->rinfo,
usr.sbin/eigrpd/query.c
33
send_query(struct eigrp_iface *ei, struct nbr *nbr,
usr.sbin/eigrpd/query.c
76
rtp_send(ei, nbr, buf);
usr.sbin/eigrpd/query.c
88
rtp_send(ei, nbr, buf);
usr.sbin/eigrpd/query.c
99
recv_query(struct nbr *nbr, struct rinfo_head *rinfo_list, int siaquery)
usr.sbin/eigrpd/rde.c
171
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde.c
213
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/eigrpd/rde.c
214
if (nbr == NULL) {
usr.sbin/eigrpd/rde.c
220
rde_check_link_down_nbr(nbr);
usr.sbin/eigrpd/rde.c
225
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/eigrpd/rde.c
226
if (nbr == NULL) {
usr.sbin/eigrpd/rde.c
232
rt_snap(nbr);
usr.sbin/eigrpd/rde.c
239
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/eigrpd/rde.c
240
if (nbr == NULL) {
usr.sbin/eigrpd/rde.c
252
rde_check_update(nbr, &rinfo);
usr.sbin/eigrpd/rde.c
255
rde_check_query(nbr, &rinfo, 0);
usr.sbin/eigrpd/rde.c
258
rde_check_reply(nbr, &rinfo, 0);
usr.sbin/eigrpd/rde.c
261
rde_check_query(nbr, &rinfo, 1);
usr.sbin/eigrpd/rde.c
264
rde_check_reply(nbr, &rinfo, 1);
usr.sbin/eigrpd/rde.c
458
struct rde_nbr nbr;
usr.sbin/eigrpd/rde.c
460
memset(&nbr, 0, sizeof(nbr));
usr.sbin/eigrpd/rde.c
461
nbr.flags = F_RDE_NBR_SELF | F_RDE_NBR_REDIST;
usr.sbin/eigrpd/rde.c
462
eigrp->rnbr_redist = rde_nbr_new(NBR_IDSELF, &nbr);
usr.sbin/eigrpd/rde.c
464
nbr.flags = F_RDE_NBR_SELF | F_RDE_NBR_SUMMARY;
usr.sbin/eigrpd/rde.c
465
eigrp->rnbr_summary = rde_nbr_new(NBR_IDSELF, &nbr);
usr.sbin/eigrpd/rde.c
472
struct rde_nbr *nbr, *safe;
usr.sbin/eigrpd/rde.c
480
RB_FOREACH_SAFE(nbr, rde_nbr_head, &rde_nbrs, safe)
usr.sbin/eigrpd/rde.c
481
if (nbr->eigrp == eigrp)
usr.sbin/eigrpd/rde.c
482
rde_nbr_del(nbr, 0);
usr.sbin/eigrpd/rde.c
492
struct eigrp *eigrp = route->nbr->eigrp;
usr.sbin/eigrpd/rde.c
497
log_addr(eigrp->af, &route->nbr->addr));
usr.sbin/eigrpd/rde.c
503
if (route->nbr->ei) {
usr.sbin/eigrpd/rde.c
505
kr.ifindex = route->nbr->ei->iface->ifindex;
usr.sbin/eigrpd/rde.c
523
if (route->nbr->flags & F_RDE_NBR_SUMMARY)
usr.sbin/eigrpd/rde.c
537
struct eigrp *eigrp = route->nbr->eigrp;
usr.sbin/eigrpd/rde.c
542
log_addr(eigrp->af, &route->nbr->addr));
usr.sbin/eigrpd/rde.c
548
if (route->nbr->ei) {
usr.sbin/eigrpd/rde.c
550
kr.ifindex = route->nbr->ei->iface->ifindex;
usr.sbin/eigrpd/rde.c
568
if (route->nbr->flags & F_RDE_NBR_SUMMARY)
usr.sbin/eigrpd/rde.c
723
rt_snap(struct rde_nbr *nbr)
usr.sbin/eigrpd/rde.c
725
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde.c
731
!rde_summary_check(nbr->ei, &rn->prefix, rn->prefixlen)) {
usr.sbin/eigrpd/rde.c
734
nbr->peerid, 0, &ri, sizeof(ri));
usr.sbin/eigrpd/rde.c
737
rde_imsg_compose_eigrpe(IMSG_SEND_UPDATE_END, nbr->peerid, 0,
usr.sbin/eigrpd/rde.c
747
rtctl.af = route->nbr->eigrp->af;
usr.sbin/eigrpd/rde.c
748
rtctl.as = route->nbr->eigrp->as;
usr.sbin/eigrpd/rde.c
753
if (route->nbr->flags & F_RDE_NBR_REDIST)
usr.sbin/eigrpd/rde.c
755
else if (route->nbr->flags & F_RDE_NBR_SUMMARY)
usr.sbin/eigrpd/rde.c
758
memcpy(rtctl.ifname, route->nbr->ei->iface->name,
usr.sbin/eigrpd/rde.c
776
if (route->nbr == rn->successor.nbr)
usr.sbin/eigrpd/rde.h
60
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde.h
65
struct rde_nbr *nbr; /* advertising nbr */
usr.sbin/eigrpd/rde.h
87
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde_dual.c
1009
if (nbr == rn->successor.nbr)
usr.sbin/eigrpd/rde_dual.c
1015
rde_send_reply(nbr, &sri, 0);
usr.sbin/eigrpd/rde_dual.c
1021
if (nbr == rn->successor.nbr) {
usr.sbin/eigrpd/rde_dual.c
1027
rde_send_reply(nbr, &sri, 0);
usr.sbin/eigrpd/rde_dual.c
1039
rde_send_reply(nbr, &sri, 1);
usr.sbin/eigrpd/rde_dual.c
1051
old_successor = rn->successor.nbr;
usr.sbin/eigrpd/rde_dual.c
1126
if (rn->state == DUAL_STA_PASSIVE && rn->successor.nbr == NULL)
usr.sbin/eigrpd/rde_dual.c
1131
rde_check_reply(struct rde_nbr *nbr, struct rinfo *ri, int siareply)
usr.sbin/eigrpd/rde_dual.c
1133
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
1146
reply = reply_outstanding_find(rn, nbr);
usr.sbin/eigrpd/rde_dual.c
1157
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
1161
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
1163
route = route_new(rn, nbr, ri);
usr.sbin/eigrpd/rde_dual.c
1174
rde_check_link_down_rn(struct rde_nbr *nbr, struct rt_node *rn,
usr.sbin/eigrpd/rde_dual.c
1177
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
1212
if (nbr == rn->successor.nbr)
usr.sbin/eigrpd/rde_dual.c
1216
if (nbr == rn->successor.nbr)
usr.sbin/eigrpd/rde_dual.c
1222
reply = reply_outstanding_find(rn, nbr);
usr.sbin/eigrpd/rde_dual.c
1225
rde_check_reply(nbr, &ri, 0);
usr.sbin/eigrpd/rde_dual.c
1231
rde_check_link_down_nbr(struct rde_nbr *nbr)
usr.sbin/eigrpd/rde_dual.c
1233
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
1238
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
1240
rde_check_link_down_rn(nbr, rn, route);
usr.sbin/eigrpd/rde_dual.c
1241
if (rn->successor.nbr == nbr)
usr.sbin/eigrpd/rde_dual.c
1242
rn->successor.nbr = NULL;
usr.sbin/eigrpd/rde_dual.c
1250
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde_dual.c
1252
RB_FOREACH(nbr, rde_nbr_head, &rde_nbrs)
usr.sbin/eigrpd/rde_dual.c
1253
if (nbr->ei->iface->ifindex == ifindex)
usr.sbin/eigrpd/rde_dual.c
1254
rde_check_link_down_nbr(nbr);
usr.sbin/eigrpd/rde_dual.c
1260
rde_check_link_cost_change(struct rde_nbr *nbr, struct eigrp_iface *ei)
usr.sbin/eigrpd/rde_dual.c
1283
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde_dual.c
1285
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/eigrpd/rde_dual.c
1288
nbr->peerid = peerid;
usr.sbin/eigrpd/rde_dual.c
1289
nbr->ifaceid = new->ifaceid;
usr.sbin/eigrpd/rde_dual.c
1290
nbr->addr = new->addr;
usr.sbin/eigrpd/rde_dual.c
1291
nbr->ei = eigrp_if_lookup_id(nbr->ifaceid);
usr.sbin/eigrpd/rde_dual.c
1292
if (nbr->ei)
usr.sbin/eigrpd/rde_dual.c
1293
nbr->eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/rde_dual.c
1294
TAILQ_INIT(&nbr->rijk);
usr.sbin/eigrpd/rde_dual.c
1295
nbr->flags = new->flags;
usr.sbin/eigrpd/rde_dual.c
1297
if (nbr->peerid != NBR_IDSELF &&
usr.sbin/eigrpd/rde_dual.c
1298
RB_INSERT(rde_nbr_head, &rde_nbrs, nbr) != NULL)
usr.sbin/eigrpd/rde_dual.c
1301
return (nbr);
usr.sbin/eigrpd/rde_dual.c
1305
rde_nbr_del(struct rde_nbr *nbr, int peerterm)
usr.sbin/eigrpd/rde_dual.c
1310
rde_imsg_compose_eigrpe(IMSG_NEIGHBOR_DOWN, nbr->peerid,
usr.sbin/eigrpd/rde_dual.c
1313
while((reply = TAILQ_FIRST(&nbr->rijk)) != NULL)
usr.sbin/eigrpd/rde_dual.c
1316
if (nbr->peerid != NBR_IDSELF)
usr.sbin/eigrpd/rde_dual.c
1317
RB_REMOVE(rde_nbr_head, &rde_nbrs, nbr);
usr.sbin/eigrpd/rde_dual.c
1318
free(nbr);
usr.sbin/eigrpd/rde_dual.c
245
route_find(struct rde_nbr *nbr, struct rt_node *rn)
usr.sbin/eigrpd/rde_dual.c
250
if (route->nbr == nbr)
usr.sbin/eigrpd/rde_dual.c
257
route_new(struct rt_node *rn, struct rde_nbr *nbr, struct rinfo *ri)
usr.sbin/eigrpd/rde_dual.c
265
route->nbr = nbr;
usr.sbin/eigrpd/rde_dual.c
270
route->nexthop = nbr->addr;
usr.sbin/eigrpd/rde_dual.c
284
log_prefix(rn), log_route_origin(eigrp->af, route->nbr),
usr.sbin/eigrpd/rde_dual.c
296
log_route_origin(eigrp->af, route->nbr));
usr.sbin/eigrpd/rde_dual.c
402
struct eigrp_iface *ei = route->nbr->ei;
usr.sbin/eigrpd/rde_dual.c
413
if (route->nbr->flags & F_RDE_NBR_SELF)
usr.sbin/eigrpd/rde_dual.c
442
reply_outstanding_add(struct rt_node *rn, struct rde_nbr *nbr)
usr.sbin/eigrpd/rde_dual.c
454
reply->nbr = nbr;
usr.sbin/eigrpd/rde_dual.c
456
TAILQ_INSERT_TAIL(&nbr->rijk, reply, nbr_entry);
usr.sbin/eigrpd/rde_dual.c
465
reply_outstanding_find(struct rt_node *rn, struct rde_nbr *nbr)
usr.sbin/eigrpd/rde_dual.c
470
if (reply->nbr == nbr)
usr.sbin/eigrpd/rde_dual.c
482
TAILQ_REMOVE(&reply->nbr->rijk, reply, nbr_entry);
usr.sbin/eigrpd/rde_dual.c
490
struct rde_nbr *nbr = reply->nbr;
usr.sbin/eigrpd/rde_dual.c
493
log_addr(nbr->eigrp->af, &nbr->addr));
usr.sbin/eigrpd/rde_dual.c
495
rde_nbr_del(reply->nbr, 1);
usr.sbin/eigrpd/rde_dual.c
501
struct eigrp *eigrp = reply->nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
522
struct rde_nbr *nbr = reply->nbr;
usr.sbin/eigrpd/rde_dual.c
526
log_debug("%s: nbr %s prefix %s", __func__, log_addr(nbr->eigrp->af,
usr.sbin/eigrpd/rde_dual.c
527
&nbr->addr), log_prefix(rn));
usr.sbin/eigrpd/rde_dual.c
531
log_addr(nbr->eigrp->af, &nbr->addr));
usr.sbin/eigrpd/rde_dual.c
532
rde_nbr_del(nbr, 1);
usr.sbin/eigrpd/rde_dual.c
555
rde_send_siaquery(nbr, &ri);
usr.sbin/eigrpd/rde_dual.c
561
struct eigrp *eigrp = reply->nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
586
if (rn->successor.nbr == NULL) {
usr.sbin/eigrpd/rde_dual.c
623
if (rn->successor.nbr &&
usr.sbin/eigrpd/rde_dual.c
624
(rn->successor.nbr->flags & F_RDE_NBR_LOCAL))
usr.sbin/eigrpd/rde_dual.c
629
if (route->nbr->flags & F_RDE_NBR_REDIST)
usr.sbin/eigrpd/rde_dual.c
674
rn->successor.nbr = NULL;
usr.sbin/eigrpd/rde_dual.c
684
rn->successor.nbr = successor->nbr;
usr.sbin/eigrpd/rde_dual.c
712
if (route->nbr->flags & F_RDE_NBR_LOCAL)
usr.sbin/eigrpd/rde_dual.c
780
if (rn->successor.nbr && rn->successor.nbr->ei == ei &&
usr.sbin/eigrpd/rde_dual.c
798
rde_send_siaquery(struct rde_nbr *nbr, struct rinfo *ri)
usr.sbin/eigrpd/rde_dual.c
800
rde_imsg_compose_eigrpe(IMSG_SEND_QUERY, nbr->peerid, 0,
usr.sbin/eigrpd/rde_dual.c
802
rde_imsg_compose_eigrpe(IMSG_SEND_SIAQUERY_END, nbr->peerid, 0,
usr.sbin/eigrpd/rde_dual.c
810
struct rde_nbr *nbr;
usr.sbin/eigrpd/rde_dual.c
818
if (rn->successor.nbr && rn->successor.nbr->ei == ei &&
usr.sbin/eigrpd/rde_dual.c
825
RB_FOREACH(nbr, rde_nbr_head, &rde_nbrs)
usr.sbin/eigrpd/rde_dual.c
826
if (nbr->ei->eigrp == eigrp && !(nbr->flags & F_RDE_NBR_SELF)) {
usr.sbin/eigrpd/rde_dual.c
828
if (rn->successor.nbr &&
usr.sbin/eigrpd/rde_dual.c
829
rn->successor.nbr->ei == nbr->ei &&
usr.sbin/eigrpd/rde_dual.c
830
nbr->ei->splithorizon)
usr.sbin/eigrpd/rde_dual.c
833
reply_outstanding_add(rn, nbr);
usr.sbin/eigrpd/rde_dual.c
850
rde_send_reply(struct rde_nbr *nbr, struct rinfo *ri, int siareply)
usr.sbin/eigrpd/rde_dual.c
854
if (ri->metric.hop_count >= nbr->eigrp->maximum_hops ||
usr.sbin/eigrpd/rde_dual.c
855
rde_summary_check(nbr->ei, &ri->prefix, ri->prefixlen))
usr.sbin/eigrpd/rde_dual.c
863
rde_imsg_compose_eigrpe(IMSG_SEND_REPLY, nbr->peerid, 0,
usr.sbin/eigrpd/rde_dual.c
865
rde_imsg_compose_eigrpe(type, nbr->peerid, 0, NULL, 0);
usr.sbin/eigrpd/rde_dual.c
869
rde_check_update(struct rde_nbr *nbr, struct rinfo *ri)
usr.sbin/eigrpd/rde_dual.c
871
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
883
route = route_new(rn, nbr, ri);
usr.sbin/eigrpd/rde_dual.c
890
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
894
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
896
route = route_new(rn, nbr, ri);
usr.sbin/eigrpd/rde_dual.c
937
rde_check_query(struct rde_nbr *nbr, struct rinfo *ri, int siaquery)
usr.sbin/eigrpd/rde_dual.c
939
struct eigrp *eigrp = nbr->eigrp;
usr.sbin/eigrpd/rde_dual.c
957
rde_send_reply(nbr, &sri, 0);
usr.sbin/eigrpd/rde_dual.c
963
route = route_new(rn, nbr, ri);
usr.sbin/eigrpd/rde_dual.c
971
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
975
route = route_find(nbr, rn);
usr.sbin/eigrpd/rde_dual.c
977
route = route_new(rn, nbr, ri);
usr.sbin/eigrpd/rde_dual.c
999
rde_send_reply(nbr, &sri, 0);
usr.sbin/eigrpd/reply.c
110
rtp_send_ack(nbr);
usr.sbin/eigrpd/reply.c
118
eigrpe_imsg_compose_rde(type, nbr->peerid, 0, &re->rinfo,
usr.sbin/eigrpd/reply.c
33
send_reply(struct nbr *nbr, struct rinfo_head *rinfo_list, int siareply)
usr.sbin/eigrpd/reply.c
35
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/reply.c
74
if (size + route_len > nbr->ei->iface->mtu) {
usr.sbin/eigrpd/reply.c
75
rtp_send_ucast(nbr, buf);
usr.sbin/eigrpd/reply.c
88
rtp_send_ucast(nbr, buf);
usr.sbin/eigrpd/reply.c
99
recv_reply(struct nbr *nbr, struct rinfo_head *rinfo_list, int siareply)
usr.sbin/eigrpd/rtp.c
101
pkt = TAILQ_FIRST(&nbr->retrans_list);
usr.sbin/eigrpd/rtp.c
104
log_addr(eigrp->af, &nbr->addr), ack_num);
usr.sbin/eigrpd/rtp.c
110
pkt = TAILQ_FIRST(&nbr->retrans_list);
usr.sbin/eigrpd/rtp.c
120
send_packet(pkt->nbr->ei, pkt->nbr, 0, pkt->pbuf->buf);
usr.sbin/eigrpd/rtp.c
127
if (TAILQ_EMPTY(&pkt->nbr->retrans_list))
usr.sbin/eigrpd/rtp.c
130
TAILQ_INSERT_TAIL(&pkt->nbr->retrans_list, pkt, entry);
usr.sbin/eigrpd/rtp.c
145
rtp_send_ucast(struct nbr *nbr, struct ibuf *buf)
usr.sbin/eigrpd/rtp.c
147
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/rtp.c
152
pkt = rtp_packet_new(nbr, eigrp->seq_num, pbuf);
usr.sbin/eigrpd/rtp.c
161
struct nbr *nbr;
usr.sbin/eigrpd/rtp.c
169
TAILQ_FOREACH(nbr, &ei->nbr_list, entry) {
usr.sbin/eigrpd/rtp.c
170
if (nbr->flags & F_EIGRP_NBR_SELF)
usr.sbin/eigrpd/rtp.c
172
if (!TAILQ_EMPTY(&nbr->retrans_list))
usr.sbin/eigrpd/rtp.c
192
TAILQ_FOREACH(nbr, &ei->nbr_list, entry) {
usr.sbin/eigrpd/rtp.c
193
if (TAILQ_EMPTY(&nbr->retrans_list))
usr.sbin/eigrpd/rtp.c
198
sa->addr = nbr->addr;
usr.sbin/eigrpd/rtp.c
210
TAILQ_FOREACH(nbr, &ei->nbr_list, entry) {
usr.sbin/eigrpd/rtp.c
211
pkt = rtp_packet_new(nbr, eigrp->seq_num, pbuf);
usr.sbin/eigrpd/rtp.c
212
TAILQ_INSERT_TAIL(&nbr->retrans_list, pkt, entry);
usr.sbin/eigrpd/rtp.c
219
rtp_send(struct eigrp_iface *ei, struct nbr *nbr, struct ibuf *buf)
usr.sbin/eigrpd/rtp.c
221
if (nbr)
usr.sbin/eigrpd/rtp.c
222
rtp_send_ucast(nbr, buf);
usr.sbin/eigrpd/rtp.c
228
rtp_send_ack(struct nbr *nbr)
usr.sbin/eigrpd/rtp.c
230
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/rtp.c
245
send_packet(nbr->ei, nbr, 0, buf);
usr.sbin/eigrpd/rtp.c
255
struct eigrp *eigrp = pkt->nbr->ei->eigrp;
usr.sbin/eigrpd/rtp.c
261
log_addr(eigrp->af, &pkt->nbr->addr));
usr.sbin/eigrpd/rtp.c
262
nbr_del(pkt->nbr);
usr.sbin/eigrpd/rtp.c
291
struct nbr *nbr = arg;
usr.sbin/eigrpd/rtp.c
293
rtp_send_ack(nbr);
usr.sbin/eigrpd/rtp.c
297
rtp_ack_start_timer(struct nbr *nbr)
usr.sbin/eigrpd/rtp.c
303
if (evtimer_add(&nbr->ev_ack, &tv) == -1)
usr.sbin/eigrpd/rtp.c
308
rtp_ack_stop_timer(struct nbr *nbr)
usr.sbin/eigrpd/rtp.c
310
if (evtimer_pending(&nbr->ev_ack, NULL) &&
usr.sbin/eigrpd/rtp.c
311
evtimer_del(&nbr->ev_ack) == -1)
usr.sbin/eigrpd/rtp.c
32
static struct packet *rtp_packet_new(struct nbr *, uint32_t, struct pbuf *);
usr.sbin/eigrpd/rtp.c
69
rtp_packet_new(struct nbr *nbr, uint32_t seq_num, struct pbuf *pbuf)
usr.sbin/eigrpd/rtp.c
76
pkt->nbr = nbr;
usr.sbin/eigrpd/rtp.c
88
TAILQ_REMOVE(&pkt->nbr->retrans_list, pkt, entry);
usr.sbin/eigrpd/rtp.c
95
rtp_process_ack(struct nbr *nbr, uint32_t ack_num)
usr.sbin/eigrpd/rtp.c
97
struct eigrp *eigrp = nbr->ei->eigrp;
usr.sbin/eigrpd/update.c
103
if (nbr->flags & F_EIGRP_NBR_PENDING)
usr.sbin/eigrpd/update.c
104
nbr_init(nbr);
usr.sbin/eigrpd/update.c
110
eigrpe_imsg_compose_rde(IMSG_RECV_UPDATE_INIT, nbr->peerid,
usr.sbin/eigrpd/update.c
116
eigrpe_imsg_compose_rde(IMSG_RECV_UPDATE, nbr->peerid,
usr.sbin/eigrpd/update.c
33
send_update(struct eigrp_iface *ei, struct nbr *nbr, uint32_t flags,
usr.sbin/eigrpd/update.c
71
rtp_send(ei, nbr, buf);
usr.sbin/eigrpd/update.c
83
rtp_send(ei, nbr, buf);
usr.sbin/eigrpd/update.c
94
recv_update(struct nbr *nbr, struct rinfo_head *rinfo_list, uint32_t flags)
usr.sbin/eigrpd/update.c
98
rtp_ack_start_timer(nbr);
usr.sbin/ldpctl/ldpctl.c
174
memset(&nbr, 0, sizeof(nbr));
usr.sbin/ldpctl/ldpctl.c
175
nbr.af = res->family;
usr.sbin/ldpctl/ldpctl.c
176
memcpy(&nbr.raddr, &res->addr, sizeof(nbr.raddr));
usr.sbin/ldpctl/ldpctl.c
177
imsg_compose(ibuf, IMSG_CTL_CLEAR_NBR, 0, 0, -1, &nbr,
usr.sbin/ldpctl/ldpctl.c
178
sizeof(nbr));
usr.sbin/ldpctl/ldpctl.c
438
struct ctl_nbr *nbr;
usr.sbin/ldpctl/ldpctl.c
443
nbr = imsg->data;
usr.sbin/ldpctl/ldpctl.c
445
if (res->family != AF_UNSPEC && res->family != nbr->af)
usr.sbin/ldpctl/ldpctl.c
448
addr = log_addr(nbr->af, &nbr->raddr);
usr.sbin/ldpctl/ldpctl.c
451
af_name(nbr->af), inet_ntoa(nbr->id),
usr.sbin/ldpctl/ldpctl.c
452
nbr_state_name(nbr->nbr_state), addr);
usr.sbin/ldpctl/ldpctl.c
455
printf(" %8s\n", nbr->uptime == 0 ? "-" :
usr.sbin/ldpctl/ldpctl.c
456
fmt_timeframe_core(nbr->uptime));
usr.sbin/ldpctl/ldpctl.c
83
struct ctl_nbr nbr;
usr.sbin/ldpd/address.c
100
log_msg_address(1, msg_type, nbr, af, &if_addr->addr);
usr.sbin/ldpd/address.c
108
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/address.c
111
nbr_fsm(nbr, NBR_EVT_PDU_SENT);
usr.sbin/ldpd/address.c
115
send_address_single(struct nbr *nbr, struct if_addr *if_addr, int withdraw)
usr.sbin/ldpd/address.c
121
send_address(nbr, if_addr->af, &addr_list, 1, withdraw);
usr.sbin/ldpd/address.c
125
send_address_all(struct nbr *nbr, int af)
usr.sbin/ldpd/address.c
140
send_address(nbr, af, &addr_list, addr_count, 0);
usr.sbin/ldpd/address.c
144
send_mac_withdrawal(struct nbr *nbr, struct map *fec, uint8_t *mac)
usr.sbin/ldpd/address.c
170
log_msg_mac_withdrawal(1, nbr, mac);
usr.sbin/ldpd/address.c
172
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/address.c
174
nbr_fsm(nbr, NBR_EVT_PDU_SENT);
usr.sbin/ldpd/address.c
178
recv_address(struct nbr *nbr, char *buf, uint16_t len)
usr.sbin/ldpd/address.c
205
session_shutdown(nbr, S_BAD_MSG_LEN, msg.id, msg.type);
usr.sbin/ldpd/address.c
212
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/address.c
216
send_notification(nbr->tcp, S_MISS_MSG, msg.id, msg.type);
usr.sbin/ldpd/address.c
221
if (!nbr->v4_enabled)
usr.sbin/ldpd/address.c
226
if (!nbr->v6_enabled)
usr.sbin/ldpd/address.c
231
send_notification(nbr->tcp, S_UNSUP_ADDR, msg.id, msg.type);
usr.sbin/ldpd/address.c
243
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/address.c
258
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/address.c
275
log_msg_address(0, msg_type, nbr, lde_addr.af, &lde_addr.addr);
usr.sbin/ldpd/address.c
277
ldpe_imsg_compose_lde(type, nbr->peerid, 0, &lde_addr,
usr.sbin/ldpd/address.c
288
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/address.c
29
static void send_address(struct nbr *, int, struct if_addr_head *,
usr.sbin/ldpd/address.c
296
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/address.c
305
send_notification_rtlvs(nbr, S_UNKNOWN_TLV,
usr.sbin/ldpd/address.c
36
static void log_msg_address(int, uint16_t, struct nbr *, int,
usr.sbin/ldpd/address.c
38
static void log_msg_mac_withdrawal(int, struct nbr *, uint8_t *);
usr.sbin/ldpd/address.c
398
log_msg_address(int out, uint16_t msg_type, struct nbr *nbr, int af,
usr.sbin/ldpd/address.c
402
msg_name(msg_type), inet_ntoa(nbr->id), log_addr(af, addr));
usr.sbin/ldpd/address.c
406
log_msg_mac_withdrawal(int out, struct nbr *nbr, uint8_t *mac)
usr.sbin/ldpd/address.c
409
(out) ? "out" : "in", inet_ntoa(nbr->id),
usr.sbin/ldpd/address.c
41
send_address(struct nbr *nbr, int af, struct if_addr_head *addr_list,
usr.sbin/ldpd/address.c
78
if (size + addr_count * addr_size <= nbr->max_pdu_len)
usr.sbin/ldpd/address.c
81
tlv_addr_count = (nbr->max_pdu_len - size) / addr_size;
usr.sbin/ldpd/adjacency.c
107
if (nbr && nbr_adj_count(nbr, nbr->af) == 0) {
usr.sbin/ldpd/adjacency.c
108
LIST_FOREACH_SAFE(adj, &nbr->adj_list, nbr_entry, atmp)
usr.sbin/ldpd/adjacency.c
110
session_shutdown(nbr, notif_status, 0, 0);
usr.sbin/ldpd/adjacency.c
111
nbr_del(nbr);
usr.sbin/ldpd/adjacency.c
51
adj->nbr = NULL;
usr.sbin/ldpd/adjacency.c
80
if (adj->nbr)
usr.sbin/ldpd/adjacency.c
97
struct nbr *nbr = adj->nbr;
usr.sbin/ldpd/hello.c
154
struct nbr *nbr, *nbrt;
usr.sbin/ldpd/hello.c
277
nbr = nbr_find_ldpid(lsr_id.s_addr);
usr.sbin/ldpd/hello.c
294
if (nbr)
usr.sbin/ldpd/hello.c
295
session_shutdown(nbr, S_TRANS_MISMTCH, msg->id,
usr.sbin/ldpd/hello.c
306
if (nbr && !ds_tlv) {
usr.sbin/ldpd/hello.c
309
if (nbr_adj_count(nbr, AF_INET6) > 0) {
usr.sbin/ldpd/hello.c
310
session_shutdown(nbr, S_DS_NONCMPLNCE,
usr.sbin/ldpd/hello.c
316
if (nbr_adj_count(nbr, AF_INET) > 0) {
usr.sbin/ldpd/hello.c
317
session_shutdown(nbr, S_DS_NONCMPLNCE,
usr.sbin/ldpd/hello.c
330
if (nbr && nbr->af == af &&
usr.sbin/ldpd/hello.c
331
(ldp_addrcmp(af, &nbr->raddr, &trans_addr) ||
usr.sbin/ldpd/hello.c
332
nbr->raddr_scope != scope_id)) {
usr.sbin/ldpd/hello.c
339
if (nbr == NULL) {
usr.sbin/ldpd/hello.c
353
if (nbr) {
usr.sbin/ldpd/hello.c
354
adj->nbr = nbr;
usr.sbin/ldpd/hello.c
355
LIST_INSERT_HEAD(&nbr->adj_list, adj, nbr_entry);
usr.sbin/ldpd/hello.c
364
if (nbr == NULL && (!ds_tlv ||
usr.sbin/ldpd/hello.c
367
nbr = nbr_new(lsr_id, af, ds_tlv, &trans_addr, scope_id);
usr.sbin/ldpd/hello.c
370
if (nbr) {
usr.sbin/ldpd/hello.c
372
nbr->flags |= F_NBR_GTSM_NEGOTIATED;
usr.sbin/ldpd/hello.c
374
nbr->flags &= ~F_NBR_GTSM_NEGOTIATED;
usr.sbin/ldpd/hello.c
378
if (nbr && (tlvs_rcvd & F_HELLO_TLV_RCVD_CONF)) {
usr.sbin/ldpd/hello.c
379
if (conf_seqnum > nbr->conf_seqnum &&
usr.sbin/ldpd/hello.c
380
nbr_pending_idtimer(nbr))
usr.sbin/ldpd/hello.c
381
nbr_stop_idtimer(nbr);
usr.sbin/ldpd/hello.c
382
nbr->conf_seqnum = conf_seqnum;
usr.sbin/ldpd/hello.c
404
if (nbr && nbr->state == NBR_STA_PRESENT && !nbr_pending_idtimer(nbr) &&
usr.sbin/ldpd/hello.c
405
nbr_session_active_role(nbr) && !nbr_pending_connect(nbr))
usr.sbin/ldpd/hello.c
406
nbr_establish_connection(nbr);
usr.sbin/ldpd/init.c
108
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
116
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
129
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
usr.sbin/ldpd/init.c
132
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
usr.sbin/ldpd/init.c
136
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/init.c
142
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/init.c
148
nbr->flags |= F_NBR_CAP_DYNAMIC;
usr.sbin/ldpd/init.c
152
inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
156
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/init.c
162
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/init.c
168
nbr->flags |= F_NBR_CAP_TWCARD;
usr.sbin/ldpd/init.c
171
"FEC capability", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
175
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/init.c
181
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/init.c
187
nbr->flags |= F_NBR_CAP_UNOTIF;
usr.sbin/ldpd/init.c
191
inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
195
send_notification_rtlvs(nbr, S_UNSSUPORTDCAP,
usr.sbin/ldpd/init.c
204
nbr->keepalive = min(nbr_get_keepalive(nbr->af, nbr->id),
usr.sbin/ldpd/init.c
215
nbr->max_pdu_len = min(max_pdu_len, LDP_MAX_LEN);
usr.sbin/ldpd/init.c
217
nbr_fsm(nbr, NBR_EVT_INIT_RCVD);
usr.sbin/ldpd/init.c
223
send_capability(struct nbr *nbr, uint16_t capability, int enable)
usr.sbin/ldpd/init.c
229
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
263
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/init.c
264
nbr_fsm(nbr, NBR_EVT_PDU_SENT);
usr.sbin/ldpd/init.c
268
recv_capability(struct nbr *nbr, char *buf, uint16_t len)
usr.sbin/ldpd/init.c
27
static int gen_init_prms_tlv(struct ibuf *, struct nbr *);
usr.sbin/ldpd/init.c
274
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
288
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
296
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
305
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/init.c
311
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/init.c
320
nbr->flags |= F_NBR_CAP_TWCARD;
usr.sbin/ldpd/init.c
322
nbr->flags &= ~F_NBR_CAP_TWCARD;
usr.sbin/ldpd/init.c
325
"capability", __func__, inet_ntoa(nbr->id),
usr.sbin/ldpd/init.c
33
send_init(struct nbr *nbr)
usr.sbin/ldpd/init.c
330
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/init.c
336
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/init.c
345
nbr->flags |= F_NBR_CAP_UNOTIF;
usr.sbin/ldpd/init.c
347
nbr->flags &= ~F_NBR_CAP_UNOTIF;
usr.sbin/ldpd/init.c
351
inet_ntoa(nbr->id), (enable) ? "announced" :
usr.sbin/ldpd/init.c
366
send_notification_rtlvs(nbr, S_UNSSUPORTDCAP,
usr.sbin/ldpd/init.c
375
nbr_fsm(nbr, NBR_EVT_PDU_RCVD);
usr.sbin/ldpd/init.c
381
gen_init_prms_tlv(struct ibuf *buf, struct nbr *nbr)
usr.sbin/ldpd/init.c
389
parms.keepalive_time = htons(nbr_get_keepalive(nbr->af, nbr->id));
usr.sbin/ldpd/init.c
39
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
393
parms.lsr_id = nbr->id.s_addr;
usr.sbin/ldpd/init.c
49
err |= gen_init_prms_tlv(buf, nbr);
usr.sbin/ldpd/init.c
58
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/init.c
62
recv_init(struct nbr *nbr, char *buf, uint16_t len)
usr.sbin/ldpd/init.c
69
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/init.c
76
session_shutdown(nbr, S_BAD_MSG_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
81
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/init.c
85
session_shutdown(nbr, S_BAD_PROTO_VER, msg.id, msg.type);
usr.sbin/ldpd/init.c
89
session_shutdown(nbr, S_KEEPALIVE_BAD, msg.id, msg.type);
usr.sbin/ldpd/init.c
94
session_shutdown(nbr, S_NO_HELLO, msg.id, msg.type);
usr.sbin/ldpd/interface.c
165
struct nbr *nbr;
usr.sbin/ldpd/interface.c
171
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/interface.c
172
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/interface.c
174
if (if_addr->af == AF_INET && !nbr->v4_enabled)
usr.sbin/ldpd/interface.c
176
if (if_addr->af == AF_INET6 && !nbr->v6_enabled)
usr.sbin/ldpd/interface.c
179
send_address_single(nbr, if_addr, 0);
usr.sbin/ldpd/interface.c
201
struct nbr *nbr;
usr.sbin/ldpd/interface.c
219
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/interface.c
220
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/interface.c
222
if (if_addr->af == AF_INET && !nbr->v4_enabled)
usr.sbin/ldpd/interface.c
224
if (if_addr->af == AF_INET6 && !nbr->v6_enabled)
usr.sbin/ldpd/interface.c
226
send_address_single(nbr, if_addr, 1);
usr.sbin/ldpd/keepalive.c
27
send_keepalive(struct nbr *nbr)
usr.sbin/ldpd/keepalive.c
40
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/keepalive.c
44
recv_keepalive(struct nbr *nbr, char *buf, uint16_t len)
usr.sbin/ldpd/keepalive.c
50
session_shutdown(nbr, S_BAD_MSG_LEN, msg.id, msg.type);
usr.sbin/ldpd/keepalive.c
54
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/keepalive.c
55
nbr_fsm(nbr, NBR_EVT_KEEPALIVE_RCVD);
usr.sbin/ldpd/l2vpn.c
137
struct nbr *nbr;
usr.sbin/ldpd/l2vpn.c
143
nbr = nbr_find_ldpid(pw->lsr_id.s_addr);
usr.sbin/ldpd/l2vpn.c
144
if (nbr == NULL)
usr.sbin/ldpd/l2vpn.c
154
send_mac_withdrawal(nbr, &fec, lif->mac);
usr.sbin/ldpd/labelmapping.c
113
log_msg_mapping(1, type, nbr, &me->map);
usr.sbin/ldpd/labelmapping.c
119
enqueue_pdu(nbr, buf, size);
usr.sbin/ldpd/labelmapping.c
121
nbr_fsm(nbr, NBR_EVT_PDU_SENT);
usr.sbin/ldpd/labelmapping.c
126
recv_labelmessage(struct nbr *nbr, char *buf, uint16_t len, uint16_t type)
usr.sbin/ldpd/labelmapping.c
144
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
150
send_notification(nbr->tcp, S_MISS_MSG, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
155
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
167
if ((tlen = tlv_decode_fec_elm(nbr, &msg, buf, feclen,
usr.sbin/ldpd/labelmapping.c
174
send_notification(nbr->tcp, S_MISS_MSG, msg.id,
usr.sbin/ldpd/labelmapping.c
188
session_shutdown(nbr, S_UNKNOWN_FEC, msg.id,
usr.sbin/ldpd/labelmapping.c
206
session_shutdown(nbr, S_UNKNOWN_FEC, msg.id,
usr.sbin/ldpd/labelmapping.c
220
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
233
lbllen = tlv_decode_label(nbr, &msg, buf, len, &label);
usr.sbin/ldpd/labelmapping.c
249
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
257
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/labelmapping.c
269
session_shutdown(nbr, S_BAD_TLV_LEN,
usr.sbin/ldpd/labelmapping.c
292
session_shutdown(nbr, S_BAD_TLV_LEN,
usr.sbin/ldpd/labelmapping.c
311
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/labelmapping.c
322
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id,
usr.sbin/ldpd/labelmapping.c
33
static void enqueue_pdu(struct nbr *, struct ibuf *, uint16_t);
usr.sbin/ldpd/labelmapping.c
332
session_shutdown(nbr, S_BAD_TLV_LEN,
usr.sbin/ldpd/labelmapping.c
348
send_notification_rtlvs(nbr, S_UNKNOWN_TLV,
usr.sbin/ldpd/labelmapping.c
35
static int tlv_decode_label(struct nbr *, struct ldp_msg *, char *,
usr.sbin/ldpd/labelmapping.c
367
session_shutdown(nbr, S_BAD_TLV_VAL,
usr.sbin/ldpd/labelmapping.c
371
if (!nbr->v4_enabled)
usr.sbin/ldpd/labelmapping.c
376
session_shutdown(nbr, S_BAD_TLV_VAL,
usr.sbin/ldpd/labelmapping.c
38
static void log_msg_mapping(int, uint16_t, struct nbr *, struct map *);
usr.sbin/ldpd/labelmapping.c
380
if (!nbr->v6_enabled)
usr.sbin/ldpd/labelmapping.c
389
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id,
usr.sbin/ldpd/labelmapping.c
403
log_msg_mapping(0, type, nbr, &me->map);
usr.sbin/ldpd/labelmapping.c
41
enqueue_pdu(struct nbr *nbr, struct ibuf *buf, uint16_t size)
usr.sbin/ldpd/labelmapping.c
425
ldpe_imsg_compose_lde(imsg_type, nbr->peerid, 0, &me->map,
usr.sbin/ldpd/labelmapping.c
45
evbuf_enqueue(&nbr->tcp->wbuf, buf);
usr.sbin/ldpd/labelmapping.c
455
tlv_decode_label(struct nbr *nbr, struct ldp_msg *msg, char *buf,
usr.sbin/ldpd/labelmapping.c
461
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id, msg->type);
usr.sbin/ldpd/labelmapping.c
467
send_notification(nbr->tcp, S_MISS_MSG, msg->id, msg->type);
usr.sbin/ldpd/labelmapping.c
474
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
485
session_shutdown(nbr, S_BAD_TLV_VAL, msg->id,
usr.sbin/ldpd/labelmapping.c
494
session_shutdown(nbr, S_BAD_TLV_VAL, msg->id, msg->type);
usr.sbin/ldpd/labelmapping.c
50
send_labelmessage(struct nbr *nbr, uint16_t type, struct mapping_head *mh)
usr.sbin/ldpd/labelmapping.c
65
if ((buf = ibuf_open(nbr->max_pdu_len +
usr.sbin/ldpd/labelmapping.c
692
tlv_decode_fec_elm(struct nbr *nbr, struct ldp_msg *msg, char *buf,
usr.sbin/ldpd/labelmapping.c
706
session_shutdown(nbr, S_BAD_TLV_VAL, msg->id,
usr.sbin/ldpd/labelmapping.c
713
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
731
send_notification(nbr->tcp, S_UNSUP_ADDR, msg->id,
usr.sbin/ldpd/labelmapping.c
740
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
758
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
777
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
792
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
808
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
815
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
823
session_shutdown(nbr, S_BAD_TLV_LEN,
usr.sbin/ldpd/labelmapping.c
843
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
853
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
861
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
87
if (size + msg_size > nbr->max_pdu_len) {
usr.sbin/ldpd/labelmapping.c
88
enqueue_pdu(nbr, buf, size);
usr.sbin/ldpd/labelmapping.c
880
session_shutdown(nbr, S_BAD_TLV_VAL, msg->id,
usr.sbin/ldpd/labelmapping.c
887
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/labelmapping.c
901
send_notification(nbr->tcp, S_UNKNOWN_FEC, msg->id,
usr.sbin/ldpd/labelmapping.c
908
send_notification(nbr->tcp, S_UNKNOWN_FEC, msg->id, msg->type);
usr.sbin/ldpd/labelmapping.c
916
log_msg_mapping(int out, uint16_t msg_type, struct nbr *nbr, struct map *map)
usr.sbin/ldpd/labelmapping.c
919
(out) ? "out" : "in", msg_name(msg_type), inet_ntoa(nbr->id),
usr.sbin/ldpd/ldpd.c
1000
if (pfkey_establish(conf, nbr) == -1)
usr.sbin/ldpd/ldpd.c
1002
if (nbr_session_active_role(nbr))
usr.sbin/ldpd/ldpd.c
1003
nbr_establish_connection(nbr);
usr.sbin/ldpd/ldpd.c
1024
nbr = nbr_find_ldpid(nbrp->lsr_id.s_addr);
usr.sbin/ldpd/ldpd.c
1025
if (nbr && nbrp_changed) {
usr.sbin/ldpd/ldpd.c
1026
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpd.c
1027
pfkey_remove(nbr);
usr.sbin/ldpd/ldpd.c
1028
if (pfkey_establish(conf, nbr) == -1)
usr.sbin/ldpd/ldpd.c
1030
if (nbr_session_active_role(nbr))
usr.sbin/ldpd/ldpd.c
1031
nbr_establish_connection(nbr);
usr.sbin/ldpd/ldpd.c
1093
struct nbr *nbr;
usr.sbin/ldpd/ldpd.c
1185
nbr = nbr_find_ldpid(pw->lsr_id.s_addr);
usr.sbin/ldpd/ldpd.c
1186
if (nbr && nbr->state == NBR_STA_OPER)
usr.sbin/ldpd/ldpd.c
1187
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpd.c
971
struct nbr *nbr;
usr.sbin/ldpd/ldpd.c
978
nbr = nbr_find_ldpid(nbrp->lsr_id.s_addr);
usr.sbin/ldpd/ldpd.c
979
if (nbr) {
usr.sbin/ldpd/ldpd.c
980
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpd.c
981
pfkey_remove(nbr);
usr.sbin/ldpd/ldpd.c
982
if (nbr_session_active_role(nbr))
usr.sbin/ldpd/ldpd.c
983
nbr_establish_connection(nbr);
usr.sbin/ldpd/ldpd.c
997
nbr = nbr_find_ldpid(xn->lsr_id.s_addr);
usr.sbin/ldpd/ldpd.c
998
if (nbr) {
usr.sbin/ldpd/ldpd.c
999
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpe.c
232
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
322
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/ldpe.c
323
if (nbr->af != af)
usr.sbin/ldpd/ldpe.c
325
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpe.c
326
pfkey_remove(nbr);
usr.sbin/ldpd/ldpe.c
375
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/ldpe.c
376
if (nbr->af != af)
usr.sbin/ldpd/ldpe.c
378
nbr->laddr = (ldp_af_conf_get(leconf,
usr.sbin/ldpd/ldpe.c
380
if (pfkey_establish(nconf, nbr) == -1)
usr.sbin/ldpd/ldpe.c
382
if (nbr_session_active_role(nbr))
usr.sbin/ldpd/ldpe.c
383
nbr_establish_connection(nbr);
usr.sbin/ldpd/ldpe.c
500
struct nbr *nbr = NULL;
usr.sbin/ldpd/ldpe.c
532
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ldpd/ldpe.c
533
if (nbr == NULL) {
usr.sbin/ldpd/ldpe.c
538
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/ldpe.c
543
mapping_list_add(&nbr->mapping_list, &map);
usr.sbin/ldpd/ldpe.c
546
mapping_list_add(&nbr->release_list, &map);
usr.sbin/ldpd/ldpe.c
549
mapping_list_add(&nbr->request_list, &map);
usr.sbin/ldpd/ldpe.c
552
mapping_list_add(&nbr->withdraw_list, &map);
usr.sbin/ldpd/ldpe.c
560
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ldpd/ldpe.c
561
if (nbr == NULL) {
usr.sbin/ldpd/ldpe.c
566
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/ldpe.c
571
send_labelmessage(nbr, MSG_TYPE_LABELMAPPING,
usr.sbin/ldpd/ldpe.c
572
&nbr->mapping_list);
usr.sbin/ldpd/ldpe.c
575
send_labelmessage(nbr, MSG_TYPE_LABELRELEASE,
usr.sbin/ldpd/ldpe.c
576
&nbr->release_list);
usr.sbin/ldpd/ldpe.c
579
send_labelmessage(nbr, MSG_TYPE_LABELREQUEST,
usr.sbin/ldpd/ldpe.c
580
&nbr->request_list);
usr.sbin/ldpd/ldpe.c
583
send_labelmessage(nbr, MSG_TYPE_LABELWITHDRAW,
usr.sbin/ldpd/ldpe.c
584
&nbr->withdraw_list);
usr.sbin/ldpd/ldpe.c
593
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ldpd/ldpe.c
594
if (nbr == NULL) {
usr.sbin/ldpd/ldpe.c
599
if (nbr->state != NBR_STA_OPER)
usr.sbin/ldpd/ldpe.c
602
send_notification_full(nbr->tcp, &nm);
usr.sbin/ldpd/ldpe.c
695
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
697
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/ldpe.c
698
if (nbr->af == af)
usr.sbin/ldpd/ldpe.c
699
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpe.c
706
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
708
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/ldpe.c
709
if (nbr->ds_tlv)
usr.sbin/ldpd/ldpe.c
710
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/ldpe.c
731
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
733
RB_FOREACH(nbr, nbr_id_head, &nbrs_by_id) {
usr.sbin/ldpd/ldpe.c
734
if (nbr->af == af && nbr_pending_idtimer(nbr)) {
usr.sbin/ldpd/ldpe.c
735
nbr_stop_idtimer(nbr);
usr.sbin/ldpd/ldpe.c
736
nbr_establish_connection(nbr);
usr.sbin/ldpd/ldpe.c
771
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
775
RB_FOREACH(nbr, nbr_addr_head, &nbrs_by_addr) {
usr.sbin/ldpd/ldpe.c
776
LIST_FOREACH(adj, &nbr->adj_list, nbr_entry) {
usr.sbin/ldpd/ldpe.c
784
if (adj->nbr != NULL)
usr.sbin/ldpd/ldpe.c
798
struct nbr *nbr;
usr.sbin/ldpd/ldpe.c
801
RB_FOREACH(nbr, nbr_addr_head, &nbrs_by_addr) {
usr.sbin/ldpd/ldpe.c
802
nctl = nbr_to_ctl(nbr);
usr.sbin/ldpd/ldpe.h
114
RB_HEAD(nbr_id_head, nbr);
usr.sbin/ldpd/ldpe.h
115
RB_PROTOTYPE(nbr_id_head, nbr, id_tree, nbr_id_compare)
usr.sbin/ldpd/ldpe.h
116
RB_HEAD(nbr_addr_head, nbr);
usr.sbin/ldpd/ldpe.h
117
RB_PROTOTYPE(nbr_addr_head, nbr, addr_tree, nbr_addr_compare)
usr.sbin/ldpd/ldpe.h
118
RB_HEAD(nbr_pid_head, nbr);
usr.sbin/ldpd/ldpe.h
119
RB_PROTOTYPE(nbr_pid_head, nbr, pid_tree, nbr_pid_compare)
usr.sbin/ldpd/ldpe.h
161
void send_init(struct nbr *);
usr.sbin/ldpd/ldpe.h
162
int recv_init(struct nbr *, char *, uint16_t);
usr.sbin/ldpd/ldpe.h
163
void send_capability(struct nbr *, uint16_t, int);
usr.sbin/ldpd/ldpe.h
164
int recv_capability(struct nbr *, char *, uint16_t);
usr.sbin/ldpd/ldpe.h
167
void send_keepalive(struct nbr *);
usr.sbin/ldpd/ldpe.h
168
int recv_keepalive(struct nbr *, char *, uint16_t);
usr.sbin/ldpd/ldpe.h
173
void send_notification_rtlvs(struct nbr *, uint32_t, uint32_t, uint16_t,
usr.sbin/ldpd/ldpe.h
175
int recv_notification(struct nbr *, char *, uint16_t);
usr.sbin/ldpd/ldpe.h
179
void send_address_single(struct nbr *, struct if_addr *, int);
usr.sbin/ldpd/ldpe.h
180
void send_address_all(struct nbr *, int);
usr.sbin/ldpd/ldpe.h
181
void send_mac_withdrawal(struct nbr *, struct map *, uint8_t *);
usr.sbin/ldpd/ldpe.h
182
int recv_address(struct nbr *, char *, uint16_t);
usr.sbin/ldpd/ldpe.h
186
void send_labelmessage(struct nbr *, uint16_t, struct mapping_head *);
usr.sbin/ldpd/ldpe.h
187
int recv_labelmessage(struct nbr *, char *, uint16_t, uint16_t);
usr.sbin/ldpd/ldpe.h
191
int tlv_decode_fec_elm(struct nbr *, struct ldp_msg *, char *,
usr.sbin/ldpd/ldpe.h
238
int nbr_fsm(struct nbr *, enum nbr_event);
usr.sbin/ldpd/ldpe.h
239
struct nbr *nbr_new(struct in_addr, int, int, union ldpd_addr *,
usr.sbin/ldpd/ldpe.h
241
void nbr_del(struct nbr *);
usr.sbin/ldpd/ldpe.h
242
struct nbr *nbr_find_ldpid(uint32_t);
usr.sbin/ldpd/ldpe.h
243
struct nbr *nbr_find_addr(int, union ldpd_addr *);
usr.sbin/ldpd/ldpe.h
244
struct nbr *nbr_find_peerid(uint32_t);
usr.sbin/ldpd/ldpe.h
245
int nbr_adj_count(struct nbr *, int);
usr.sbin/ldpd/ldpe.h
246
int nbr_session_active_role(struct nbr *);
usr.sbin/ldpd/ldpe.h
247
void nbr_stop_ktimer(struct nbr *);
usr.sbin/ldpd/ldpe.h
248
void nbr_stop_ktimeout(struct nbr *);
usr.sbin/ldpd/ldpe.h
249
void nbr_stop_itimeout(struct nbr *);
usr.sbin/ldpd/ldpe.h
250
void nbr_start_idtimer(struct nbr *);
usr.sbin/ldpd/ldpe.h
251
void nbr_stop_idtimer(struct nbr *);
usr.sbin/ldpd/ldpe.h
252
int nbr_pending_idtimer(struct nbr *);
usr.sbin/ldpd/ldpe.h
253
int nbr_pending_connect(struct nbr *);
usr.sbin/ldpd/ldpe.h
254
int nbr_establish_connection(struct nbr *);
usr.sbin/ldpd/ldpe.h
255
int nbr_gtsm_enabled(struct nbr *, struct nbr_params *);
usr.sbin/ldpd/ldpe.h
257
int nbr_gtsm_check(int, struct nbr *, struct nbr_params *);
usr.sbin/ldpd/ldpe.h
261
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/ldpd/ldpe.h
271
void session_accept_nbr(struct nbr *, int);
usr.sbin/ldpd/ldpe.h
272
void session_shutdown(struct nbr *, uint32_t, uint32_t,
usr.sbin/ldpd/ldpe.h
274
void session_close(struct nbr *);
usr.sbin/ldpd/ldpe.h
275
struct tcp_conn *tcp_new(int, struct nbr *);
usr.sbin/ldpd/ldpe.h
281
int pfkey_establish(struct ldpd_conf *, struct nbr *);
usr.sbin/ldpd/ldpe.h
282
int pfkey_remove(struct nbr *);
usr.sbin/ldpd/ldpe.h
49
struct nbr *nbr;
usr.sbin/ldpd/ldpe.h
63
struct nbr *nbr;
usr.sbin/ldpd/ldpe.h
71
RB_ENTRY(nbr) id_tree, addr_tree, pid_tree;
usr.sbin/ldpd/neighbor.c
108
nbr_id_compare(struct nbr *a, struct nbr *b)
usr.sbin/ldpd/neighbor.c
114
nbr_addr_compare(struct nbr *a, struct nbr *b)
usr.sbin/ldpd/neighbor.c
125
nbr_pid_compare(struct nbr *a, struct nbr *b)
usr.sbin/ldpd/neighbor.c
131
nbr_fsm(struct nbr *nbr, enum nbr_event event)
usr.sbin/ldpd/neighbor.c
138
old_state = nbr->state;
usr.sbin/ldpd/neighbor.c
149
"state %s", __func__, inet_ntoa(nbr->id),
usr.sbin/ldpd/neighbor.c
155
nbr->state = new_state;
usr.sbin/ldpd/neighbor.c
157
if (old_state != nbr->state) {
usr.sbin/ldpd/neighbor.c
162
inet_ntoa(nbr->id), nbr_state_name(old_state),
usr.sbin/ldpd/neighbor.c
163
nbr_state_name(nbr->state));
usr.sbin/ldpd/neighbor.c
165
if (nbr->state == NBR_STA_OPER) {
usr.sbin/ldpd/neighbor.c
167
nbr->uptime = now.tv_sec;
usr.sbin/ldpd/neighbor.c
171
if (nbr->state == NBR_STA_OPER || nbr->state == NBR_STA_PRESENT)
usr.sbin/ldpd/neighbor.c
172
nbr_stop_itimeout(nbr);
usr.sbin/ldpd/neighbor.c
174
nbr_start_itimeout(nbr);
usr.sbin/ldpd/neighbor.c
178
nbr_start_ktimeout(nbr);
usr.sbin/ldpd/neighbor.c
181
nbr_start_ktimer(nbr);
usr.sbin/ldpd/neighbor.c
184
nbr_act_session_operational(nbr);
usr.sbin/ldpd/neighbor.c
185
nbr_start_ktimer(nbr);
usr.sbin/ldpd/neighbor.c
186
nbr_start_ktimeout(nbr);
usr.sbin/ldpd/neighbor.c
187
if (nbr->v4_enabled)
usr.sbin/ldpd/neighbor.c
188
send_address_all(nbr, AF_INET);
usr.sbin/ldpd/neighbor.c
189
if (nbr->v6_enabled)
usr.sbin/ldpd/neighbor.c
190
send_address_all(nbr, AF_INET6);
usr.sbin/ldpd/neighbor.c
191
nbr_send_labelmappings(nbr);
usr.sbin/ldpd/neighbor.c
194
nbr->tcp = tcp_new(nbr->fd, nbr);
usr.sbin/ldpd/neighbor.c
197
send_init(nbr);
usr.sbin/ldpd/neighbor.c
198
nbr_fsm(nbr, NBR_EVT_INIT_SENT);
usr.sbin/ldpd/neighbor.c
201
send_init(nbr);
usr.sbin/ldpd/neighbor.c
202
send_keepalive(nbr);
usr.sbin/ldpd/neighbor.c
205
nbr_start_ktimeout(nbr);
usr.sbin/ldpd/neighbor.c
206
send_keepalive(nbr);
usr.sbin/ldpd/neighbor.c
209
ldpe_imsg_compose_lde(IMSG_NEIGHBOR_DOWN, nbr->peerid, 0,
usr.sbin/ldpd/neighbor.c
211
session_close(nbr);
usr.sbin/ldpd/neighbor.c
221
struct nbr *
usr.sbin/ldpd/neighbor.c
225
struct nbr *nbr;
usr.sbin/ldpd/neighbor.c
232
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ldpd/neighbor.c
235
LIST_INIT(&nbr->adj_list);
usr.sbin/ldpd/neighbor.c
236
nbr->state = NBR_STA_PRESENT;
usr.sbin/ldpd/neighbor.c
237
nbr->peerid = 0;
usr.sbin/ldpd/neighbor.c
238
nbr->af = af;
usr.sbin/ldpd/neighbor.c
239
nbr->ds_tlv = ds_tlv;
usr.sbin/ldpd/neighbor.c
241
nbr->v4_enabled = 1;
usr.sbin/ldpd/neighbor.c
243
nbr->v6_enabled = 1;
usr.sbin/ldpd/neighbor.c
244
nbr->id = id;
usr.sbin/ldpd/neighbor.c
245
nbr->laddr = (ldp_af_conf_get(leconf, af))->trans_addr;
usr.sbin/ldpd/neighbor.c
246
nbr->raddr = *addr;
usr.sbin/ldpd/neighbor.c
247
nbr->raddr_scope = scope_id;
usr.sbin/ldpd/neighbor.c
248
nbr->conf_seqnum = 0;
usr.sbin/ldpd/neighbor.c
251
if (adj->lsr_id.s_addr == nbr->id.s_addr) {
usr.sbin/ldpd/neighbor.c
252
adj->nbr = nbr;
usr.sbin/ldpd/neighbor.c
253
LIST_INSERT_HEAD(&nbr->adj_list, adj, nbr_entry);
usr.sbin/ldpd/neighbor.c
257
if (RB_INSERT(nbr_id_head, &nbrs_by_id, nbr) != NULL)
usr.sbin/ldpd/neighbor.c
259
if (RB_INSERT(nbr_addr_head, &nbrs_by_addr, nbr) != NULL)
usr.sbin/ldpd/neighbor.c
262
TAILQ_INIT(&nbr->mapping_list);
usr.sbin/ldpd/neighbor.c
263
TAILQ_INIT(&nbr->withdraw_list);
usr.sbin/ldpd/neighbor.c
264
TAILQ_INIT(&nbr->request_list);
usr.sbin/ldpd/neighbor.c
265
TAILQ_INIT(&nbr->release_list);
usr.sbin/ldpd/neighbor.c
266
TAILQ_INIT(&nbr->abortreq_list);
usr.sbin/ldpd/neighbor.c
269
evtimer_set(&nbr->keepalive_timeout, nbr_ktimeout, nbr);
usr.sbin/ldpd/neighbor.c
270
evtimer_set(&nbr->keepalive_timer, nbr_ktimer, nbr);
usr.sbin/ldpd/neighbor.c
271
evtimer_set(&nbr->init_timeout, nbr_itimeout, nbr);
usr.sbin/ldpd/neighbor.c
272
evtimer_set(&nbr->initdelay_timer, nbr_idtimer, nbr);
usr.sbin/ldpd/neighbor.c
274
if (pfkey_establish(leconf, nbr) == -1)
usr.sbin/ldpd/neighbor.c
277
pconn = pending_conn_find(nbr->af, &nbr->raddr);
usr.sbin/ldpd/neighbor.c
279
session_accept_nbr(nbr, pconn->fd);
usr.sbin/ldpd/neighbor.c
283
return (nbr);
usr.sbin/ldpd/neighbor.c
287
nbr_del(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
289
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/neighbor.c
291
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/neighbor.c
292
pfkey_remove(nbr);
usr.sbin/ldpd/neighbor.c
294
if (nbr_pending_connect(nbr))
usr.sbin/ldpd/neighbor.c
295
event_del(&nbr->ev_connect);
usr.sbin/ldpd/neighbor.c
296
nbr_stop_ktimer(nbr);
usr.sbin/ldpd/neighbor.c
297
nbr_stop_ktimeout(nbr);
usr.sbin/ldpd/neighbor.c
298
nbr_stop_itimeout(nbr);
usr.sbin/ldpd/neighbor.c
299
nbr_stop_idtimer(nbr);
usr.sbin/ldpd/neighbor.c
301
mapping_list_clr(&nbr->mapping_list);
usr.sbin/ldpd/neighbor.c
302
mapping_list_clr(&nbr->withdraw_list);
usr.sbin/ldpd/neighbor.c
303
mapping_list_clr(&nbr->request_list);
usr.sbin/ldpd/neighbor.c
304
mapping_list_clr(&nbr->release_list);
usr.sbin/ldpd/neighbor.c
305
mapping_list_clr(&nbr->abortreq_list);
usr.sbin/ldpd/neighbor.c
307
if (nbr->peerid)
usr.sbin/ldpd/neighbor.c
308
RB_REMOVE(nbr_pid_head, &nbrs_by_pid, nbr);
usr.sbin/ldpd/neighbor.c
309
RB_REMOVE(nbr_id_head, &nbrs_by_id, nbr);
usr.sbin/ldpd/neighbor.c
310
RB_REMOVE(nbr_addr_head, &nbrs_by_addr, nbr);
usr.sbin/ldpd/neighbor.c
312
free(nbr);
usr.sbin/ldpd/neighbor.c
316
nbr_update_peerid(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
320
if (nbr->peerid)
usr.sbin/ldpd/neighbor.c
321
RB_REMOVE(nbr_pid_head, &nbrs_by_pid, nbr);
usr.sbin/ldpd/neighbor.c
326
nbr->peerid = peercnt;
usr.sbin/ldpd/neighbor.c
328
if (RB_INSERT(nbr_pid_head, &nbrs_by_pid, nbr) != NULL)
usr.sbin/ldpd/neighbor.c
332
struct nbr *
usr.sbin/ldpd/neighbor.c
335
struct nbr n;
usr.sbin/ldpd/neighbor.c
340
struct nbr *
usr.sbin/ldpd/neighbor.c
343
struct nbr n;
usr.sbin/ldpd/neighbor.c
349
struct nbr *
usr.sbin/ldpd/neighbor.c
352
struct nbr n;
usr.sbin/ldpd/neighbor.c
358
nbr_adj_count(struct nbr *nbr, int af)
usr.sbin/ldpd/neighbor.c
36
static __inline int nbr_id_compare(struct nbr *, struct nbr *);
usr.sbin/ldpd/neighbor.c
363
LIST_FOREACH(adj, &nbr->adj_list, nbr_entry)
usr.sbin/ldpd/neighbor.c
37
static __inline int nbr_addr_compare(struct nbr *, struct nbr *);
usr.sbin/ldpd/neighbor.c
371
nbr_session_active_role(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
373
if (ldp_addrcmp(nbr->af, &nbr->laddr, &nbr->raddr) > 0)
usr.sbin/ldpd/neighbor.c
38
static __inline int nbr_pid_compare(struct nbr *, struct nbr *);
usr.sbin/ldpd/neighbor.c
386
struct nbr *nbr = arg;
usr.sbin/ldpd/neighbor.c
388
send_keepalive(nbr);
usr.sbin/ldpd/neighbor.c
389
nbr_start_ktimer(nbr);
usr.sbin/ldpd/neighbor.c
39
static void nbr_update_peerid(struct nbr *);
usr.sbin/ldpd/neighbor.c
393
nbr_start_ktimer(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
399
tv.tv_sec = (time_t)(nbr->keepalive / KEEPALIVE_PER_PERIOD);
usr.sbin/ldpd/neighbor.c
400
if (evtimer_add(&nbr->keepalive_timer, &tv) == -1)
usr.sbin/ldpd/neighbor.c
405
nbr_stop_ktimer(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
407
if (evtimer_pending(&nbr->keepalive_timer, NULL) &&
usr.sbin/ldpd/neighbor.c
408
evtimer_del(&nbr->keepalive_timer) == -1)
usr.sbin/ldpd/neighbor.c
41
static void nbr_start_ktimer(struct nbr *);
usr.sbin/ldpd/neighbor.c
417
struct nbr *nbr = arg;
usr.sbin/ldpd/neighbor.c
419
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/neighbor.c
421
session_shutdown(nbr, S_KEEPALIVE_TMR, 0, 0);
usr.sbin/ldpd/neighbor.c
425
nbr_start_ktimeout(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
43
static void nbr_start_ktimeout(struct nbr *);
usr.sbin/ldpd/neighbor.c
430
tv.tv_sec = nbr->keepalive;
usr.sbin/ldpd/neighbor.c
432
if (evtimer_add(&nbr->keepalive_timeout, &tv) == -1)
usr.sbin/ldpd/neighbor.c
437
nbr_stop_ktimeout(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
439
if (evtimer_pending(&nbr->keepalive_timeout, NULL) &&
usr.sbin/ldpd/neighbor.c
440
evtimer_del(&nbr->keepalive_timeout) == -1)
usr.sbin/ldpd/neighbor.c
449
struct nbr *nbr = arg;
usr.sbin/ldpd/neighbor.c
45
static void nbr_start_itimeout(struct nbr *);
usr.sbin/ldpd/neighbor.c
451
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/neighbor.c
453
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/neighbor.c
457
nbr_start_itimeout(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
463
if (evtimer_add(&nbr->init_timeout, &tv) == -1)
usr.sbin/ldpd/neighbor.c
468
nbr_stop_itimeout(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
47
static int nbr_act_session_operational(struct nbr *);
usr.sbin/ldpd/neighbor.c
470
if (evtimer_pending(&nbr->init_timeout, NULL) &&
usr.sbin/ldpd/neighbor.c
471
evtimer_del(&nbr->init_timeout) == -1)
usr.sbin/ldpd/neighbor.c
48
static void nbr_send_labelmappings(struct nbr *);
usr.sbin/ldpd/neighbor.c
480
struct nbr *nbr = arg;
usr.sbin/ldpd/neighbor.c
482
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/neighbor.c
484
nbr_establish_connection(nbr);
usr.sbin/ldpd/neighbor.c
488
nbr_start_idtimer(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
495
switch(nbr->idtimer_cnt) {
usr.sbin/ldpd/neighbor.c
50
RB_GENERATE(nbr_id_head, nbr, id_tree, nbr_id_compare)
usr.sbin/ldpd/neighbor.c
507
nbr->idtimer_cnt++;
usr.sbin/ldpd/neighbor.c
51
RB_GENERATE(nbr_addr_head, nbr, addr_tree, nbr_addr_compare)
usr.sbin/ldpd/neighbor.c
511
if (evtimer_add(&nbr->initdelay_timer, &tv) == -1)
usr.sbin/ldpd/neighbor.c
516
nbr_stop_idtimer(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
518
if (evtimer_pending(&nbr->initdelay_timer, NULL) &&
usr.sbin/ldpd/neighbor.c
519
evtimer_del(&nbr->initdelay_timer) == -1)
usr.sbin/ldpd/neighbor.c
52
RB_GENERATE(nbr_pid_head, nbr, pid_tree, nbr_pid_compare)
usr.sbin/ldpd/neighbor.c
524
nbr_pending_idtimer(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
526
if (evtimer_pending(&nbr->initdelay_timer, NULL))
usr.sbin/ldpd/neighbor.c
533
nbr_pending_connect(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
535
if (event_initialized(&nbr->ev_connect) &&
usr.sbin/ldpd/neighbor.c
536
event_pending(&nbr->ev_connect, EV_WRITE, NULL))
usr.sbin/ldpd/neighbor.c
545
struct nbr *nbr = arg;
usr.sbin/ldpd/neighbor.c
550
if (getsockopt(nbr->fd, SOL_SOCKET, SO_ERROR, &error, &len) == -1) {
usr.sbin/ldpd/neighbor.c
556
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
559
log_addr(nbr->af, &nbr->raddr), strerror(errno));
usr.sbin/ldpd/neighbor.c
563
nbr_fsm(nbr, NBR_EVT_CONNECT_UP);
usr.sbin/ldpd/neighbor.c
567
nbr_establish_connection(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
575
nbr->fd = socket(nbr->af,
usr.sbin/ldpd/neighbor.c
577
if (nbr->fd == -1) {
usr.sbin/ldpd/neighbor.c
582
if (nbr->auth_established) {
usr.sbin/ldpd/neighbor.c
585
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
588
if (setsockopt(nbr->fd, IPPROTO_TCP, TCP_MD5SIG,
usr.sbin/ldpd/neighbor.c
591
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
596
memcpy(&local_sa, addr2sa(nbr->af, &nbr->laddr, 0), sizeof(local_sa));
usr.sbin/ldpd/neighbor.c
597
memcpy(&remote_sa, addr2sa(nbr->af, &nbr->raddr, LDP_PORT),
usr.sbin/ldpd/neighbor.c
599
if (nbr->af == AF_INET6 && nbr->raddr_scope)
usr.sbin/ldpd/neighbor.c
600
addscope((struct sockaddr_in6 *)&remote_sa, nbr->raddr_scope);
usr.sbin/ldpd/neighbor.c
602
if (bind(nbr->fd, (struct sockaddr *)&local_sa,
usr.sbin/ldpd/neighbor.c
606
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
610
nbrp = nbr_params_find(leconf, nbr->id);
usr.sbin/ldpd/neighbor.c
611
if (nbr_gtsm_check(nbr->fd, nbr, nbrp)) {
usr.sbin/ldpd/neighbor.c
612
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
620
LIST_FOREACH(adj, &nbr->adj_list, nbr_entry)
usr.sbin/ldpd/neighbor.c
624
if (connect(nbr->fd, (struct sockaddr *)&remote_sa,
usr.sbin/ldpd/neighbor.c
627
event_set(&nbr->ev_connect, nbr->fd, EV_WRITE,
usr.sbin/ldpd/neighbor.c
628
nbr_connect_cb, nbr);
usr.sbin/ldpd/neighbor.c
629
event_add(&nbr->ev_connect, NULL);
usr.sbin/ldpd/neighbor.c
634
close(nbr->fd);
usr.sbin/ldpd/neighbor.c
639
nbr_fsm(nbr, NBR_EVT_CONNECT_UP);
usr.sbin/ldpd/neighbor.c
645
nbr_gtsm_enabled(struct nbr *nbr, struct nbr_params *nbrp)
usr.sbin/ldpd/neighbor.c
656
if ((ldp_af_conf_get(leconf, nbr->af))->flags & F_LDPD_AF_NO_GTSM)
usr.sbin/ldpd/neighbor.c
660
if (nbr->af == AF_INET && !(nbr->flags & F_NBR_GTSM_NEGOTIATED))
usr.sbin/ldpd/neighbor.c
697
nbr_gtsm_check(int fd, struct nbr *nbr, struct nbr_params *nbrp)
usr.sbin/ldpd/neighbor.c
699
if (!nbr_gtsm_enabled(nbr, nbrp)) {
usr.sbin/ldpd/neighbor.c
700
switch (nbr->af) {
usr.sbin/ldpd/neighbor.c
718
if (nbr_gtsm_setup(fd, nbr->af, nbrp) == -1) {
usr.sbin/ldpd/neighbor.c
720
inet_ntoa(nbr->id));
usr.sbin/ldpd/neighbor.c
728
nbr_act_session_operational(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
732
nbr->idtimer_cnt = 0;
usr.sbin/ldpd/neighbor.c
735
nbr_update_peerid(nbr);
usr.sbin/ldpd/neighbor.c
738
lde_nbr.id = nbr->id;
usr.sbin/ldpd/neighbor.c
739
lde_nbr.v4_enabled = nbr->v4_enabled;
usr.sbin/ldpd/neighbor.c
740
lde_nbr.v6_enabled = nbr->v6_enabled;
usr.sbin/ldpd/neighbor.c
741
lde_nbr.flags = nbr->flags;
usr.sbin/ldpd/neighbor.c
742
return (ldpe_imsg_compose_lde(IMSG_NEIGHBOR_UP, nbr->peerid, 0,
usr.sbin/ldpd/neighbor.c
747
nbr_send_labelmappings(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
749
ldpe_imsg_compose_lde(IMSG_LABEL_MAPPING_FULL, nbr->peerid, 0,
usr.sbin/ldpd/neighbor.c
791
nbr_to_ctl(struct nbr *nbr)
usr.sbin/ldpd/neighbor.c
796
nctl.af = nbr->af;
usr.sbin/ldpd/neighbor.c
797
nctl.id = nbr->id;
usr.sbin/ldpd/neighbor.c
798
nctl.laddr = nbr->laddr;
usr.sbin/ldpd/neighbor.c
799
nctl.raddr = nbr->raddr;
usr.sbin/ldpd/neighbor.c
800
nctl.nbr_state = nbr->state;
usr.sbin/ldpd/neighbor.c
803
if (nbr->state == NBR_STA_OPER) {
usr.sbin/ldpd/neighbor.c
804
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/ldpd/neighbor.c
814
struct nbr *nbr;
usr.sbin/ldpd/neighbor.c
816
RB_FOREACH(nbr, nbr_addr_head, &nbrs_by_addr) {
usr.sbin/ldpd/neighbor.c
818
ldp_addrcmp(nctl->af, &nctl->raddr, &nbr->raddr))
usr.sbin/ldpd/neighbor.c
822
log_addr(nbr->af, &nbr->raddr));
usr.sbin/ldpd/neighbor.c
823
session_shutdown(nbr, S_SHUTDOWN, 0, 0);
usr.sbin/ldpd/notification.c
108
send_notification_full(nbr->tcp, &nm);
usr.sbin/ldpd/notification.c
112
recv_notification(struct nbr *nbr, char *buf, uint16_t len)
usr.sbin/ldpd/notification.c
124
session_shutdown(nbr, S_BAD_MSG_LEN, msg.id, msg.type);
usr.sbin/ldpd/notification.c
131
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/notification.c
147
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/notification.c
155
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
usr.sbin/ldpd/notification.c
169
session_shutdown(nbr, S_BAD_TLV_LEN,
usr.sbin/ldpd/notification.c
178
if ((tlen = tlv_decode_fec_elm(nbr, &msg, buf,
usr.sbin/ldpd/notification.c
183
session_shutdown(nbr, S_BAD_TLV_VAL,
usr.sbin/ldpd/notification.c
191
send_notification_rtlvs(nbr, S_UNKNOWN_TLV,
usr.sbin/ldpd/notification.c
204
send_notification(nbr->tcp, S_MISS_MSG,
usr.sbin/ldpd/notification.c
213
send_notification(nbr->tcp, S_BAD_TLV_VAL,
usr.sbin/ldpd/notification.c
220
send_notification(nbr->tcp, S_MISS_MSG,
usr.sbin/ldpd/notification.c
225
send_notification(nbr->tcp, S_BAD_TLV_VAL,
usr.sbin/ldpd/notification.c
234
log_msg_notification(0, nbr, &nm);
usr.sbin/ldpd/notification.c
237
if (nbr->state == NBR_STA_OPENSENT)
usr.sbin/ldpd/notification.c
238
nbr_start_idtimer(nbr);
usr.sbin/ldpd/notification.c
240
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/notification.c
248
ldpe_imsg_compose_lde(IMSG_NOTIFICATION, nbr->peerid, 0,
usr.sbin/ldpd/notification.c
29
static void log_msg_notification(int, struct nbr *, struct notify_msg *);
usr.sbin/ldpd/notification.c
299
log_msg_notification(int out, struct nbr *nbr, struct notify_msg *nm)
usr.sbin/ldpd/notification.c
305
"(fatal error)", dir, inet_ntoa(nbr->id),
usr.sbin/ldpd/notification.c
311
inet_ntoa(nbr->id), status_code_name(nm->status_code));
usr.sbin/ldpd/notification.c
67
if (tcp->nbr) {
usr.sbin/ldpd/notification.c
68
log_msg_notification(1, tcp->nbr, nm);
usr.sbin/ldpd/notification.c
69
nbr_fsm(tcp->nbr, NBR_EVT_PDU_SENT);
usr.sbin/ldpd/notification.c
91
send_notification_rtlvs(struct nbr *nbr, uint32_t status_code, uint32_t msg_id,
usr.sbin/ldpd/packet.c
323
struct nbr *nbr;
usr.sbin/ldpd/packet.c
352
nbr = nbr_find_addr(af, &addr);
usr.sbin/ldpd/packet.c
353
if (nbr == NULL) {
usr.sbin/ldpd/packet.c
373
if (nbr_session_active_role(nbr)) {
usr.sbin/ldpd/packet.c
377
if (nbr->state != NBR_STA_PRESENT) {
usr.sbin/ldpd/packet.c
379
"connection", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/packet.c
384
session_accept_nbr(nbr, newfd);
usr.sbin/ldpd/packet.c
388
session_accept_nbr(struct nbr *nbr, int fd)
usr.sbin/ldpd/packet.c
394
nbrp = nbr_params_find(leconf, nbr->id);
usr.sbin/ldpd/packet.c
395
if (nbr_gtsm_check(fd, nbr, nbrp)) {
usr.sbin/ldpd/packet.c
417
nbr->tcp = tcp_new(fd, nbr);
usr.sbin/ldpd/packet.c
418
nbr_fsm(nbr, NBR_EVT_MATCH_ADJ);
usr.sbin/ldpd/packet.c
424
struct nbr *nbr = arg;
usr.sbin/ldpd/packet.c
425
struct tcp_conn *tcp = nbr->tcp;
usr.sbin/ldpd/packet.c
440
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/packet.c
449
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/packet.c
458
session_shutdown(nbr, S_BAD_PROTO_VER, 0, 0);
usr.sbin/ldpd/packet.c
469
if (nbr->state == NBR_STA_OPER)
usr.sbin/ldpd/packet.c
470
max_pdu_len = nbr->max_pdu_len;
usr.sbin/ldpd/packet.c
475
session_shutdown(nbr, S_BAD_PDU_LEN, 0, 0);
usr.sbin/ldpd/packet.c
480
if (ldp_hdr->lsr_id != nbr->id.s_addr ||
usr.sbin/ldpd/packet.c
482
session_shutdown(nbr, S_BAD_LDP_ID, 0, 0);
usr.sbin/ldpd/packet.c
489
nbr_fsm(nbr, NBR_EVT_PDU_RCVD);
usr.sbin/ldpd/packet.c
499
session_shutdown(nbr, S_BAD_TLV_LEN, msg->id,
usr.sbin/ldpd/packet.c
510
if ((nbr->state != NBR_STA_INITIAL) &&
usr.sbin/ldpd/packet.c
511
(nbr->state != NBR_STA_OPENSENT)) {
usr.sbin/ldpd/packet.c
512
session_shutdown(nbr, S_SHUTDOWN,
usr.sbin/ldpd/packet.c
519
if ((nbr->state == NBR_STA_INITIAL) ||
usr.sbin/ldpd/packet.c
520
(nbr->state == NBR_STA_OPENSENT)) {
usr.sbin/ldpd/packet.c
521
session_shutdown(nbr, S_SHUTDOWN,
usr.sbin/ldpd/packet.c
528
if (nbr->state != NBR_STA_OPER) {
usr.sbin/ldpd/packet.c
529
session_shutdown(nbr, S_SHUTDOWN,
usr.sbin/ldpd/packet.c
540
ret = recv_notification(nbr, pdu, msg_size);
usr.sbin/ldpd/packet.c
543
ret = recv_init(nbr, pdu, msg_size);
usr.sbin/ldpd/packet.c
546
ret = recv_keepalive(nbr, pdu, msg_size);
usr.sbin/ldpd/packet.c
549
ret = recv_capability(nbr, pdu, msg_size);
usr.sbin/ldpd/packet.c
553
ret = recv_address(nbr, pdu, msg_size);
usr.sbin/ldpd/packet.c
560
ret = recv_labelmessage(nbr, pdu, msg_size,
usr.sbin/ldpd/packet.c
565
__func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/packet.c
567
send_notification(nbr->tcp,
usr.sbin/ldpd/packet.c
586
session_shutdown(nbr, S_BAD_PDU_LEN, 0, 0);
usr.sbin/ldpd/packet.c
596
struct nbr *nbr = tcp->nbr;
usr.sbin/ldpd/packet.c
602
if (nbr)
usr.sbin/ldpd/packet.c
603
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/packet.c
605
if (nbr == NULL && msgbuf_queuelen(tcp->wbuf.wbuf) == 0) {
usr.sbin/ldpd/packet.c
618
session_shutdown(struct nbr *nbr, uint32_t status, uint32_t msg_id,
usr.sbin/ldpd/packet.c
621
switch (nbr->state) {
usr.sbin/ldpd/packet.c
623
if (nbr_pending_connect(nbr))
usr.sbin/ldpd/packet.c
624
event_del(&nbr->ev_connect);
usr.sbin/ldpd/packet.c
630
log_debug("%s: lsr-id %s", __func__, inet_ntoa(nbr->id));
usr.sbin/ldpd/packet.c
632
send_notification(nbr->tcp, status, msg_id, msg_type);
usr.sbin/ldpd/packet.c
634
nbr_fsm(nbr, NBR_EVT_CLOSE_SESSION);
usr.sbin/ldpd/packet.c
642
session_close(struct nbr *nbr)
usr.sbin/ldpd/packet.c
645
inet_ntoa(nbr->id));
usr.sbin/ldpd/packet.c
647
tcp_close(nbr->tcp);
usr.sbin/ldpd/packet.c
648
nbr_stop_ktimer(nbr);
usr.sbin/ldpd/packet.c
649
nbr_stop_ktimeout(nbr);
usr.sbin/ldpd/packet.c
650
nbr_stop_itimeout(nbr);
usr.sbin/ldpd/packet.c
683
tcp_new(int fd, struct nbr *nbr)
usr.sbin/ldpd/packet.c
693
if (nbr) {
usr.sbin/ldpd/packet.c
698
session_read, nbr);
usr.sbin/ldpd/packet.c
700
tcp->nbr = nbr;
usr.sbin/ldpd/packet.c
713
if (tcp->nbr) {
usr.sbin/ldpd/packet.c
716
tcp->nbr->tcp = NULL;
usr.sbin/ldpd/pfkey.c
370
pfkey_md5sig_establish(struct nbr *nbr, struct ldp_auth *auth)
usr.sbin/ldpd/pfkey.c
374
pfkey_md5sig_remove(nbr);
usr.sbin/ldpd/pfkey.c
376
if (pfkey_sa_add(nbr->af, &nbr->laddr, &nbr->raddr,
usr.sbin/ldpd/pfkey.c
377
auth->md5key_len, auth->md5key, &nbr->auth_spi_out) == -1)
usr.sbin/ldpd/pfkey.c
380
if (pfkey_sa_add(nbr->af, &nbr->raddr, &nbr->laddr,
usr.sbin/ldpd/pfkey.c
381
auth->md5key_len, auth->md5key, &nbr->auth_spi_in) == -1)
usr.sbin/ldpd/pfkey.c
384
nbr->auth_established = 1;
usr.sbin/ldpd/pfkey.c
39
static int pfkey_md5sig_establish(struct nbr *, struct ldp_auth *);
usr.sbin/ldpd/pfkey.c
390
pfkey_md5sig_remove(struct nbr *nbr)
usr.sbin/ldpd/pfkey.c
392
if (nbr->auth_spi_out) {
usr.sbin/ldpd/pfkey.c
393
if (pfkey_sa_remove(nbr->af, &nbr->laddr, &nbr->raddr,
usr.sbin/ldpd/pfkey.c
394
&nbr->auth_spi_out) == -1)
usr.sbin/ldpd/pfkey.c
397
if (nbr->auth_spi_in) {
usr.sbin/ldpd/pfkey.c
398
if (pfkey_sa_remove(nbr->af, &nbr->raddr, &nbr->laddr,
usr.sbin/ldpd/pfkey.c
399
&nbr->auth_spi_in) == -1)
usr.sbin/ldpd/pfkey.c
40
static int pfkey_md5sig_remove(struct nbr *);
usr.sbin/ldpd/pfkey.c
403
nbr->auth_established = 0;
usr.sbin/ldpd/pfkey.c
404
nbr->auth_spi_in = 0;
usr.sbin/ldpd/pfkey.c
405
nbr->auth_spi_out = 0;
usr.sbin/ldpd/pfkey.c
411
pfkey_find_auth(struct ldpd_conf *conf, struct nbr *nbr)
usr.sbin/ldpd/pfkey.c
417
if ((auth->id.s_addr & mask) != (nbr->id.s_addr & mask))
usr.sbin/ldpd/pfkey.c
429
pfkey_establish(struct ldpd_conf *conf, struct nbr *nbr)
usr.sbin/ldpd/pfkey.c
433
auth = pfkey_find_auth(conf, nbr);
usr.sbin/ldpd/pfkey.c
438
return (pfkey_md5sig_establish(nbr, auth));
usr.sbin/ldpd/pfkey.c
442
pfkey_remove(struct nbr *nbr)
usr.sbin/ldpd/pfkey.c
444
return (pfkey_md5sig_remove(nbr));
usr.sbin/mrouted/vif.c
207
struct listaddr *nbr;
usr.sbin/mrouted/vif.c
219
nbr = v->uv_neighbors;
usr.sbin/mrouted/vif.c
221
while (nbr) {
usr.sbin/mrouted/vif.c
223
*p++ = ((char *)&nbr->al_addr)[i];
usr.sbin/mrouted/vif.c
225
nbr = nbr->al_next;
usr.sbin/ospf6ctl/ospf6ctl.c
1013
struct ctl_nbr *nbr;
usr.sbin/ospf6ctl/ospf6ctl.c
1018
nbr = imsg->data;
usr.sbin/ospf6ctl/ospf6ctl.c
1019
if (asprintf(&state, "%s/%s", nbr_state_name(nbr->nbr_state),
usr.sbin/ospf6ctl/ospf6ctl.c
1020
if_state_name(nbr->iface_state)) == -1)
usr.sbin/ospf6ctl/ospf6ctl.c
1022
printf("%-15s %-3d %-12s %-10s", inet_ntoa(nbr->id),
usr.sbin/ospf6ctl/ospf6ctl.c
1023
nbr->priority, state, fmt_timeframe_core(nbr->dead_timer));
usr.sbin/ospf6ctl/ospf6ctl.c
1024
printf("%-11s %s\n", nbr->name,
usr.sbin/ospf6ctl/ospf6ctl.c
1025
nbr->uptime == 0 ? "-" : fmt_timeframe_core(nbr->uptime));
usr.sbin/ospf6ctl/ospf6ctl.c
1055
struct ctl_nbr *nbr;
usr.sbin/ospf6ctl/ospf6ctl.c
1059
nbr = imsg->data;
usr.sbin/ospf6ctl/ospf6ctl.c
1060
printf("\nNeighbor %s, ", inet_ntoa(nbr->id));
usr.sbin/ospf6ctl/ospf6ctl.c
1061
printf("interface address %s\n", log_in6addr(&nbr->addr));
usr.sbin/ospf6ctl/ospf6ctl.c
1062
printf(" Area %s, interface %s\n", inet_ntoa(nbr->area),
usr.sbin/ospf6ctl/ospf6ctl.c
1063
nbr->name);
usr.sbin/ospf6ctl/ospf6ctl.c
1066
nbr->priority, nbr_state_name(nbr->nbr_state),
usr.sbin/ospf6ctl/ospf6ctl.c
1067
nbr->state_chng_cnt);
usr.sbin/ospf6ctl/ospf6ctl.c
1068
printf(" DR is %s, ", inet_ntoa(nbr->dr));
usr.sbin/ospf6ctl/ospf6ctl.c
1069
printf("BDR is %s\n", inet_ntoa(nbr->bdr));
usr.sbin/ospf6ctl/ospf6ctl.c
1070
printf(" Options %s\n", print_ospf_options(nbr->options));
usr.sbin/ospf6ctl/ospf6ctl.c
1072
fmt_timeframe_core(nbr->dead_timer));
usr.sbin/ospf6ctl/ospf6ctl.c
1073
printf(" Uptime %s\n", fmt_timeframe_core(nbr->uptime));
usr.sbin/ospf6ctl/ospf6ctl.c
1074
printf(" Database Summary List %d\n", nbr->db_sum_lst_cnt);
usr.sbin/ospf6ctl/ospf6ctl.c
1075
printf(" Link State Request List %d\n", nbr->ls_req_lst_cnt);
usr.sbin/ospf6ctl/ospf6ctl.c
1077
nbr->ls_retrans_lst_cnt);
usr.sbin/ospf6d/database.c
104
nbr->dd_more = 0;
usr.sbin/ospf6d/database.c
112
switch (nbr->iface->type) {
usr.sbin/ospf6d/database.c
115
dd_hdr.iface_mtu = htons(nbr->iface->mtu);
usr.sbin/ospf6d/database.c
118
dst = nbr->addr;
usr.sbin/ospf6d/database.c
119
dd_hdr.iface_mtu = htons(nbr->iface->mtu);
usr.sbin/ospf6d/database.c
126
dst = nbr->iface->dst;
usr.sbin/ospf6d/database.c
133
dd_hdr.opts = htonl(area_ospf_options(nbr->iface->area));
usr.sbin/ospf6d/database.c
135
dd_hdr.dd_seq_num = htonl(nbr->dd_seq_num);
usr.sbin/ospf6d/database.c
142
if (upd_ospf_hdr(buf, nbr->iface))
usr.sbin/ospf6d/database.c
146
if (send_packet(nbr->iface, buf, &dst) == -1)
usr.sbin/ospf6d/database.c
158
recv_db_description(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospf6d/database.c
165
"bad packet size", inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/database.c
173
if (ntohs(dd_hdr.iface_mtu) > nbr->iface->mtu) {
usr.sbin/ospf6d/database.c
175
"invalid MTU %d expected %d", inet_ntoa(nbr->id),
usr.sbin/ospf6d/database.c
176
nbr->iface->name, ntohs(dd_hdr.iface_mtu),
usr.sbin/ospf6d/database.c
177
nbr->iface->mtu);
usr.sbin/ospf6d/database.c
181
if (nbr->last_rx_options == dd_hdr.opts &&
usr.sbin/ospf6d/database.c
182
nbr->last_rx_bits == dd_hdr.bits &&
usr.sbin/ospf6d/database.c
183
ntohl(dd_hdr.dd_seq_num) == nbr->dd_seq_num - nbr->dd_master ?
usr.sbin/ospf6d/database.c
186
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/database.c
187
nbr->iface->name);
usr.sbin/ospf6d/database.c
191
switch (nbr->state) {
usr.sbin/ospf6d/database.c
197
"packet ignored in state %s", inet_ntoa(nbr->id),
usr.sbin/ospf6d/database.c
198
nbr->iface->name, nbr_state_name(nbr->state));
usr.sbin/ospf6d/database.c
202
nbr_fsm(nbr, NBR_EVT_2_WAY_RCVD);
usr.sbin/ospf6d/database.c
203
if_fsm(nbr->iface, IF_EVT_NBR_CHNG);
usr.sbin/ospf6d/database.c
204
if (nbr->state != NBR_STA_XSTRT)
usr.sbin/ospf6d/database.c
215
if ((ntohl(nbr->id.s_addr)) >
usr.sbin/ospf6d/database.c
218
nbr->dd_master = 0;
usr.sbin/ospf6d/database.c
219
nbr->dd_seq_num = ntohl(dd_hdr.dd_seq_num);
usr.sbin/ospf6d/database.c
222
nbr_fsm(nbr, NBR_EVT_NEG_DONE);
usr.sbin/ospf6d/database.c
226
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) {
usr.sbin/ospf6d/database.c
230
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/database.c
231
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospf6d/database.c
234
nbr->dd_seq_num++;
usr.sbin/ospf6d/database.c
237
nbr_fsm(nbr, NBR_EVT_NEG_DONE);
usr.sbin/ospf6d/database.c
241
nbr->dd_pending++;
usr.sbin/ospf6d/database.c
242
ospfe_imsg_compose_rde(IMSG_DD, nbr->peerid,
usr.sbin/ospf6d/database.c
249
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/database.c
250
nbr_state_name(nbr->state));
usr.sbin/ospf6d/database.c
257
!(dd_hdr.bits & OSPF_DBD_MS) == !nbr->dd_master) {
usr.sbin/ospf6d/database.c
259
"seq num mismatch, bad flags", inet_ntoa(nbr->id),
usr.sbin/ospf6d/database.c
260
nbr->iface->name);
usr.sbin/ospf6d/database.c
261
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospf6d/database.c
265
if (nbr->last_rx_options != dd_hdr.opts) {
usr.sbin/ospf6d/database.c
268
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/database.c
269
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospf6d/database.c
274
if (!nbr->dd_master)
usr.sbin/ospf6d/database.c
276
start_db_tx_timer(nbr);
usr.sbin/ospf6d/database.c
280
if (nbr->state != NBR_STA_XCHNG) {
usr.sbin/ospf6d/database.c
283
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/database.c
284
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospf6d/database.c
285
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospf6d/database.c
290
if (nbr->dd_master) {
usr.sbin/ospf6d/database.c
292
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) {
usr.sbin/ospf6d/database.c
296
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/database.c
297
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospf6d/database.c
298
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospf6d/database.c
301
nbr->dd_seq_num++;
usr.sbin/ospf6d/database.c
304
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num + 1) {
usr.sbin/ospf6d/database.c
308
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/database.c
309
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospf6d/database.c
310
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospf6d/database.c
313
nbr->dd_seq_num = ntohl(dd_hdr.dd_seq_num);
usr.sbin/ospf6d/database.c
318
nbr->dd_pending++;
usr.sbin/ospf6d/database.c
319
ospfe_imsg_compose_rde(IMSG_DD, nbr->peerid, 0,
usr.sbin/ospf6d/database.c
324
db_sum_list_next(nbr);
usr.sbin/ospf6d/database.c
325
start_db_tx_timer(nbr);
usr.sbin/ospf6d/database.c
328
TAILQ_EMPTY(&nbr->db_sum_list))
usr.sbin/ospf6d/database.c
329
if (!nbr->dd_master || !nbr->dd_more)
usr.sbin/ospf6d/database.c
330
nbr_fsm(nbr, NBR_EVT_XCHNG_DONE);
usr.sbin/ospf6d/database.c
336
nbr->last_rx_options = dd_hdr.opts;
usr.sbin/ospf6d/database.c
337
nbr->last_rx_bits = dd_hdr.bits;
usr.sbin/ospf6d/database.c
34
void db_sum_list_next(struct nbr *);
usr.sbin/ospf6d/database.c
341
db_sum_list_add(struct nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospf6d/database.c
348
TAILQ_INSERT_TAIL(&nbr->db_sum_list, le, entry);
usr.sbin/ospf6d/database.c
353
db_sum_list_next(struct nbr *nbr)
usr.sbin/ospf6d/database.c
357
while ((le = TAILQ_FIRST(&nbr->db_sum_list)) != nbr->dd_end) {
usr.sbin/ospf6d/database.c
358
TAILQ_REMOVE(&nbr->db_sum_list, le, entry);
usr.sbin/ospf6d/database.c
365
db_sum_list_clr(struct nbr *nbr)
usr.sbin/ospf6d/database.c
367
nbr->dd_end = NULL;
usr.sbin/ospf6d/database.c
368
db_sum_list_next(nbr);
usr.sbin/ospf6d/database.c
375
struct nbr *nbr = arg;
usr.sbin/ospf6d/database.c
378
switch (nbr->state) {
usr.sbin/ospf6d/database.c
38
send_db_description(struct nbr *nbr)
usr.sbin/ospf6d/database.c
389
send_db_description(nbr);
usr.sbin/ospf6d/database.c
394
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/database.c
399
if (nbr->dd_master) {
usr.sbin/ospf6d/database.c
401
tv.tv_sec = nbr->iface->rxmt_interval;
usr.sbin/ospf6d/database.c
402
if (evtimer_add(&nbr->db_tx_timer, &tv) == -1)
usr.sbin/ospf6d/database.c
408
start_db_tx_timer(struct nbr *nbr)
usr.sbin/ospf6d/database.c
412
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/database.c
416
if (evtimer_add(&nbr->db_tx_timer, &tv) == -1)
usr.sbin/ospf6d/database.c
421
stop_db_tx_timer(struct nbr *nbr)
usr.sbin/ospf6d/database.c
423
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/database.c
426
if (evtimer_del(&nbr->db_tx_timer) == -1)
usr.sbin/ospf6d/database.c
46
if ((buf = ibuf_open(nbr->iface->mtu - sizeof(struct ip6_hdr))) == NULL)
usr.sbin/ospf6d/database.c
50
if (gen_ospf_hdr(buf, nbr->iface, PACKET_TYPE_DD))
usr.sbin/ospf6d/database.c
57
switch (nbr->state) {
usr.sbin/ospf6d/database.c
64
"cannot send packet in state %s", inet_ntoa(nbr->id),
usr.sbin/ospf6d/database.c
65
nbr->iface->name, nbr_state_name(nbr->state));
usr.sbin/ospf6d/database.c
69
nbr->dd_more = 1;
usr.sbin/ospf6d/database.c
72
if (nbr->dd_master)
usr.sbin/ospf6d/database.c
77
if (TAILQ_EMPTY(&nbr->db_sum_list)) {
usr.sbin/ospf6d/database.c
79
nbr->dd_more = 0;
usr.sbin/ospf6d/database.c
82
nbr->dd_more = 1;
usr.sbin/ospf6d/database.c
88
for (le = TAILQ_FIRST(&nbr->db_sum_list); le != NULL &&
usr.sbin/ospf6d/database.c
90
nbr->dd_end = nle = TAILQ_NEXT(le, entry);
usr.sbin/ospf6d/database.c
97
if (nbr->dd_master)
usr.sbin/ospf6d/hello.c
117
struct nbr *nbr = NULL, *dr;
usr.sbin/ospf6d/hello.c
154
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/hello.c
155
if (nbr == iface->self) {
usr.sbin/ospf6d/hello.c
156
if (nbr->id.s_addr == rtr_id) {
usr.sbin/ospf6d/hello.c
164
if (nbr->id.s_addr == rtr_id)
usr.sbin/ospf6d/hello.c
168
if (!nbr) {
usr.sbin/ospf6d/hello.c
169
nbr = nbr_new(rtr_id, iface, ntohl(hello.iface_id), 0, src);
usr.sbin/ospf6d/hello.c
171
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospf6d/hello.c
172
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospf6d/hello.c
173
nbr->priority = LSA_24_GETHI(ntohl(hello.opts));
usr.sbin/ospf6d/hello.c
175
nbr->addr = *src;
usr.sbin/ospf6d/hello.c
178
if (!IN6_ARE_ADDR_EQUAL(&nbr->addr, src)) {
usr.sbin/ospf6d/hello.c
180
__func__, inet_ntoa(nbr->id), log_in6addr(src));
usr.sbin/ospf6d/hello.c
181
nbr->addr = *src;
usr.sbin/ospf6d/hello.c
184
nbr->options = opts;
usr.sbin/ospf6d/hello.c
186
nbr_fsm(nbr, NBR_EVT_HELLO_RCVD);
usr.sbin/ospf6d/hello.c
192
if (nbr->state & NBR_STA_PRELIM) {
usr.sbin/ospf6d/hello.c
193
nbr_fsm(nbr, NBR_EVT_2_WAY_RCVD);
usr.sbin/ospf6d/hello.c
203
nbr_fsm(nbr, NBR_EVT_1_WAY_RCVD);
usr.sbin/ospf6d/hello.c
205
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospf6d/hello.c
206
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospf6d/hello.c
207
nbr->priority = LSA_24_GETHI(ntohl(hello.opts));
usr.sbin/ospf6d/hello.c
211
if (nbr->priority != LSA_24_GETHI(ntohl(hello.opts))) {
usr.sbin/ospf6d/hello.c
212
nbr->priority = LSA_24_GETHI(ntohl(hello.opts));
usr.sbin/ospf6d/hello.c
217
hello.d_rtr == nbr->id.s_addr && hello.bd_rtr == 0)
usr.sbin/ospf6d/hello.c
220
if (iface->state & IF_STA_WAITING && hello.bd_rtr == nbr->id.s_addr) {
usr.sbin/ospf6d/hello.c
231
if ((nbr->id.s_addr == nbr->dr.s_addr &&
usr.sbin/ospf6d/hello.c
232
nbr->id.s_addr != hello.d_rtr) ||
usr.sbin/ospf6d/hello.c
233
(nbr->id.s_addr != nbr->dr.s_addr &&
usr.sbin/ospf6d/hello.c
234
nbr->id.s_addr == hello.d_rtr))
usr.sbin/ospf6d/hello.c
237
if ((nbr->id.s_addr == nbr->bdr.s_addr &&
usr.sbin/ospf6d/hello.c
238
nbr->id.s_addr != hello.bd_rtr) ||
usr.sbin/ospf6d/hello.c
239
(nbr->id.s_addr != nbr->bdr.s_addr &&
usr.sbin/ospf6d/hello.c
240
nbr->id.s_addr == hello.bd_rtr))
usr.sbin/ospf6d/hello.c
244
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospf6d/hello.c
245
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospf6d/hello.c
40
struct nbr *nbr;
usr.sbin/ospf6d/hello.c
91
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/hello.c
92
if ((nbr->state >= NBR_STA_INIT) && (nbr != iface->self))
usr.sbin/ospf6d/hello.c
93
if (ibuf_add(buf, &nbr->id, sizeof(nbr->id)))
usr.sbin/ospf6d/interface.c
261
struct nbr *nbr = NULL;
usr.sbin/ospf6d/interface.c
270
while ((nbr = LIST_FIRST(&iface->nbr_list)) != NULL)
usr.sbin/ospf6d/interface.c
271
nbr_del(nbr);
usr.sbin/ospf6d/interface.c
436
struct nbr *
usr.sbin/ospf6d/interface.c
437
if_elect(struct nbr *a, struct nbr *b)
usr.sbin/ospf6d/interface.c
452
struct nbr *nbr, *bdr = NULL, *dr = NULL;
usr.sbin/ospf6d/interface.c
460
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/interface.c
461
if (nbr->priority == 0 || nbr == dr || /* not electable */
usr.sbin/ospf6d/interface.c
462
nbr->state & NBR_STA_PRELIM || /* not available */
usr.sbin/ospf6d/interface.c
463
nbr->dr.s_addr == nbr->id.s_addr) /* don't elect DR */
usr.sbin/ospf6d/interface.c
471
if (nbr->bdr.s_addr == nbr->id.s_addr) {
usr.sbin/ospf6d/interface.c
473
bdr = if_elect(bdr, nbr);
usr.sbin/ospf6d/interface.c
475
bdr = nbr;
usr.sbin/ospf6d/interface.c
477
bdr = if_elect(bdr, nbr);
usr.sbin/ospf6d/interface.c
479
bdr = nbr;
usr.sbin/ospf6d/interface.c
48
struct nbr *if_elect(struct nbr *, struct nbr *);
usr.sbin/ospf6d/interface.c
483
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/interface.c
484
if (nbr->priority == 0 || nbr->state & NBR_STA_PRELIM ||
usr.sbin/ospf6d/interface.c
485
(nbr != dr && nbr->dr.s_addr != nbr->id.s_addr))
usr.sbin/ospf6d/interface.c
489
dr = nbr;
usr.sbin/ospf6d/interface.c
491
dr = if_elect(dr, nbr);
usr.sbin/ospf6d/interface.c
564
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/interface.c
565
if (nbr->state & NBR_STA_BIDIR)
usr.sbin/ospf6d/interface.c
566
nbr_fsm(nbr, NBR_EVT_ADJ_OK);
usr.sbin/ospf6d/interface.c
581
struct nbr *nbr = NULL;
usr.sbin/ospf6d/interface.c
619
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/interface.c
620
if (nbr_fsm(nbr, NBR_EVT_KILL_NBR)) {
usr.sbin/ospf6d/interface.c
622
inet_ntoa(nbr->id));
usr.sbin/ospf6d/interface.c
645
struct nbr *nbr;
usr.sbin/ospf6d/interface.c
696
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/interface.c
697
if (nbr == iface->self)
usr.sbin/ospf6d/interface.c
700
if (nbr->state & NBR_STA_ADJFORM)
usr.sbin/ospf6d/lsack.c
100
switch (nbr->state) {
usr.sbin/ospf6d/lsack.c
108
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospf6d/lsack.c
109
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsack.c
117
if (lsa_hdr_check(nbr, &lsa_hdr)) {
usr.sbin/ospf6d/lsack.c
119
if (nbr->iface->state & IF_STA_DROTHER)
usr.sbin/ospf6d/lsack.c
121
nbr->iface->self, &lsa_hdr);
usr.sbin/ospf6d/lsack.c
122
(void)ls_retrans_list_del(nbr, &lsa_hdr);
usr.sbin/ospf6d/lsack.c
130
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsack.c
131
nbr->iface->name);
usr.sbin/ospf6d/lsack.c
141
lsa_hdr_check(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/lsack.c
146
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsack.c
163
lsa_hdr->type, inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsack.c
170
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsack.c
171
nbr->iface->name);
usr.sbin/ospf6d/lsack.c
240
struct nbr *nbr;
usr.sbin/ospf6d/lsack.c
281
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/lsack.c
282
if (nbr == iface->self)
usr.sbin/ospf6d/lsack.c
284
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospf6d/lsack.c
286
send_ls_ack(iface, nbr->addr, buf);
usr.sbin/ospf6d/lsack.c
96
recv_ls_ack(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospf6d/lsreq.c
100
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospf6d/lsreq.c
101
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsreq.c
106
ospfe_imsg_compose_rde(IMSG_LS_REQ, nbr->peerid, 0, buf, len);
usr.sbin/ospf6d/lsreq.c
115
ls_req_list_add(struct nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospf6d/lsreq.c
125
TAILQ_INSERT_TAIL(&nbr->ls_req_list, le, entry);
usr.sbin/ospf6d/lsreq.c
127
nbr->ls_req_cnt++;
usr.sbin/ospf6d/lsreq.c
131
ls_req_list_get(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/lsreq.c
135
TAILQ_FOREACH(le, &nbr->ls_req_list, entry) {
usr.sbin/ospf6d/lsreq.c
145
ls_req_list_free(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospf6d/lsreq.c
147
if (nbr->ls_req == le) {
usr.sbin/ospf6d/lsreq.c
148
nbr->ls_req = TAILQ_NEXT(le, entry);
usr.sbin/ospf6d/lsreq.c
151
TAILQ_REMOVE(&nbr->ls_req_list, le, entry);
usr.sbin/ospf6d/lsreq.c
154
nbr->ls_req_cnt--;
usr.sbin/ospf6d/lsreq.c
157
if (nbr->ls_req != NULL &&
usr.sbin/ospf6d/lsreq.c
158
nbr->ls_req == TAILQ_FIRST(&nbr->ls_req_list)) {
usr.sbin/ospf6d/lsreq.c
159
start_ls_req_tx_timer(nbr);
usr.sbin/ospf6d/lsreq.c
163
if (ls_req_list_empty(nbr) && nbr->dd_pending == 0 &&
usr.sbin/ospf6d/lsreq.c
164
nbr->state != NBR_STA_XCHNG)
usr.sbin/ospf6d/lsreq.c
165
nbr_fsm(nbr, NBR_EVT_LOAD_DONE);
usr.sbin/ospf6d/lsreq.c
169
ls_req_list_clr(struct nbr *nbr)
usr.sbin/ospf6d/lsreq.c
173
while ((le = TAILQ_FIRST(&nbr->ls_req_list)) != NULL) {
usr.sbin/ospf6d/lsreq.c
174
TAILQ_REMOVE(&nbr->ls_req_list, le, entry);
usr.sbin/ospf6d/lsreq.c
179
nbr->ls_req_cnt = 0;
usr.sbin/ospf6d/lsreq.c
180
nbr->ls_req = NULL;
usr.sbin/ospf6d/lsreq.c
184
ls_req_list_empty(struct nbr *nbr)
usr.sbin/ospf6d/lsreq.c
186
return (TAILQ_EMPTY(&nbr->ls_req_list));
usr.sbin/ospf6d/lsreq.c
193
struct nbr *nbr = arg;
usr.sbin/ospf6d/lsreq.c
196
switch (nbr->state) {
usr.sbin/ospf6d/lsreq.c
206
send_ls_req(nbr);
usr.sbin/ospf6d/lsreq.c
212
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsreq.c
213
nbr->iface->name);
usr.sbin/ospf6d/lsreq.c
218
if (nbr->state == NBR_STA_LOAD) {
usr.sbin/ospf6d/lsreq.c
220
tv.tv_sec = nbr->iface->rxmt_interval;
usr.sbin/ospf6d/lsreq.c
221
if (evtimer_add(&nbr->lsreq_tx_timer, &tv) == -1)
usr.sbin/ospf6d/lsreq.c
227
start_ls_req_tx_timer(struct nbr *nbr)
usr.sbin/ospf6d/lsreq.c
231
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/lsreq.c
235
if (evtimer_add(&nbr->lsreq_tx_timer, &tv) == -1)
usr.sbin/ospf6d/lsreq.c
240
stop_ls_req_tx_timer(struct nbr *nbr)
usr.sbin/ospf6d/lsreq.c
242
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/lsreq.c
245
if (evtimer_del(&nbr->lsreq_tx_timer) == -1)
usr.sbin/ospf6d/lsreq.c
33
send_ls_req(struct nbr *nbr)
usr.sbin/ospf6d/lsreq.c
40
if ((buf = ibuf_open(nbr->iface->mtu - sizeof(struct ip6_hdr))) == NULL)
usr.sbin/ospf6d/lsreq.c
43
switch (nbr->iface->type) {
usr.sbin/ospf6d/lsreq.c
51
dst = nbr->addr;
usr.sbin/ospf6d/lsreq.c
58
if (gen_ospf_hdr(buf, nbr->iface, PACKET_TYPE_LS_REQUEST))
usr.sbin/ospf6d/lsreq.c
62
for (le = TAILQ_FIRST(&nbr->ls_req_list);
usr.sbin/ospf6d/lsreq.c
65
nbr->ls_req = nle = TAILQ_NEXT(le, entry);
usr.sbin/ospf6d/lsreq.c
75
if (upd_ospf_hdr(buf, nbr->iface))
usr.sbin/ospf6d/lsreq.c
78
if (send_packet(nbr->iface, buf, &dst) == -1)
usr.sbin/ospf6d/lsreq.c
90
recv_ls_req(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospf6d/lsreq.c
92
switch (nbr->state) {
usr.sbin/ospf6d/lsupdate.c
127
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/lsupdate.c
128
if (nbr == iface->self)
usr.sbin/ospf6d/lsupdate.c
130
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospf6d/lsupdate.c
132
if (!TAILQ_EMPTY(&nbr->ls_retrans_list)) {
usr.sbin/ospf6d/lsupdate.c
133
le = TAILQ_LAST(&nbr->ls_retrans_list,
usr.sbin/ospf6d/lsupdate.c
140
ls_retrans_list_add(nbr, data, 0, 1);
usr.sbin/ospf6d/lsupdate.c
241
recv_ls_update(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospf6d/lsupdate.c
248
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsupdate.c
249
nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
257
switch (nbr->state) {
usr.sbin/ospf6d/lsupdate.c
265
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospf6d/lsupdate.c
266
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
274
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsupdate.c
275
nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
281
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsupdate.c
282
nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
285
ospfe_imsg_compose_rde(IMSG_LS_UPD, nbr->peerid, 0,
usr.sbin/ospf6d/lsupdate.c
292
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/lsupdate.c
293
nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
304
ls_retrans_list_add(struct nbr *nbr, struct lsa_hdr *lsa,
usr.sbin/ospf6d/lsupdate.c
321
ls_retrans_list_insert(nbr, le);
usr.sbin/ospf6d/lsupdate.c
323
if (!evtimer_pending(&nbr->ls_retrans_timer, NULL)) {
usr.sbin/ospf6d/lsupdate.c
325
tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
usr.sbin/ospf6d/lsupdate.c
327
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospf6d/lsupdate.c
333
ls_retrans_list_del(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/lsupdate.c
337
if ((le = ls_retrans_list_get(nbr, lsa_hdr)) == NULL)
usr.sbin/ospf6d/lsupdate.c
348
ls_retrans_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
356
ls_retrans_list_get(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/lsupdate.c
360
TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
usr.sbin/ospf6d/lsupdate.c
370
ls_retrans_list_insert(struct nbr *nbr, struct lsa_entry *new)
usr.sbin/ospf6d/lsupdate.c
375
TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
usr.sbin/ospf6d/lsupdate.c
379
nbr->ls_ret_cnt++;
usr.sbin/ospf6d/lsupdate.c
385
TAILQ_INSERT_TAIL(&nbr->ls_retrans_list, new, entry);
usr.sbin/ospf6d/lsupdate.c
386
nbr->ls_ret_cnt++;
usr.sbin/ospf6d/lsupdate.c
390
ls_retrans_list_remove(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospf6d/lsupdate.c
400
if (TAILQ_FIRST(&nbr->ls_retrans_list) == le &&
usr.sbin/ospf6d/lsupdate.c
401
evtimer_pending(&nbr->ls_retrans_timer, NULL))
usr.sbin/ospf6d/lsupdate.c
404
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospf6d/lsupdate.c
405
nbr->ls_ret_cnt--;
usr.sbin/ospf6d/lsupdate.c
407
if (reset && TAILQ_FIRST(&nbr->ls_retrans_list)) {
usr.sbin/ospf6d/lsupdate.c
408
if (evtimer_del(&nbr->ls_retrans_timer) == -1)
usr.sbin/ospf6d/lsupdate.c
412
tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
usr.sbin/ospf6d/lsupdate.c
414
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospf6d/lsupdate.c
420
ls_retrans_list_free(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospf6d/lsupdate.c
422
ls_retrans_list_remove(nbr, le);
usr.sbin/ospf6d/lsupdate.c
424
lsa_cache_put(le->le_ref, nbr);
usr.sbin/ospf6d/lsupdate.c
429
ls_retrans_list_clr(struct nbr *nbr)
usr.sbin/ospf6d/lsupdate.c
43
void ls_retrans_list_insert(struct nbr *, struct lsa_entry *);
usr.sbin/ospf6d/lsupdate.c
433
while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
usr.sbin/ospf6d/lsupdate.c
434
ls_retrans_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
436
nbr->ls_ret_cnt = 0;
usr.sbin/ospf6d/lsupdate.c
44
void ls_retrans_list_remove(struct nbr *, struct lsa_entry *);
usr.sbin/ospf6d/lsupdate.c
445
struct nbr *nbr = bula;
usr.sbin/ospf6d/lsupdate.c
452
if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
usr.sbin/ospf6d/lsupdate.c
460
if (nbr->iface->self == nbr) {
usr.sbin/ospf6d/lsupdate.c
466
if (le->le_oneshot && nbr->iface->state & IF_STA_DRORBDR)
usr.sbin/ospf6d/lsupdate.c
468
else if (nbr->iface->state & IF_STA_DRORBDR) {
usr.sbin/ospf6d/lsupdate.c
473
lsa_flood(nbr->iface, nbr, &le->le_ref->hdr,
usr.sbin/ospf6d/lsupdate.c
475
ls_retrans_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
478
} else if (nbr->iface->type == IF_TYPE_POINTOPOINT)
usr.sbin/ospf6d/lsupdate.c
479
memcpy(&addr, &nbr->addr, sizeof(addr));
usr.sbin/ospf6d/lsupdate.c
48
lsa_flood(struct iface *iface, struct nbr *originator, struct lsa_hdr *lsa_hdr,
usr.sbin/ospf6d/lsupdate.c
483
memcpy(&addr, &nbr->addr, sizeof(addr));
usr.sbin/ospf6d/lsupdate.c
486
if ((buf = prepare_ls_update(nbr->iface, bigpkt)) == NULL) {
usr.sbin/ospf6d/lsupdate.c
491
while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL &&
usr.sbin/ospf6d/lsupdate.c
499
if (add_ls_update(buf, nbr->iface, le->le_ref->data,
usr.sbin/ospf6d/lsupdate.c
505
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/lsupdate.c
509
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospf6d/lsupdate.c
51
struct nbr *nbr;
usr.sbin/ospf6d/lsupdate.c
510
nbr->ls_ret_cnt--;
usr.sbin/ospf6d/lsupdate.c
511
le->le_when = nbr->iface->rxmt_interval;
usr.sbin/ospf6d/lsupdate.c
512
ls_retrans_list_insert(nbr, le);
usr.sbin/ospf6d/lsupdate.c
518
ls_retrans_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
520
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospf6d/lsupdate.c
521
nbr->ls_ret_cnt--;
usr.sbin/ospf6d/lsupdate.c
522
le->le_when = nbr->iface->rxmt_interval;
usr.sbin/ospf6d/lsupdate.c
523
ls_retrans_list_insert(nbr, le);
usr.sbin/ospf6d/lsupdate.c
527
send_ls_update(buf, nbr->iface, addr, nlsa);
usr.sbin/ospf6d/lsupdate.c
532
if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL) {
usr.sbin/ospf6d/lsupdate.c
536
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospf6d/lsupdate.c
56
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/lsupdate.c
57
if (nbr == iface->self)
usr.sbin/ospf6d/lsupdate.c
59
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospf6d/lsupdate.c
620
lsa_cache_put(struct lsa_ref *ref, struct nbr *nbr)
usr.sbin/ospf6d/lsupdate.c
626
ospfe_imsg_compose_rde(IMSG_LS_MAXAGE, nbr->peerid, 0,
usr.sbin/ospf6d/lsupdate.c
66
while ((le = ls_retrans_list_get(nbr, lsa_hdr)))
usr.sbin/ospf6d/lsupdate.c
67
ls_retrans_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
69
if (!(nbr->state & NBR_STA_FULL) &&
usr.sbin/ospf6d/lsupdate.c
70
(le = ls_req_list_get(nbr, lsa_hdr)) != NULL) {
usr.sbin/ospf6d/lsupdate.c
74
ls_req_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
81
ls_req_list_free(nbr, le);
usr.sbin/ospf6d/lsupdate.c
86
if (nbr == originator) {
usr.sbin/ospf6d/lsupdate.c
98
ls_retrans_list_add(nbr, data, iface->rxmt_interval, 0);
usr.sbin/ospf6d/neighbor.c
119
nbr_fsm(struct nbr *nbr, enum nbr_event event)
usr.sbin/ospf6d/neighbor.c
126
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/neighbor.c
129
old_state = nbr->state;
usr.sbin/ospf6d/neighbor.c
141
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/neighbor.c
149
ret = nbr_act_reset_itimer(nbr);
usr.sbin/ospf6d/neighbor.c
152
ret = nbr_act_start_itimer(nbr);
usr.sbin/ospf6d/neighbor.c
155
ret = nbr_act_eval(nbr);
usr.sbin/ospf6d/neighbor.c
158
ret = nbr_act_snapshot(nbr);
usr.sbin/ospf6d/neighbor.c
162
start_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
165
ret = nbr_act_exchange_done(nbr);
usr.sbin/ospf6d/neighbor.c
168
ret = nbr_act_adj_ok(nbr);
usr.sbin/ospf6d/neighbor.c
171
ret = nbr_act_restart_dd(nbr);
usr.sbin/ospf6d/neighbor.c
174
ret = nbr_act_delete(nbr);
usr.sbin/ospf6d/neighbor.c
177
ret = nbr_act_clear_lists(nbr);
usr.sbin/ospf6d/neighbor.c
180
ret = nbr_act_hello_check(nbr);
usr.sbin/ospf6d/neighbor.c
190
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/neighbor.c
196
nbr->state = new_state;
usr.sbin/ospf6d/neighbor.c
198
if (old_state != nbr->state) {
usr.sbin/ospf6d/neighbor.c
199
nbr->stats.sta_chng++;
usr.sbin/ospf6d/neighbor.c
201
if (old_state & NBR_STA_FULL || nbr->state & NBR_STA_FULL) {
usr.sbin/ospf6d/neighbor.c
206
orig_rtr_lsa(nbr->iface->area);
usr.sbin/ospf6d/neighbor.c
207
if (nbr->iface->state & IF_STA_DR)
usr.sbin/ospf6d/neighbor.c
208
orig_net_lsa(nbr->iface);
usr.sbin/ospf6d/neighbor.c
211
nbr->uptime = now.tv_sec;
usr.sbin/ospf6d/neighbor.c
216
nbr->peerid, 0, &nbr->state, sizeof(nbr->state));
usr.sbin/ospf6d/neighbor.c
219
if (old_state & ~NBR_STA_PRELIM && nbr->state & NBR_STA_PRELIM)
usr.sbin/ospf6d/neighbor.c
220
if_fsm(nbr->iface, IF_EVT_NBR_CHNG);
usr.sbin/ospf6d/neighbor.c
226
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospf6d/neighbor.c
228
nbr_state_name(nbr->state));
usr.sbin/ospf6d/neighbor.c
230
if (nbr->iface->type == IF_TYPE_VIRTUALLINK) {
usr.sbin/ospf6d/neighbor.c
231
orig_rtr_lsa(nbr->iface->area);
usr.sbin/ospf6d/neighbor.c
242
struct nbr *nbr;
usr.sbin/ospf6d/neighbor.c
257
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospf6d/neighbor.c
260
nbr->id.s_addr = ospfe_router_id();
usr.sbin/ospf6d/neighbor.c
261
nbr->state = NBR_STA_DOWN;
usr.sbin/ospf6d/neighbor.c
262
nbr->peerid = NBR_IDSELF;
usr.sbin/ospf6d/neighbor.c
263
head = NBR_HASH(nbr->peerid);
usr.sbin/ospf6d/neighbor.c
264
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospf6d/neighbor.c
266
TAILQ_INIT(&nbr->ls_retrans_list);
usr.sbin/ospf6d/neighbor.c
267
TAILQ_INIT(&nbr->db_sum_list);
usr.sbin/ospf6d/neighbor.c
268
TAILQ_INIT(&nbr->ls_req_list);
usr.sbin/ospf6d/neighbor.c
271
struct nbr *
usr.sbin/ospf6d/neighbor.c
276
struct nbr *nbr;
usr.sbin/ospf6d/neighbor.c
279
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospf6d/neighbor.c
282
nbr->state = NBR_STA_DOWN;
usr.sbin/ospf6d/neighbor.c
283
nbr->dd_master = 1;
usr.sbin/ospf6d/neighbor.c
284
nbr->dd_seq_num = arc4random(); /* RFC: some unique value */
usr.sbin/ospf6d/neighbor.c
285
nbr->id.s_addr = nbr_id;
usr.sbin/ospf6d/neighbor.c
290
nbr->peerid = peercnt;
usr.sbin/ospf6d/neighbor.c
291
head = NBR_HASH(nbr->peerid);
usr.sbin/ospf6d/neighbor.c
292
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospf6d/neighbor.c
295
nbr->iface = iface;
usr.sbin/ospf6d/neighbor.c
296
nbr->iface_id = iface_id;
usr.sbin/ospf6d/neighbor.c
297
LIST_INSERT_HEAD(&iface->nbr_list, nbr, entry);
usr.sbin/ospf6d/neighbor.c
299
TAILQ_INIT(&nbr->ls_retrans_list);
usr.sbin/ospf6d/neighbor.c
300
TAILQ_INIT(&nbr->db_sum_list);
usr.sbin/ospf6d/neighbor.c
301
TAILQ_INIT(&nbr->ls_req_list);
usr.sbin/ospf6d/neighbor.c
303
nbr->ls_req = NULL;
usr.sbin/ospf6d/neighbor.c
306
nbr->state = NBR_STA_FULL;
usr.sbin/ospf6d/neighbor.c
307
nbr->addr = iface->addr;
usr.sbin/ospf6d/neighbor.c
308
nbr->priority = iface->priority;
usr.sbin/ospf6d/neighbor.c
312
evtimer_set(&nbr->inactivity_timer, nbr_itimer, nbr);
usr.sbin/ospf6d/neighbor.c
313
evtimer_set(&nbr->db_tx_timer, db_tx_timer, nbr);
usr.sbin/ospf6d/neighbor.c
314
evtimer_set(&nbr->lsreq_tx_timer, ls_req_tx_timer, nbr);
usr.sbin/ospf6d/neighbor.c
315
evtimer_set(&nbr->ls_retrans_timer, ls_retrans_timer, nbr);
usr.sbin/ospf6d/neighbor.c
316
evtimer_set(&nbr->adj_timer, nbr_adj_timer, nbr);
usr.sbin/ospf6d/neighbor.c
321
rn.id.s_addr = nbr->id.s_addr;
usr.sbin/ospf6d/neighbor.c
322
rn.area_id.s_addr = nbr->iface->area->id.s_addr;
usr.sbin/ospf6d/neighbor.c
323
rn.ifindex = nbr->iface->ifindex;
usr.sbin/ospf6d/neighbor.c
324
rn.iface_id = nbr->iface_id;
usr.sbin/ospf6d/neighbor.c
325
rn.state = nbr->state;
usr.sbin/ospf6d/neighbor.c
327
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_UP, nbr->peerid, 0, &rn,
usr.sbin/ospf6d/neighbor.c
330
return (nbr);
usr.sbin/ospf6d/neighbor.c
334
nbr_del(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
336
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_DOWN, nbr->peerid, 0, NULL, 0);
usr.sbin/ospf6d/neighbor.c
338
if (evtimer_pending(&nbr->inactivity_timer, NULL))
usr.sbin/ospf6d/neighbor.c
339
evtimer_del(&nbr->inactivity_timer);
usr.sbin/ospf6d/neighbor.c
340
if (evtimer_pending(&nbr->db_tx_timer, NULL))
usr.sbin/ospf6d/neighbor.c
341
evtimer_del(&nbr->db_tx_timer);
usr.sbin/ospf6d/neighbor.c
342
if (evtimer_pending(&nbr->lsreq_tx_timer, NULL))
usr.sbin/ospf6d/neighbor.c
343
evtimer_del(&nbr->lsreq_tx_timer);
usr.sbin/ospf6d/neighbor.c
344
if (evtimer_pending(&nbr->ls_retrans_timer, NULL))
usr.sbin/ospf6d/neighbor.c
345
evtimer_del(&nbr->ls_retrans_timer);
usr.sbin/ospf6d/neighbor.c
346
if (evtimer_pending(&nbr->adj_timer, NULL))
usr.sbin/ospf6d/neighbor.c
347
evtimer_del(&nbr->adj_timer);
usr.sbin/ospf6d/neighbor.c
350
ls_retrans_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
351
db_sum_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
352
ls_req_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
354
LIST_REMOVE(nbr, entry);
usr.sbin/ospf6d/neighbor.c
355
LIST_REMOVE(nbr, hash);
usr.sbin/ospf6d/neighbor.c
357
free(nbr);
usr.sbin/ospf6d/neighbor.c
360
struct nbr *
usr.sbin/ospf6d/neighbor.c
364
struct nbr *nbr;
usr.sbin/ospf6d/neighbor.c
368
LIST_FOREACH(nbr, head, hash) {
usr.sbin/ospf6d/neighbor.c
369
if (nbr->peerid == peerid)
usr.sbin/ospf6d/neighbor.c
370
return (nbr);
usr.sbin/ospf6d/neighbor.c
376
struct nbr *
usr.sbin/ospf6d/neighbor.c
379
struct nbr *nbr = NULL;
usr.sbin/ospf6d/neighbor.c
381
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/neighbor.c
382
if (nbr->id.s_addr == rtr_id)
usr.sbin/ospf6d/neighbor.c
383
return (nbr);
usr.sbin/ospf6d/neighbor.c
393
struct nbr *nbr = arg;
usr.sbin/ospf6d/neighbor.c
395
if (nbr->state == NBR_STA_DOWN)
usr.sbin/ospf6d/neighbor.c
396
nbr_del(nbr);
usr.sbin/ospf6d/neighbor.c
398
nbr_fsm(nbr, NBR_EVT_ITIMER);
usr.sbin/ospf6d/neighbor.c
402
nbr_start_itimer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
407
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/ospf6d/neighbor.c
409
if (evtimer_add(&nbr->inactivity_timer, &tv) == -1)
usr.sbin/ospf6d/neighbor.c
41
int nbr_adj_ok(struct nbr *);
usr.sbin/ospf6d/neighbor.c
414
nbr_stop_itimer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
416
if (evtimer_del(&nbr->inactivity_timer) == -1)
usr.sbin/ospf6d/neighbor.c
421
nbr_reset_itimer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
426
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/ospf6d/neighbor.c
428
if (evtimer_add(&nbr->inactivity_timer, &tv) == -1)
usr.sbin/ospf6d/neighbor.c
43
LIST_HEAD(nbr_head, nbr);
usr.sbin/ospf6d/neighbor.c
435
struct nbr *nbr = arg;
usr.sbin/ospf6d/neighbor.c
437
if (!(nbr->state & NBR_STA_ADJFORM))
usr.sbin/ospf6d/neighbor.c
440
if (nbr->state & NBR_STA_ACTIVE && nbr->state != NBR_STA_FULL) {
usr.sbin/ospf6d/neighbor.c
443
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/neighbor.c
444
nbr_fsm(nbr, NBR_EVT_ADJTMOUT);
usr.sbin/ospf6d/neighbor.c
449
nbr_start_adj_timer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
456
if (evtimer_add(&nbr->adj_timer, &tv) == -1)
usr.sbin/ospf6d/neighbor.c
462
nbr_act_reset_itimer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
464
nbr_reset_itimer(nbr);
usr.sbin/ospf6d/neighbor.c
470
nbr_act_start_itimer(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
472
nbr_start_itimer(nbr);
usr.sbin/ospf6d/neighbor.c
478
nbr_adj_ok(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
480
struct iface *iface = nbr->iface;
usr.sbin/ospf6d/neighbor.c
494
if (iface->dr == nbr || iface->bdr == nbr ||
usr.sbin/ospf6d/neighbor.c
505
nbr_act_eval(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
507
if (!nbr_adj_ok(nbr)) {
usr.sbin/ospf6d/neighbor.c
508
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospf6d/neighbor.c
512
nbr->state = NBR_STA_XSTRT;
usr.sbin/ospf6d/neighbor.c
513
nbr->dd_master = 1;
usr.sbin/ospf6d/neighbor.c
514
nbr->dd_seq_num++; /* as per RFC */
usr.sbin/ospf6d/neighbor.c
515
nbr->dd_pending = 0;
usr.sbin/ospf6d/neighbor.c
517
start_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
519
nbr_start_adj_timer(nbr);
usr.sbin/ospf6d/neighbor.c
525
nbr_act_snapshot(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
527
stop_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
530
if (nbr->dd_snapshot) {
usr.sbin/ospf6d/neighbor.c
532
"for neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospf6d/neighbor.c
533
nbr->iface->name);
usr.sbin/ospf6d/neighbor.c
534
return (nbr_act_restart_dd(nbr));
usr.sbin/ospf6d/neighbor.c
536
ospfe_imsg_compose_rde(IMSG_DB_SNAPSHOT, nbr->peerid, 0, NULL, 0);
usr.sbin/ospf6d/neighbor.c
538
nbr->dd_snapshot = 1; /* wait for IMSG_DB_END */
usr.sbin/ospf6d/neighbor.c
539
nbr->state = NBR_STA_SNAP;
usr.sbin/ospf6d/neighbor.c
545
nbr_act_exchange_done(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
547
if (nbr->dd_master)
usr.sbin/ospf6d/neighbor.c
548
stop_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
550
if (ls_req_list_empty(nbr) && nbr->state == NBR_STA_XCHNG &&
usr.sbin/ospf6d/neighbor.c
551
nbr->dd_pending == 0) {
usr.sbin/ospf6d/neighbor.c
552
nbr->state = NBR_STA_FULL;
usr.sbin/ospf6d/neighbor.c
556
nbr->state = NBR_STA_LOAD;
usr.sbin/ospf6d/neighbor.c
558
if (!ls_req_list_empty(nbr))
usr.sbin/ospf6d/neighbor.c
559
start_ls_req_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
565
nbr_act_adj_ok(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
567
if (nbr_adj_ok(nbr)) {
usr.sbin/ospf6d/neighbor.c
568
if (nbr->state == NBR_STA_2_WAY)
usr.sbin/ospf6d/neighbor.c
569
return (nbr_act_eval(nbr));
usr.sbin/ospf6d/neighbor.c
571
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospf6d/neighbor.c
572
return (nbr_act_clear_lists(nbr));
usr.sbin/ospf6d/neighbor.c
579
nbr_act_restart_dd(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
581
nbr_act_clear_lists(nbr);
usr.sbin/ospf6d/neighbor.c
583
if (!nbr_adj_ok(nbr)) {
usr.sbin/ospf6d/neighbor.c
584
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospf6d/neighbor.c
588
nbr->state = NBR_STA_XSTRT;
usr.sbin/ospf6d/neighbor.c
589
nbr->dd_master = 1;
usr.sbin/ospf6d/neighbor.c
590
nbr->dd_seq_num += arc4random() & 0xffff;
usr.sbin/ospf6d/neighbor.c
591
nbr->dd_pending = 0;
usr.sbin/ospf6d/neighbor.c
594
start_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
596
nbr_start_adj_timer(nbr);
usr.sbin/ospf6d/neighbor.c
602
nbr_act_delete(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
607
nbr->dr.s_addr = 0;
usr.sbin/ospf6d/neighbor.c
608
nbr->bdr.s_addr = 0;
usr.sbin/ospf6d/neighbor.c
610
if (nbr == nbr->iface->self)
usr.sbin/ospf6d/neighbor.c
614
nbr_stop_itimer(nbr);
usr.sbin/ospf6d/neighbor.c
620
if (evtimer_add(&nbr->inactivity_timer, &tv)) {
usr.sbin/ospf6d/neighbor.c
623
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/neighbor.c
626
return (nbr_act_clear_lists(nbr));
usr.sbin/ospf6d/neighbor.c
630
nbr_act_clear_lists(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
633
stop_db_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
634
stop_ls_req_tx_timer(nbr);
usr.sbin/ospf6d/neighbor.c
637
ls_retrans_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
638
db_sum_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
639
ls_req_list_clr(nbr);
usr.sbin/ospf6d/neighbor.c
645
nbr_act_hello_check(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
648
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospf6d/neighbor.c
654
nbr_to_ctl(struct nbr *nbr)
usr.sbin/ospf6d/neighbor.c
660
memcpy(nctl.name, nbr->iface->name, sizeof(nctl.name));
usr.sbin/ospf6d/neighbor.c
661
memcpy(&nctl.id, &nbr->id, sizeof(nctl.id));
usr.sbin/ospf6d/neighbor.c
662
memcpy(&nctl.addr, &nbr->addr, sizeof(nctl.addr));
usr.sbin/ospf6d/neighbor.c
663
memcpy(&nctl.dr, &nbr->dr, sizeof(nctl.dr));
usr.sbin/ospf6d/neighbor.c
664
memcpy(&nctl.bdr, &nbr->bdr, sizeof(nctl.bdr));
usr.sbin/ospf6d/neighbor.c
665
memcpy(&nctl.area, &nbr->iface->area->id, sizeof(nctl.area));
usr.sbin/ospf6d/neighbor.c
669
TAILQ_FOREACH(le, &nbr->db_sum_list, entry)
usr.sbin/ospf6d/neighbor.c
672
nctl.ls_req_lst_cnt = nbr->ls_req_cnt;
usr.sbin/ospf6d/neighbor.c
673
nctl.ls_retrans_lst_cnt = nbr->ls_ret_cnt;
usr.sbin/ospf6d/neighbor.c
675
nctl.nbr_state = nbr->state;
usr.sbin/ospf6d/neighbor.c
682
if (nbr->iface->dr == nbr)
usr.sbin/ospf6d/neighbor.c
684
else if (nbr->iface->bdr == nbr)
usr.sbin/ospf6d/neighbor.c
686
else if (nbr->iface->state & IF_STA_MULTI)
usr.sbin/ospf6d/neighbor.c
689
nctl.iface_state = nbr->iface->state;
usr.sbin/ospf6d/neighbor.c
691
nctl.state_chng_cnt = nbr->stats.sta_chng;
usr.sbin/ospf6d/neighbor.c
693
nctl.priority = nbr->priority;
usr.sbin/ospf6d/neighbor.c
694
nctl.options = nbr->options;
usr.sbin/ospf6d/neighbor.c
697
if (evtimer_pending(&nbr->inactivity_timer, &tv)) {
usr.sbin/ospf6d/neighbor.c
699
if (nbr->state & NBR_STA_DOWN)
usr.sbin/ospf6d/neighbor.c
706
if (nbr->state == NBR_STA_FULL) {
usr.sbin/ospf6d/neighbor.c
707
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/ospf6d/ospf6d.h
295
LIST_HEAD(, nbr) nbr_list;
usr.sbin/ospf6d/ospf6d.h
307
struct nbr *dr; /* designated router */
usr.sbin/ospf6d/ospf6d.h
308
struct nbr *bdr; /* backup designated router */
usr.sbin/ospf6d/ospf6d.h
309
struct nbr *self;
usr.sbin/ospf6d/ospfe.c
1008
LIST_FOREACH(nbr, &iface->nbr_list, entry)
usr.sbin/ospf6d/ospfe.c
1009
if (nbr->state & NBR_STA_FULL) {
usr.sbin/ospf6d/ospfe.c
1010
if (ibuf_add(buf, &nbr->id, sizeof(nbr->id)))
usr.sbin/ospf6d/ospfe.c
1012
lsa_net.opts |= nbr->link_options;
usr.sbin/ospf6d/ospfe.c
1187
struct nbr *nbr;
usr.sbin/ospf6d/ospfe.c
1192
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/ospfe.c
1193
if (iface->self != nbr) {
usr.sbin/ospf6d/ospfe.c
1194
nctl = nbr_to_ctl(nbr);
usr.sbin/ospf6d/ospfe.c
445
struct nbr *nbr;
usr.sbin/ospf6d/ospfe.c
479
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
480
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
486
ls_req_list_add(nbr, lhp);
usr.sbin/ospf6d/ospfe.c
489
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
490
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
493
nbr->dd_pending--;
usr.sbin/ospf6d/ospfe.c
494
if (nbr->dd_pending == 0 && nbr->state & NBR_STA_LOAD) {
usr.sbin/ospf6d/ospfe.c
495
if (ls_req_list_empty(nbr))
usr.sbin/ospf6d/ospfe.c
496
nbr_fsm(nbr, NBR_EVT_LOAD_DONE);
usr.sbin/ospf6d/ospfe.c
498
start_ls_req_tx_timer(nbr);
usr.sbin/ospf6d/ospfe.c
502
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
503
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
505
if (nbr->state != NBR_STA_SNAP) /* discard */
usr.sbin/ospf6d/ospfe.c
511
db_sum_list_add(nbr, lhp);
usr.sbin/ospf6d/ospfe.c
514
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
515
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
518
nbr->dd_snapshot = 0;
usr.sbin/ospf6d/ospfe.c
519
if (nbr->state != NBR_STA_SNAP)
usr.sbin/ospf6d/ospfe.c
523
nbr_fsm(nbr, NBR_EVT_SNAP_DONE);
usr.sbin/ospf6d/ospfe.c
526
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
527
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
548
noack += lsa_flood(iface, nbr,
usr.sbin/ospf6d/ospfe.c
562
nbr->link_options = lsa_link.opts &
usr.sbin/ospf6d/ospfe.c
568
noack += lsa_flood(nbr->iface, nbr,
usr.sbin/ospf6d/ospfe.c
576
&nbr->iface->area->iface_list, entry) {
usr.sbin/ospf6d/ospfe.c
577
noack += lsa_flood(iface, nbr,
usr.sbin/ospf6d/ospfe.c
584
le = ls_req_list_get(nbr, &lsa_hdr);
usr.sbin/ospf6d/ospfe.c
585
if (!(nbr->state & NBR_STA_FULL) && le != NULL) {
usr.sbin/ospf6d/ospfe.c
586
ls_req_list_free(nbr, le);
usr.sbin/ospf6d/ospfe.c
595
if (!noack && nbr->iface != NULL &&
usr.sbin/ospf6d/ospfe.c
596
nbr->iface->self != nbr) {
usr.sbin/ospf6d/ospfe.c
597
if (!(nbr->iface->state & IF_STA_BACKUP) ||
usr.sbin/ospf6d/ospfe.c
598
nbr->iface->dr == nbr) {
usr.sbin/ospf6d/ospfe.c
602
ls_ack_list_add(nbr->iface, lhp);
usr.sbin/ospf6d/ospfe.c
606
lsa_cache_put(ref, nbr);
usr.sbin/ospf6d/ospfe.c
623
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
624
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
627
if (nbr->iface->self == nbr)
usr.sbin/ospf6d/ospfe.c
631
nbr->state != NBR_STA_SNAP)
usr.sbin/ospf6d/ospfe.c
638
ls_retrans_list_add(nbr, imsg.data, 0, 0);
usr.sbin/ospf6d/ospfe.c
640
ls_retrans_list_add(nbr, imsg.data, 0, 1);
usr.sbin/ospf6d/ospfe.c
642
lsa_cache_put(ref, nbr);
usr.sbin/ospf6d/ospfe.c
652
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
653
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
656
if (nbr->iface->self == nbr)
usr.sbin/ospf6d/ospfe.c
664
if (nbr->iface->state & IF_STA_DROTHER)
usr.sbin/ospf6d/ospfe.c
665
if (ls_retrans_list_del(nbr->iface->self,
usr.sbin/ospf6d/ospfe.c
668
if (ls_retrans_list_del(nbr, &lsa_hdr) == 0)
usr.sbin/ospf6d/ospfe.c
672
send_direct_ack(nbr->iface, nbr->addr, imsg.data,
usr.sbin/ospf6d/ospfe.c
677
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospf6d/ospfe.c
678
if (nbr == NULL)
usr.sbin/ospf6d/ospfe.c
681
if (nbr->iface->self == nbr)
usr.sbin/ospf6d/ospfe.c
685
nbr_fsm(nbr, NBR_EVT_BAD_LS_REQ);
usr.sbin/ospf6d/ospfe.c
783
struct nbr *nbr, *self = NULL;
usr.sbin/ospf6d/ospfe.c
810
LIST_FOREACH(nbr, &iface->nbr_list, entry)
usr.sbin/ospf6d/ospfe.c
811
if (nbr != iface->self &&
usr.sbin/ospf6d/ospfe.c
812
nbr->state & NBR_STA_FULL)
usr.sbin/ospf6d/ospfe.c
814
if (nbr && iface->state & IF_STA_POINTTOPOINT) {
usr.sbin/ospf6d/ospfe.c
824
rtr_link.nbr_iface_id = htonl(nbr->iface_id);
usr.sbin/ospf6d/ospfe.c
825
rtr_link.nbr_rtr_id = nbr->id.s_addr;
usr.sbin/ospf6d/ospfe.c
834
LIST_FOREACH(nbr, &iface->nbr_list,
usr.sbin/ospf6d/ospfe.c
836
if (nbr != iface->self &&
usr.sbin/ospf6d/ospfe.c
837
nbr->state & NBR_STA_FULL)
usr.sbin/ospf6d/ospfe.c
840
nbr = iface->dr;
usr.sbin/ospf6d/ospfe.c
842
if (nbr && nbr->state & NBR_STA_FULL) {
usr.sbin/ospf6d/ospfe.c
866
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/ospfe.c
867
if (nbr != iface->self &&
usr.sbin/ospf6d/ospfe.c
868
nbr->state & NBR_STA_FULL)
usr.sbin/ospf6d/ospfe.c
871
if (nbr) {
usr.sbin/ospf6d/ospfe.c
872
rtr_link.id = nbr->id.s_addr;
usr.sbin/ospf6d/ospfe.c
899
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospf6d/ospfe.c
900
if (nbr != iface->self &&
usr.sbin/ospf6d/ospfe.c
901
nbr->state & NBR_STA_FULL) {
usr.sbin/ospf6d/ospfe.c
992
struct nbr *nbr;
usr.sbin/ospf6d/ospfe.h
100
void recv_db_description(struct nbr *, char *, u_int16_t);
usr.sbin/ospf6d/ospfe.h
101
void db_sum_list_add(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
102
void db_sum_list_clr(struct nbr *);
usr.sbin/ospf6d/ospfe.h
104
void start_db_tx_timer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
105
void stop_db_tx_timer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
151
void recv_ls_ack(struct nbr *, char *, u_int16_t);
usr.sbin/ospf6d/ospfe.h
152
int lsa_hdr_check(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
162
int send_ls_req(struct nbr *);
usr.sbin/ospf6d/ospfe.h
163
void recv_ls_req(struct nbr *, char *, u_int16_t);
usr.sbin/ospf6d/ospfe.h
164
void ls_req_list_add(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
165
struct lsa_entry *ls_req_list_get(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
166
void ls_req_list_free(struct nbr *, struct lsa_entry *);
usr.sbin/ospf6d/ospfe.h
167
void ls_req_list_clr(struct nbr *);
usr.sbin/ospf6d/ospfe.h
168
int ls_req_list_empty(struct nbr *);
usr.sbin/ospf6d/ospfe.h
170
void start_ls_req_tx_timer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
171
void stop_ls_req_tx_timer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
174
int lsa_flood(struct iface *, struct nbr *, struct lsa_hdr *,
usr.sbin/ospf6d/ospfe.h
176
void recv_ls_update(struct nbr *, char *, u_int16_t);
usr.sbin/ospf6d/ospfe.h
178
void ls_retrans_list_add(struct nbr *, struct lsa_hdr *,
usr.sbin/ospf6d/ospfe.h
180
int ls_retrans_list_del(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
181
struct lsa_entry *ls_retrans_list_get(struct nbr *, struct lsa_hdr *);
usr.sbin/ospf6d/ospfe.h
182
void ls_retrans_list_free(struct nbr *, struct lsa_entry *);
usr.sbin/ospf6d/ospfe.h
183
void ls_retrans_list_clr(struct nbr *);
usr.sbin/ospf6d/ospfe.h
189
void lsa_cache_put(struct lsa_ref *, struct nbr *);
usr.sbin/ospf6d/ospfe.h
193
struct nbr *nbr_new(u_int32_t, struct iface *, u_int32_t, int,
usr.sbin/ospf6d/ospfe.h
195
void nbr_del(struct nbr *);
usr.sbin/ospf6d/ospfe.h
197
struct nbr *nbr_find_id(struct iface *, u_int32_t);
usr.sbin/ospf6d/ospfe.h
198
struct nbr *nbr_find_peerid(u_int32_t);
usr.sbin/ospf6d/ospfe.h
200
int nbr_fsm(struct nbr *, enum nbr_event);
usr.sbin/ospf6d/ospfe.h
203
void nbr_start_itimer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
204
void nbr_stop_itimer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
205
void nbr_reset_itimer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
208
void nbr_start_adj_timer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
210
int nbr_act_reset_itimer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
211
int nbr_act_start_itimer(struct nbr *);
usr.sbin/ospf6d/ospfe.h
212
int nbr_act_eval(struct nbr *);
usr.sbin/ospf6d/ospfe.h
213
int nbr_act_snapshot(struct nbr *);
usr.sbin/ospf6d/ospfe.h
214
int nbr_act_exchange_done(struct nbr *);
usr.sbin/ospf6d/ospfe.h
215
int nbr_act_adj_ok(struct nbr *);
usr.sbin/ospf6d/ospfe.h
216
int nbr_act_restart_dd(struct nbr *);
usr.sbin/ospf6d/ospfe.h
217
int nbr_act_delete(struct nbr *);
usr.sbin/ospf6d/ospfe.h
218
int nbr_act_clear_lists(struct nbr *);
usr.sbin/ospf6d/ospfe.h
219
int nbr_act_hello_check(struct nbr *);
usr.sbin/ospf6d/ospfe.h
221
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/ospf6d/ospfe.h
55
LIST_ENTRY(nbr) entry, hash;
usr.sbin/ospf6d/ospfe.h
99
int send_db_description(struct nbr *);
usr.sbin/ospf6d/packet.c
129
struct nbr *nbr = NULL;
usr.sbin/ospf6d/packet.c
213
nbr = nbr_find_id(iface, ospf_hdr->rtr_id);
usr.sbin/ospf6d/packet.c
214
if (ospf_hdr->type != PACKET_TYPE_HELLO && nbr == NULL) {
usr.sbin/ospf6d/packet.c
235
recv_db_description(nbr, buf, len);
usr.sbin/ospf6d/packet.c
238
recv_ls_req(nbr, buf, len);
usr.sbin/ospf6d/packet.c
241
recv_ls_update(nbr, buf, len);
usr.sbin/ospf6d/packet.c
244
recv_ls_ack(nbr, buf, len);
usr.sbin/ospf6d/rde.c
1014
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1018
LIST_FOREACH(nbr, head, hash) {
usr.sbin/ospf6d/rde.c
1019
if (nbr->peerid == peerid)
usr.sbin/ospf6d/rde.c
1020
return (nbr);
usr.sbin/ospf6d/rde.c
1030
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1042
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospf6d/rde.c
1045
memcpy(nbr, new, sizeof(*nbr));
usr.sbin/ospf6d/rde.c
1046
nbr->peerid = peerid;
usr.sbin/ospf6d/rde.c
1047
nbr->area = area;
usr.sbin/ospf6d/rde.c
1048
nbr->iface = iface;
usr.sbin/ospf6d/rde.c
1050
TAILQ_INIT(&nbr->req_list);
usr.sbin/ospf6d/rde.c
1053
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospf6d/rde.c
1054
LIST_INSERT_HEAD(&area->nbr_list, nbr, entry);
usr.sbin/ospf6d/rde.c
1056
return (nbr);
usr.sbin/ospf6d/rde.c
1060
rde_nbr_del(struct rde_nbr *nbr)
usr.sbin/ospf6d/rde.c
1062
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
1065
rde_req_list_free(nbr);
usr.sbin/ospf6d/rde.c
1067
LIST_REMOVE(nbr, entry);
usr.sbin/ospf6d/rde.c
1068
LIST_REMOVE(nbr, hash);
usr.sbin/ospf6d/rde.c
1070
free(nbr);
usr.sbin/ospf6d/rde.c
1076
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1085
LIST_FOREACH(nbr, &area->nbr_list, entry) {
usr.sbin/ospf6d/rde.c
1086
if (nbr->self)
usr.sbin/ospf6d/rde.c
1088
if (nbr->state & NBR_STA_XCHNG ||
usr.sbin/ospf6d/rde.c
1089
nbr->state & NBR_STA_LOAD)
usr.sbin/ospf6d/rde.c
1103
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1105
LIST_FOREACH(nbr, &area->nbr_list, entry)
usr.sbin/ospf6d/rde.c
1106
if (nbr->self)
usr.sbin/ospf6d/rde.c
1107
return (nbr);
usr.sbin/ospf6d/rde.c
1118
rde_req_list_add(struct rde_nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospf6d/rde.c
1125
TAILQ_INSERT_TAIL(&nbr->req_list, le, entry);
usr.sbin/ospf6d/rde.c
1132
rde_req_list_exists(struct rde_nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/rde.c
1136
TAILQ_FOREACH(le, &nbr->req_list, entry) {
usr.sbin/ospf6d/rde.c
1146
rde_req_list_del(struct rde_nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospf6d/rde.c
1150
TAILQ_FOREACH(le, &nbr->req_list, entry) {
usr.sbin/ospf6d/rde.c
1154
TAILQ_REMOVE(&nbr->req_list, le, entry);
usr.sbin/ospf6d/rde.c
1162
rde_req_list_free(struct rde_nbr *nbr)
usr.sbin/ospf6d/rde.c
1166
while ((le = TAILQ_FIRST(&nbr->req_list)) != NULL) {
usr.sbin/ospf6d/rde.c
1167
TAILQ_REMOVE(&nbr->req_list, le, entry);
usr.sbin/ospf6d/rde.c
1402
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1416
LIST_FOREACH(nbr, &area->nbr_list, entry) {
usr.sbin/ospf6d/rde.c
1417
if (nbr->self ||
usr.sbin/ospf6d/rde.c
1418
nbr->iface->ifindex != iface->ifindex ||
usr.sbin/ospf6d/rde.c
1419
(nbr->state & NBR_STA_FULL) == 0)
usr.sbin/ospf6d/rde.c
1423
htonl(nbr->iface_id), nbr->id.s_addr);
usr.sbin/ospf6d/rde.c
1489
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
1530
LIST_FOREACH(nbr, &area->nbr_list, entry)
usr.sbin/ospf6d/rde.c
1531
if (!nbr->self &&
usr.sbin/ospf6d/rde.c
1532
nbr->iface->ifindex == iface->ifindex &&
usr.sbin/ospf6d/rde.c
1533
nbr->state & NBR_STA_FULL)
usr.sbin/ospf6d/rde.c
1535
if (nbr)
usr.sbin/ospf6d/rde.c
269
struct rde_nbr rn, *nbr;
usr.sbin/ospf6d/rde.c
322
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
323
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
326
if (state != nbr->state &&
usr.sbin/ospf6d/rde.c
327
(nbr->state & NBR_STA_FULL ||
usr.sbin/ospf6d/rde.c
329
nbr->state = state;
usr.sbin/ospf6d/rde.c
330
area_track(nbr->area);
usr.sbin/ospf6d/rde.c
331
orig_intra_area_prefix_lsas(nbr->area);
usr.sbin/ospf6d/rde.c
334
nbr->state = state;
usr.sbin/ospf6d/rde.c
335
if (nbr->state & NBR_STA_FULL)
usr.sbin/ospf6d/rde.c
336
rde_req_list_free(nbr);
usr.sbin/ospf6d/rde.c
352
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
353
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
356
lsa_snap(nbr);
usr.sbin/ospf6d/rde.c
362
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
363
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
372
v = lsa_find(nbr->iface, lsa_hdr.type,
usr.sbin/ospf6d/rde.c
384
rde_req_list_add(nbr, &lsa_hdr);
usr.sbin/ospf6d/rde.c
399
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
400
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
409
if ((v = lsa_find(nbr->iface,
usr.sbin/ospf6d/rde.c
427
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
428
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
436
if (!lsa_check(nbr, lsa,
usr.sbin/ospf6d/rde.c
442
v = lsa_find(nbr->iface, lsa->hdr.type, lsa->hdr.ls_id,
usr.sbin/ospf6d/rde.c
449
if (nbr->self) {
usr.sbin/ospf6d/rde.c
450
lsa_merge(nbr, lsa, v);
usr.sbin/ospf6d/rde.c
464
rde_req_list_del(nbr, &lsa->hdr);
usr.sbin/ospf6d/rde.c
466
if (!(self = lsa_self(nbr, lsa, v)))
usr.sbin/ospf6d/rde.c
467
if (lsa_add(nbr, lsa))
usr.sbin/ospf6d/rde.c
493
if (rde_req_list_exists(nbr, &lsa->hdr)) {
usr.sbin/ospf6d/rde.c
526
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
527
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
535
if (rde_nbr_loading(nbr->area))
usr.sbin/ospf6d/rde.c
538
v = lsa_find(nbr->iface, lsa_hdr.type, lsa_hdr.ls_id,
usr.sbin/ospf6d/rde.c
549
lsa_del(nbr, &lsa_hdr);
usr.sbin/ospf6d/rde.c
612
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospf6d/rde.c
613
if (nbr == NULL)
usr.sbin/ospf6d/rde.c
615
memcpy(&nbr->iface->state, imsg.data, sizeof(int));
usr.sbin/ospf6d/rde.c
618
orig_intra_area_prefix_lsas(nbr->area);
usr.sbin/ospf6d/rde.c
942
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde.c
954
LIST_FOREACH(nbr, &area->nbr_list, entry)
usr.sbin/ospf6d/rde.c
955
if (nbr->state == NBR_STA_FULL && !nbr->self)
usr.sbin/ospf6d/rde_lsdb.c
186
lsa_check(struct rde_nbr *nbr, struct lsa *lsa, u_int16_t len)
usr.sbin/ospf6d/rde_lsdb.c
205
if ((ntohs(lsa->hdr.age) < 1 && !nbr->self) ||
usr.sbin/ospf6d/rde_lsdb.c
276
if (nbr->area->stub)
usr.sbin/ospf6d/rde_lsdb.c
287
if (lsa->hdr.age == htons(MAX_AGE) && !nbr->self && lsa_find(nbr->iface,
usr.sbin/ospf6d/rde_lsdb.c
289
!rde_nbr_loading(nbr->area)) {
usr.sbin/ospf6d/rde_lsdb.c
294
rde_imsg_compose_ospfe(IMSG_LS_ACK, nbr->peerid, 0, &lsa->hdr,
usr.sbin/ospf6d/rde_lsdb.c
424
lsa_self(struct rde_nbr *nbr, struct lsa *lsa, struct vertex *v)
usr.sbin/ospf6d/rde_lsdb.c
428
if (nbr->self)
usr.sbin/ospf6d/rde_lsdb.c
449
(void)lsa_add(rde_nbr_self(nbr->area), dummy);
usr.sbin/ospf6d/rde_lsdb.c
465
lsa_add(struct rde_nbr *nbr, struct lsa *lsa)
usr.sbin/ospf6d/rde_lsdb.c
475
tree = &nbr->area->lsa_tree;
usr.sbin/ospf6d/rde_lsdb.c
477
tree = &nbr->iface->lsa_tree;
usr.sbin/ospf6d/rde_lsdb.c
481
new = vertex_get(lsa, nbr, tree);
usr.sbin/ospf6d/rde_lsdb.c
507
orig_intra_area_prefix_lsas(nbr->area);
usr.sbin/ospf6d/rde_lsdb.c
509
nbr->area->dirty = 1;
usr.sbin/ospf6d/rde_lsdb.c
516
if (nbr->self && ntohs(new->lsa->hdr.age) == DEFAULT_AGE)
usr.sbin/ospf6d/rde_lsdb.c
527
lsa_del(struct rde_nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospf6d/rde_lsdb.c
532
v = lsa_find(nbr->iface, lsa->type, lsa->ls_id, lsa->adv_rtr);
usr.sbin/ospf6d/rde_lsdb.c
68
vertex_get(struct lsa *lsa, struct rde_nbr *nbr, struct lsa_tree *tree)
usr.sbin/ospf6d/rde_lsdb.c
724
lsa_snap(struct rde_nbr *nbr)
usr.sbin/ospf6d/rde_lsdb.c
726
struct lsa_tree *tree = &nbr->area->lsa_tree;
usr.sbin/ospf6d/rde_lsdb.c
736
nbr->peerid, 0, &v->lsa->hdr,
usr.sbin/ospf6d/rde_lsdb.c
740
nbr->peerid, 0, &v->lsa->hdr,
usr.sbin/ospf6d/rde_lsdb.c
746
if (tree == &nbr->area->lsa_tree)
usr.sbin/ospf6d/rde_lsdb.c
747
tree = &nbr->iface->lsa_tree;
usr.sbin/ospf6d/rde_lsdb.c
76
v->area = nbr->area;
usr.sbin/ospf6d/rde_lsdb.c
77
v->peerid = nbr->peerid;
usr.sbin/ospf6d/rde_lsdb.c
87
if (!nbr->self)
usr.sbin/ospf6d/rde_lsdb.c
885
lsa_merge(struct rde_nbr *nbr, struct lsa *lsa, struct vertex *v)
usr.sbin/ospf6d/rde_lsdb.c
89
v->self = nbr->self;
usr.sbin/ospf6d/rde_lsdb.c
893
if (lsa_add(nbr, lsa))
usr.sbin/ospf6d/rde_lsdb.c
896
rde_imsg_compose_ospfe(IMSG_LS_FLOOD, nbr->peerid, 0,
usr.sbin/ospf6d/rde_lsdb.c
918
orig_intra_area_prefix_lsas(nbr->area);
usr.sbin/ospf6d/rde_lsdb.c
920
nbr->area->dirty = 1;
usr.sbin/ospf6d/rde_spf.c
465
struct rde_nbr *nbr;
usr.sbin/ospf6d/rde_spf.c
488
if ((nbr = rde_nbr_find(dst->peerid)) == NULL)
usr.sbin/ospf6d/rde_spf.c
490
return &nbr->addr;
usr.sbin/ospfctl/ospfctl.c
256
struct ctl_nbr *nbr;
usr.sbin/ospfctl/ospfctl.c
285
nbr = imsg->data;
usr.sbin/ospfctl/ospfctl.c
287
output->neighbor(nbr, 1);
usr.sbin/ospfctl/ospfctl.c
289
output->neighbor(nbr, 0);
usr.sbin/ospfctl/output.c
241
show_neighbor(struct ctl_nbr *nbr, int detail)
usr.sbin/ospfctl/output.c
245
if (asprintf(&state, "%s/%s", nbr_state_name(nbr->nbr_state),
usr.sbin/ospfctl/output.c
246
if_state_name(nbr->iface_state)) == -1)
usr.sbin/ospfctl/output.c
250
printf("\nNeighbor %s, ", inet_ntoa(nbr->id));
usr.sbin/ospfctl/output.c
251
printf("interface address %s\n", inet_ntoa(nbr->addr));
usr.sbin/ospfctl/output.c
252
printf(" Area %s, interface %s\n", inet_ntoa(nbr->area),
usr.sbin/ospfctl/output.c
253
nbr->name);
usr.sbin/ospfctl/output.c
256
nbr->priority, nbr_state_name(nbr->nbr_state),
usr.sbin/ospfctl/output.c
257
nbr->state_chng_cnt);
usr.sbin/ospfctl/output.c
258
printf(" DR is %s, ", inet_ntoa(nbr->dr));
usr.sbin/ospfctl/output.c
259
printf("BDR is %s\n", inet_ntoa(nbr->bdr));
usr.sbin/ospfctl/output.c
260
printf(" Options %s\n", print_ospf_options(nbr->options));
usr.sbin/ospfctl/output.c
262
fmt_timeframe_core(nbr->dead_timer));
usr.sbin/ospfctl/output.c
263
printf(" Uptime %s\n", fmt_timeframe_core(nbr->uptime));
usr.sbin/ospfctl/output.c
264
printf(" Database Summary List %d\n", nbr->db_sum_lst_cnt);
usr.sbin/ospfctl/output.c
265
printf(" Link State Request List %d\n", nbr->ls_req_lst_cnt);
usr.sbin/ospfctl/output.c
267
nbr->ls_retrans_lst_cnt);
usr.sbin/ospfctl/output.c
269
printf("%-15s %-3d %-12s %-9s", inet_ntoa(nbr->id),
usr.sbin/ospfctl/output.c
270
nbr->priority, state, fmt_timeframe_core(nbr->dead_timer));
usr.sbin/ospfctl/output.c
271
printf("%-15s %-9s %s\n", inet_ntoa(nbr->addr), nbr->name,
usr.sbin/ospfctl/output.c
272
nbr->uptime == 0 ? "-" : fmt_timeframe_core(nbr->uptime));
usr.sbin/ospfd/auth.c
126
if (nbr != NULL)
usr.sbin/ospfd/auth.c
127
nbr->crypt_seq_num =
usr.sbin/ospfd/auth.c
34
auth_validate(void *buf, u_int16_t len, struct iface *iface, struct nbr *nbr)
usr.sbin/ospfd/auth.c
84
if (nbr != NULL && ntohl(ospf_hdr->auth_key.crypt.seq_num) <
usr.sbin/ospfd/auth.c
85
nbr->crypt_seq_num) {
usr.sbin/ospfd/database.c
100
if (nbr->dd_master)
usr.sbin/ospfd/database.c
107
nbr->dd_more = 0;
usr.sbin/ospfd/database.c
117
switch (nbr->iface->type) {
usr.sbin/ospfd/database.c
120
dd_hdr.iface_mtu = htons(nbr->iface->mtu);
usr.sbin/ospfd/database.c
123
dst.sin_addr = nbr->addr;
usr.sbin/ospfd/database.c
124
dd_hdr.iface_mtu = htons(nbr->iface->mtu);
usr.sbin/ospfd/database.c
131
dst.sin_addr = nbr->iface->dst;
usr.sbin/ospfd/database.c
139
dd_hdr.opts = area_ospf_options(nbr->iface->area) | OSPF_OPTION_O;
usr.sbin/ospfd/database.c
141
dd_hdr.dd_seq_num = htonl(nbr->dd_seq_num);
usr.sbin/ospfd/database.c
148
if (auth_gen(buf, nbr->iface))
usr.sbin/ospfd/database.c
152
if (send_packet(nbr->iface, buf, &dst) == -1)
usr.sbin/ospfd/database.c
164
recv_db_description(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospfd/database.c
171
"bad packet size", inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/database.c
179
if (ntohs(dd_hdr.iface_mtu) > nbr->iface->mtu) {
usr.sbin/ospfd/database.c
181
"invalid MTU %d expected %d", inet_ntoa(nbr->id),
usr.sbin/ospfd/database.c
182
nbr->iface->name, ntohs(dd_hdr.iface_mtu),
usr.sbin/ospfd/database.c
183
nbr->iface->mtu);
usr.sbin/ospfd/database.c
187
if (nbr->last_rx_options == dd_hdr.opts &&
usr.sbin/ospfd/database.c
188
nbr->last_rx_bits == dd_hdr.bits &&
usr.sbin/ospfd/database.c
189
ntohl(dd_hdr.dd_seq_num) == nbr->dd_seq_num - nbr->dd_master ?
usr.sbin/ospfd/database.c
192
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/database.c
193
nbr->iface->name);
usr.sbin/ospfd/database.c
197
switch (nbr->state) {
usr.sbin/ospfd/database.c
203
"packet ignored in state %s", inet_ntoa(nbr->id),
usr.sbin/ospfd/database.c
204
nbr->iface->name, nbr_state_name(nbr->state));
usr.sbin/ospfd/database.c
208
nbr_fsm(nbr, NBR_EVT_2_WAY_RCVD);
usr.sbin/ospfd/database.c
209
if_fsm(nbr->iface, IF_EVT_NBR_CHNG);
usr.sbin/ospfd/database.c
210
if (nbr->state != NBR_STA_XSTRT)
usr.sbin/ospfd/database.c
216
nbr->capa_options = dd_hdr.opts;
usr.sbin/ospfd/database.c
217
if ((nbr->capa_options & nbr->options) != nbr->options) {
usr.sbin/ospfd/database.c
220
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
221
nbr->capa_options, nbr->options);
usr.sbin/ospfd/database.c
228
if ((ntohl(nbr->id.s_addr)) >
usr.sbin/ospfd/database.c
231
nbr->dd_master = 0;
usr.sbin/ospfd/database.c
232
nbr->dd_seq_num = ntohl(dd_hdr.dd_seq_num);
usr.sbin/ospfd/database.c
235
nbr_fsm(nbr, NBR_EVT_NEG_DONE);
usr.sbin/ospfd/database.c
239
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) {
usr.sbin/ospfd/database.c
243
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
244
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospfd/database.c
247
nbr->dd_seq_num++;
usr.sbin/ospfd/database.c
250
nbr_fsm(nbr, NBR_EVT_NEG_DONE);
usr.sbin/ospfd/database.c
254
nbr->dd_pending++;
usr.sbin/ospfd/database.c
255
ospfe_imsg_compose_rde(IMSG_DD, nbr->peerid,
usr.sbin/ospfd/database.c
262
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
263
nbr_state_name(nbr->state));
usr.sbin/ospfd/database.c
270
!(dd_hdr.bits & OSPF_DBD_MS) == !nbr->dd_master) {
usr.sbin/ospfd/database.c
272
"seq num mismatch, bad flags", inet_ntoa(nbr->id),
usr.sbin/ospfd/database.c
273
nbr->iface->name);
usr.sbin/ospfd/database.c
274
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/database.c
278
if (nbr->last_rx_options != dd_hdr.opts) {
usr.sbin/ospfd/database.c
281
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/database.c
282
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/database.c
287
if (!nbr->dd_master)
usr.sbin/ospfd/database.c
289
start_db_tx_timer(nbr);
usr.sbin/ospfd/database.c
293
if (nbr->state != NBR_STA_XCHNG) {
usr.sbin/ospfd/database.c
296
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
297
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospfd/database.c
298
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/database.c
303
if (nbr->dd_master) {
usr.sbin/ospfd/database.c
305
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) {
usr.sbin/ospfd/database.c
309
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
310
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospfd/database.c
311
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/database.c
314
nbr->dd_seq_num++;
usr.sbin/ospfd/database.c
317
if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num + 1) {
usr.sbin/ospfd/database.c
321
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/database.c
322
nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num));
usr.sbin/ospfd/database.c
323
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/database.c
326
nbr->dd_seq_num = ntohl(dd_hdr.dd_seq_num);
usr.sbin/ospfd/database.c
331
nbr->dd_pending++;
usr.sbin/ospfd/database.c
332
ospfe_imsg_compose_rde(IMSG_DD, nbr->peerid, 0,
usr.sbin/ospfd/database.c
337
db_sum_list_next(nbr);
usr.sbin/ospfd/database.c
338
start_db_tx_timer(nbr);
usr.sbin/ospfd/database.c
341
TAILQ_EMPTY(&nbr->db_sum_list))
usr.sbin/ospfd/database.c
342
if (!nbr->dd_master || !nbr->dd_more)
usr.sbin/ospfd/database.c
343
nbr_fsm(nbr, NBR_EVT_XCHNG_DONE);
usr.sbin/ospfd/database.c
349
nbr->last_rx_options = dd_hdr.opts;
usr.sbin/ospfd/database.c
350
nbr->last_rx_bits = dd_hdr.bits;
usr.sbin/ospfd/database.c
354
db_sum_list_add(struct nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospfd/database.c
36
void db_sum_list_next(struct nbr *);
usr.sbin/ospfd/database.c
361
TAILQ_INSERT_TAIL(&nbr->db_sum_list, le, entry);
usr.sbin/ospfd/database.c
366
db_sum_list_next(struct nbr *nbr)
usr.sbin/ospfd/database.c
370
while ((le = TAILQ_FIRST(&nbr->db_sum_list)) != nbr->dd_end) {
usr.sbin/ospfd/database.c
371
TAILQ_REMOVE(&nbr->db_sum_list, le, entry);
usr.sbin/ospfd/database.c
378
db_sum_list_clr(struct nbr *nbr)
usr.sbin/ospfd/database.c
380
nbr->dd_end = NULL;
usr.sbin/ospfd/database.c
381
db_sum_list_next(nbr);
usr.sbin/ospfd/database.c
388
struct nbr *nbr = arg;
usr.sbin/ospfd/database.c
391
switch (nbr->state) {
usr.sbin/ospfd/database.c
40
send_db_description(struct nbr *nbr)
usr.sbin/ospfd/database.c
402
send_db_description(nbr);
usr.sbin/ospfd/database.c
407
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/database.c
412
if (nbr->dd_master) {
usr.sbin/ospfd/database.c
414
tv.tv_sec = nbr->iface->rxmt_interval;
usr.sbin/ospfd/database.c
415
if (evtimer_add(&nbr->db_tx_timer, &tv) == -1)
usr.sbin/ospfd/database.c
421
start_db_tx_timer(struct nbr *nbr)
usr.sbin/ospfd/database.c
425
if (nbr == nbr->iface->self)
usr.sbin/ospfd/database.c
429
if (evtimer_add(&nbr->db_tx_timer, &tv) == -1)
usr.sbin/ospfd/database.c
434
stop_db_tx_timer(struct nbr *nbr)
usr.sbin/ospfd/database.c
436
if (nbr == nbr->iface->self)
usr.sbin/ospfd/database.c
439
if (evtimer_del(&nbr->db_tx_timer) == -1)
usr.sbin/ospfd/database.c
48
if ((buf = ibuf_open(nbr->iface->mtu - sizeof(struct ip))) == NULL)
usr.sbin/ospfd/database.c
52
if (gen_ospf_hdr(buf, nbr->iface, PACKET_TYPE_DD))
usr.sbin/ospfd/database.c
59
switch (nbr->state) {
usr.sbin/ospfd/database.c
66
"cannot send packet in state %s", inet_ntoa(nbr->id),
usr.sbin/ospfd/database.c
67
nbr->iface->name, nbr_state_name(nbr->state));
usr.sbin/ospfd/database.c
71
nbr->dd_more = 1;
usr.sbin/ospfd/database.c
74
if (nbr->dd_master)
usr.sbin/ospfd/database.c
79
if (TAILQ_EMPTY(&nbr->db_sum_list)) {
usr.sbin/ospfd/database.c
81
nbr->dd_more = 0;
usr.sbin/ospfd/database.c
84
nbr->dd_more = 1;
usr.sbin/ospfd/database.c
90
for (le = TAILQ_FIRST(&nbr->db_sum_list); le != NULL &&
usr.sbin/ospfd/database.c
93
nbr->dd_end = nle = TAILQ_NEXT(le, entry);
usr.sbin/ospfd/hello.c
121
struct nbr *nbr = NULL, *dr;
usr.sbin/ospfd/hello.c
172
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/hello.c
173
if (nbr == iface->self) {
usr.sbin/ospfd/hello.c
174
if (nbr->id.s_addr == rtr_id) {
usr.sbin/ospfd/hello.c
182
if (nbr->id.s_addr == rtr_id)
usr.sbin/ospfd/hello.c
186
if (!nbr) {
usr.sbin/ospfd/hello.c
187
nbr = nbr_new(rtr_id, iface, 0);
usr.sbin/ospfd/hello.c
189
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospfd/hello.c
190
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospfd/hello.c
191
nbr->priority = hello.rtr_priority;
usr.sbin/ospfd/hello.c
193
nbr->addr.s_addr = src.s_addr;
usr.sbin/ospfd/hello.c
194
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_ADDR, nbr->peerid, 0,
usr.sbin/ospfd/hello.c
198
if (nbr->addr.s_addr != src.s_addr) {
usr.sbin/ospfd/hello.c
200
__func__, inet_ntoa(nbr->id));
usr.sbin/ospfd/hello.c
201
nbr->addr.s_addr = src.s_addr;
usr.sbin/ospfd/hello.c
202
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_ADDR, nbr->peerid, 0,
usr.sbin/ospfd/hello.c
206
nbr->options = hello.opts;
usr.sbin/ospfd/hello.c
208
nbr_fsm(nbr, NBR_EVT_HELLO_RCVD);
usr.sbin/ospfd/hello.c
214
if (nbr->state & NBR_STA_PRELIM) {
usr.sbin/ospfd/hello.c
215
nbr_fsm(nbr, NBR_EVT_2_WAY_RCVD);
usr.sbin/ospfd/hello.c
225
nbr_fsm(nbr, NBR_EVT_1_WAY_RCVD);
usr.sbin/ospfd/hello.c
227
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospfd/hello.c
228
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospfd/hello.c
229
nbr->priority = hello.rtr_priority;
usr.sbin/ospfd/hello.c
233
if (nbr->priority != hello.rtr_priority) {
usr.sbin/ospfd/hello.c
234
nbr->priority = hello.rtr_priority;
usr.sbin/ospfd/hello.c
239
hello.d_rtr == nbr->addr.s_addr && hello.bd_rtr == 0)
usr.sbin/ospfd/hello.c
242
if (iface->state & IF_STA_WAITING && hello.bd_rtr == nbr->addr.s_addr) {
usr.sbin/ospfd/hello.c
253
if ((nbr->addr.s_addr == nbr->dr.s_addr &&
usr.sbin/ospfd/hello.c
254
nbr->addr.s_addr != hello.d_rtr) ||
usr.sbin/ospfd/hello.c
255
(nbr->addr.s_addr != nbr->dr.s_addr &&
usr.sbin/ospfd/hello.c
256
nbr->addr.s_addr == hello.d_rtr))
usr.sbin/ospfd/hello.c
259
if ((nbr->addr.s_addr == nbr->bdr.s_addr &&
usr.sbin/ospfd/hello.c
260
nbr->addr.s_addr != hello.bd_rtr) ||
usr.sbin/ospfd/hello.c
261
(nbr->addr.s_addr != nbr->bdr.s_addr &&
usr.sbin/ospfd/hello.c
262
nbr->addr.s_addr == hello.bd_rtr))
usr.sbin/ospfd/hello.c
266
nbr->dr.s_addr = hello.d_rtr;
usr.sbin/ospfd/hello.c
267
nbr->bdr.s_addr = hello.bd_rtr;
usr.sbin/ospfd/hello.c
42
struct nbr *nbr;
usr.sbin/ospfd/hello.c
95
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/hello.c
96
if ((nbr->state >= NBR_STA_INIT) && (nbr != iface->self))
usr.sbin/ospfd/hello.c
97
if (ibuf_add(buf, &nbr->id, sizeof(nbr->id)))
usr.sbin/ospfd/interface.c
220
struct nbr *nbr = NULL;
usr.sbin/ospfd/interface.c
227
while ((nbr = LIST_FIRST(&iface->nbr_list)) != NULL)
usr.sbin/ospfd/interface.c
228
nbr_del(nbr);
usr.sbin/ospfd/interface.c
388
struct nbr *
usr.sbin/ospfd/interface.c
389
if_elect(struct nbr *a, struct nbr *b)
usr.sbin/ospfd/interface.c
404
struct nbr *nbr, *bdr = NULL, *dr = NULL;
usr.sbin/ospfd/interface.c
412
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/interface.c
413
if (nbr->priority == 0 || nbr == dr || /* not electable */
usr.sbin/ospfd/interface.c
414
nbr->state & NBR_STA_PRELIM || /* not available */
usr.sbin/ospfd/interface.c
415
nbr->dr.s_addr == nbr->addr.s_addr) /* don't elect DR */
usr.sbin/ospfd/interface.c
423
if (nbr->bdr.s_addr == nbr->addr.s_addr) {
usr.sbin/ospfd/interface.c
425
bdr = if_elect(bdr, nbr);
usr.sbin/ospfd/interface.c
427
bdr = nbr;
usr.sbin/ospfd/interface.c
429
bdr = if_elect(bdr, nbr);
usr.sbin/ospfd/interface.c
431
bdr = nbr;
usr.sbin/ospfd/interface.c
435
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/interface.c
436
if (nbr->priority == 0 || nbr->state & NBR_STA_PRELIM ||
usr.sbin/ospfd/interface.c
437
(nbr != dr && nbr->dr.s_addr != nbr->addr.s_addr))
usr.sbin/ospfd/interface.c
441
dr = nbr;
usr.sbin/ospfd/interface.c
443
dr = if_elect(dr, nbr);
usr.sbin/ospfd/interface.c
48
struct nbr *if_elect(struct nbr *, struct nbr *);
usr.sbin/ospfd/interface.c
516
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/interface.c
517
if (nbr->state & NBR_STA_BIDIR)
usr.sbin/ospfd/interface.c
518
nbr_fsm(nbr, NBR_EVT_ADJ_OK);
usr.sbin/ospfd/interface.c
533
struct nbr *nbr = NULL;
usr.sbin/ospfd/interface.c
565
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/interface.c
566
if (nbr_fsm(nbr, NBR_EVT_KILL_NBR)) {
usr.sbin/ospfd/interface.c
568
inet_ntoa(nbr->id));
usr.sbin/ospfd/interface.c
591
struct nbr *nbr;
usr.sbin/ospfd/interface.c
651
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/interface.c
652
if (nbr == iface->self)
usr.sbin/ospfd/interface.c
655
if (nbr->state & NBR_STA_ADJFORM)
usr.sbin/ospfd/lsack.c
102
recv_ls_ack(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospfd/lsack.c
106
switch (nbr->state) {
usr.sbin/ospfd/lsack.c
114
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospfd/lsack.c
115
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsack.c
123
if (lsa_hdr_check(nbr, &lsa_hdr)) {
usr.sbin/ospfd/lsack.c
125
if (nbr->iface->state & IF_STA_DROTHER)
usr.sbin/ospfd/lsack.c
127
nbr->iface->self, &lsa_hdr);
usr.sbin/ospfd/lsack.c
128
(void)ls_retrans_list_del(nbr, &lsa_hdr);
usr.sbin/ospfd/lsack.c
136
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsack.c
137
nbr->iface->name);
usr.sbin/ospfd/lsack.c
147
lsa_hdr_check(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/lsack.c
152
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsack.c
167
lsa_hdr->type, inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsack.c
174
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsack.c
175
nbr->iface->name);
usr.sbin/ospfd/lsack.c
242
struct nbr *nbr;
usr.sbin/ospfd/lsack.c
284
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/lsack.c
285
if (nbr == iface->self)
usr.sbin/ospfd/lsack.c
287
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospfd/lsack.c
289
send_ls_ack(iface, nbr->addr, buf);
usr.sbin/ospfd/lsreq.c
102
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospfd/lsreq.c
103
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsreq.c
108
ospfe_imsg_compose_rde(IMSG_LS_REQ, nbr->peerid, 0, buf, len);
usr.sbin/ospfd/lsreq.c
117
ls_req_list_add(struct nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospfd/lsreq.c
127
TAILQ_INSERT_TAIL(&nbr->ls_req_list, le, entry);
usr.sbin/ospfd/lsreq.c
129
nbr->ls_req_cnt++;
usr.sbin/ospfd/lsreq.c
133
ls_req_list_get(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/lsreq.c
137
TAILQ_FOREACH(le, &nbr->ls_req_list, entry) {
usr.sbin/ospfd/lsreq.c
147
ls_req_list_free(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospfd/lsreq.c
149
if (nbr->ls_req == le) {
usr.sbin/ospfd/lsreq.c
150
nbr->ls_req = TAILQ_NEXT(le, entry);
usr.sbin/ospfd/lsreq.c
153
TAILQ_REMOVE(&nbr->ls_req_list, le, entry);
usr.sbin/ospfd/lsreq.c
156
nbr->ls_req_cnt--;
usr.sbin/ospfd/lsreq.c
159
if (nbr->ls_req != NULL &&
usr.sbin/ospfd/lsreq.c
160
nbr->ls_req == TAILQ_FIRST(&nbr->ls_req_list)) {
usr.sbin/ospfd/lsreq.c
161
start_ls_req_tx_timer(nbr);
usr.sbin/ospfd/lsreq.c
165
if (ls_req_list_empty(nbr) && nbr->dd_pending == 0 &&
usr.sbin/ospfd/lsreq.c
166
nbr->state != NBR_STA_XCHNG)
usr.sbin/ospfd/lsreq.c
167
nbr_fsm(nbr, NBR_EVT_LOAD_DONE);
usr.sbin/ospfd/lsreq.c
171
ls_req_list_clr(struct nbr *nbr)
usr.sbin/ospfd/lsreq.c
175
while ((le = TAILQ_FIRST(&nbr->ls_req_list)) != NULL) {
usr.sbin/ospfd/lsreq.c
176
TAILQ_REMOVE(&nbr->ls_req_list, le, entry);
usr.sbin/ospfd/lsreq.c
181
nbr->ls_req_cnt = 0;
usr.sbin/ospfd/lsreq.c
182
nbr->ls_req = NULL;
usr.sbin/ospfd/lsreq.c
186
ls_req_list_empty(struct nbr *nbr)
usr.sbin/ospfd/lsreq.c
188
return (TAILQ_EMPTY(&nbr->ls_req_list));
usr.sbin/ospfd/lsreq.c
195
struct nbr *nbr = arg;
usr.sbin/ospfd/lsreq.c
198
switch (nbr->state) {
usr.sbin/ospfd/lsreq.c
208
send_ls_req(nbr);
usr.sbin/ospfd/lsreq.c
214
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsreq.c
215
nbr->iface->name);
usr.sbin/ospfd/lsreq.c
220
if (nbr->state == NBR_STA_LOAD) {
usr.sbin/ospfd/lsreq.c
222
tv.tv_sec = nbr->iface->rxmt_interval;
usr.sbin/ospfd/lsreq.c
223
if (evtimer_add(&nbr->lsreq_tx_timer, &tv) == -1)
usr.sbin/ospfd/lsreq.c
229
start_ls_req_tx_timer(struct nbr *nbr)
usr.sbin/ospfd/lsreq.c
233
if (nbr == nbr->iface->self)
usr.sbin/ospfd/lsreq.c
237
if (evtimer_add(&nbr->lsreq_tx_timer, &tv) == -1)
usr.sbin/ospfd/lsreq.c
242
stop_ls_req_tx_timer(struct nbr *nbr)
usr.sbin/ospfd/lsreq.c
244
if (nbr == nbr->iface->self)
usr.sbin/ospfd/lsreq.c
247
if (evtimer_del(&nbr->lsreq_tx_timer) == -1)
usr.sbin/ospfd/lsreq.c
32
send_ls_req(struct nbr *nbr)
usr.sbin/ospfd/lsreq.c
39
if ((buf = ibuf_open(nbr->iface->mtu - sizeof(struct ip))) == NULL)
usr.sbin/ospfd/lsreq.c
46
switch (nbr->iface->type) {
usr.sbin/ospfd/lsreq.c
54
dst.sin_addr.s_addr = nbr->addr.s_addr;
usr.sbin/ospfd/lsreq.c
61
if (gen_ospf_hdr(buf, nbr->iface, PACKET_TYPE_LS_REQUEST))
usr.sbin/ospfd/lsreq.c
65
for (le = TAILQ_FIRST(&nbr->ls_req_list); le != NULL &&
usr.sbin/ospfd/lsreq.c
68
nbr->ls_req = nle = TAILQ_NEXT(le, entry);
usr.sbin/ospfd/lsreq.c
77
if (auth_gen(buf, nbr->iface))
usr.sbin/ospfd/lsreq.c
80
if (send_packet(nbr->iface, buf, &dst) == -1)
usr.sbin/ospfd/lsreq.c
92
recv_ls_req(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospfd/lsreq.c
94
switch (nbr->state) {
usr.sbin/ospfd/lsupdate.c
124
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/lsupdate.c
125
if (nbr == iface->self)
usr.sbin/ospfd/lsupdate.c
127
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospfd/lsupdate.c
129
if (!TAILQ_EMPTY(&nbr->ls_retrans_list)) {
usr.sbin/ospfd/lsupdate.c
130
le = TAILQ_LAST(&nbr->ls_retrans_list,
usr.sbin/ospfd/lsupdate.c
137
ls_retrans_list_add(nbr, data, 0, 1);
usr.sbin/ospfd/lsupdate.c
234
recv_ls_update(struct nbr *nbr, char *buf, u_int16_t len)
usr.sbin/ospfd/lsupdate.c
241
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsupdate.c
242
nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
250
switch (nbr->state) {
usr.sbin/ospfd/lsupdate.c
258
"neighbor ID %s (%s)", nbr_state_name(nbr->state),
usr.sbin/ospfd/lsupdate.c
259
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
267
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsupdate.c
268
nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
274
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsupdate.c
275
nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
278
ospfe_imsg_compose_rde(IMSG_LS_UPD, nbr->peerid, 0,
usr.sbin/ospfd/lsupdate.c
285
"neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/lsupdate.c
286
nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
297
ls_retrans_list_add(struct nbr *nbr, struct lsa_hdr *lsa,
usr.sbin/ospfd/lsupdate.c
314
ls_retrans_list_insert(nbr, le);
usr.sbin/ospfd/lsupdate.c
316
if (!evtimer_pending(&nbr->ls_retrans_timer, NULL)) {
usr.sbin/ospfd/lsupdate.c
318
tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
usr.sbin/ospfd/lsupdate.c
320
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospfd/lsupdate.c
326
ls_retrans_list_del(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/lsupdate.c
330
if ((le = ls_retrans_list_get(nbr, lsa_hdr)) == NULL)
usr.sbin/ospfd/lsupdate.c
341
ls_retrans_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
349
ls_retrans_list_get(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/lsupdate.c
353
TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
usr.sbin/ospfd/lsupdate.c
363
ls_retrans_list_insert(struct nbr *nbr, struct lsa_entry *new)
usr.sbin/ospfd/lsupdate.c
368
TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
usr.sbin/ospfd/lsupdate.c
372
nbr->ls_ret_cnt++;
usr.sbin/ospfd/lsupdate.c
378
TAILQ_INSERT_TAIL(&nbr->ls_retrans_list, new, entry);
usr.sbin/ospfd/lsupdate.c
379
nbr->ls_ret_cnt++;
usr.sbin/ospfd/lsupdate.c
383
ls_retrans_list_remove(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospfd/lsupdate.c
393
if (TAILQ_FIRST(&nbr->ls_retrans_list) == le &&
usr.sbin/ospfd/lsupdate.c
394
evtimer_pending(&nbr->ls_retrans_timer, NULL))
usr.sbin/ospfd/lsupdate.c
397
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospfd/lsupdate.c
398
nbr->ls_ret_cnt--;
usr.sbin/ospfd/lsupdate.c
40
void ls_retrans_list_insert(struct nbr *, struct lsa_entry *);
usr.sbin/ospfd/lsupdate.c
400
if (reset && TAILQ_FIRST(&nbr->ls_retrans_list)) {
usr.sbin/ospfd/lsupdate.c
401
if (evtimer_del(&nbr->ls_retrans_timer) == -1)
usr.sbin/ospfd/lsupdate.c
405
tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
usr.sbin/ospfd/lsupdate.c
407
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospfd/lsupdate.c
41
void ls_retrans_list_remove(struct nbr *, struct lsa_entry *);
usr.sbin/ospfd/lsupdate.c
413
ls_retrans_list_free(struct nbr *nbr, struct lsa_entry *le)
usr.sbin/ospfd/lsupdate.c
415
ls_retrans_list_remove(nbr, le);
usr.sbin/ospfd/lsupdate.c
417
lsa_cache_put(le->le_ref, nbr);
usr.sbin/ospfd/lsupdate.c
422
ls_retrans_list_clr(struct nbr *nbr)
usr.sbin/ospfd/lsupdate.c
426
while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
usr.sbin/ospfd/lsupdate.c
427
ls_retrans_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
429
nbr->ls_ret_cnt = 0;
usr.sbin/ospfd/lsupdate.c
438
struct nbr *nbr = bula;
usr.sbin/ospfd/lsupdate.c
445
if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
usr.sbin/ospfd/lsupdate.c
45
lsa_flood(struct iface *iface, struct nbr *originator, struct lsa_hdr *lsa_hdr,
usr.sbin/ospfd/lsupdate.c
453
if (nbr->iface->self == nbr) {
usr.sbin/ospfd/lsupdate.c
459
if (le->le_oneshot && nbr->iface->state & IF_STA_DRORBDR)
usr.sbin/ospfd/lsupdate.c
461
else if (nbr->iface->state & IF_STA_DRORBDR) {
usr.sbin/ospfd/lsupdate.c
466
lsa_flood(nbr->iface, nbr, &le->le_ref->hdr,
usr.sbin/ospfd/lsupdate.c
468
ls_retrans_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
471
} else if (nbr->iface->type == IF_TYPE_POINTOPOINT)
usr.sbin/ospfd/lsupdate.c
472
memcpy(&addr, &nbr->addr, sizeof(addr));
usr.sbin/ospfd/lsupdate.c
476
memcpy(&addr, &nbr->addr, sizeof(addr));
usr.sbin/ospfd/lsupdate.c
478
if ((buf = prepare_ls_update(nbr->iface)) == NULL) {
usr.sbin/ospfd/lsupdate.c
48
struct nbr *nbr;
usr.sbin/ospfd/lsupdate.c
483
while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL &&
usr.sbin/ospfd/lsupdate.c
491
if (add_ls_update(buf, nbr->iface, le->le_ref->data,
usr.sbin/ospfd/lsupdate.c
497
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/lsupdate.c
498
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospfd/lsupdate.c
499
nbr->ls_ret_cnt--;
usr.sbin/ospfd/lsupdate.c
500
le->le_when = nbr->iface->rxmt_interval;
usr.sbin/ospfd/lsupdate.c
501
ls_retrans_list_insert(nbr, le);
usr.sbin/ospfd/lsupdate.c
507
ls_retrans_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
509
TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
usr.sbin/ospfd/lsupdate.c
510
nbr->ls_ret_cnt--;
usr.sbin/ospfd/lsupdate.c
511
le->le_when = nbr->iface->rxmt_interval;
usr.sbin/ospfd/lsupdate.c
512
ls_retrans_list_insert(nbr, le);
usr.sbin/ospfd/lsupdate.c
516
send_ls_update(buf, nbr->iface, addr, nlsa);
usr.sbin/ospfd/lsupdate.c
521
if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL) {
usr.sbin/ospfd/lsupdate.c
525
if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
usr.sbin/ospfd/lsupdate.c
53
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/lsupdate.c
54
if (nbr == iface->self)
usr.sbin/ospfd/lsupdate.c
56
if (!(nbr->state & NBR_STA_FLOOD))
usr.sbin/ospfd/lsupdate.c
609
lsa_cache_put(struct lsa_ref *ref, struct nbr *nbr)
usr.sbin/ospfd/lsupdate.c
615
ospfe_imsg_compose_rde(IMSG_LS_MAXAGE, nbr->peerid, 0,
usr.sbin/ospfd/lsupdate.c
63
while ((le = ls_retrans_list_get(nbr, lsa_hdr)))
usr.sbin/ospfd/lsupdate.c
64
ls_retrans_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
66
if (!(nbr->state & NBR_STA_FULL) &&
usr.sbin/ospfd/lsupdate.c
67
(le = ls_req_list_get(nbr, lsa_hdr)) != NULL) {
usr.sbin/ospfd/lsupdate.c
71
ls_req_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
78
ls_req_list_free(nbr, le);
usr.sbin/ospfd/lsupdate.c
83
if (nbr == originator) {
usr.sbin/ospfd/lsupdate.c
95
ls_retrans_list_add(nbr, data, iface->rxmt_interval, 0);
usr.sbin/ospfd/neighbor.c
119
nbr_fsm(struct nbr *nbr, enum nbr_event event)
usr.sbin/ospfd/neighbor.c
126
if (nbr == nbr->iface->self)
usr.sbin/ospfd/neighbor.c
129
old_state = nbr->state;
usr.sbin/ospfd/neighbor.c
141
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/neighbor.c
149
ret = nbr_act_reset_itimer(nbr);
usr.sbin/ospfd/neighbor.c
152
ret = nbr_act_start_itimer(nbr);
usr.sbin/ospfd/neighbor.c
155
ret = nbr_act_eval(nbr);
usr.sbin/ospfd/neighbor.c
158
ret = nbr_act_snapshot(nbr);
usr.sbin/ospfd/neighbor.c
162
start_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
165
ret = nbr_act_exchange_done(nbr);
usr.sbin/ospfd/neighbor.c
168
ret = nbr_act_adj_ok(nbr);
usr.sbin/ospfd/neighbor.c
171
ret = nbr_act_restart_dd(nbr);
usr.sbin/ospfd/neighbor.c
174
ret = nbr_act_delete(nbr);
usr.sbin/ospfd/neighbor.c
177
ret = nbr_act_clear_lists(nbr);
usr.sbin/ospfd/neighbor.c
180
ret = nbr_act_hello_check(nbr);
usr.sbin/ospfd/neighbor.c
190
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/neighbor.c
196
nbr->state = new_state;
usr.sbin/ospfd/neighbor.c
198
if (old_state != nbr->state) {
usr.sbin/ospfd/neighbor.c
199
nbr->stats.sta_chng++;
usr.sbin/ospfd/neighbor.c
202
nbr->peerid, 0, &nbr->state, sizeof(nbr->state));
usr.sbin/ospfd/neighbor.c
204
if (old_state & NBR_STA_FULL || nbr->state & NBR_STA_FULL) {
usr.sbin/ospfd/neighbor.c
209
orig_rtr_lsa(nbr->iface->area);
usr.sbin/ospfd/neighbor.c
210
if (nbr->iface->state & IF_STA_DR)
usr.sbin/ospfd/neighbor.c
211
orig_net_lsa(nbr->iface);
usr.sbin/ospfd/neighbor.c
214
nbr->uptime = now.tv_sec;
usr.sbin/ospfd/neighbor.c
218
if (old_state & ~NBR_STA_PRELIM && nbr->state & NBR_STA_PRELIM)
usr.sbin/ospfd/neighbor.c
219
if_fsm(nbr->iface, IF_EVT_NBR_CHNG);
usr.sbin/ospfd/neighbor.c
225
inet_ntoa(nbr->id), nbr->iface->name,
usr.sbin/ospfd/neighbor.c
227
nbr_state_name(nbr->state));
usr.sbin/ospfd/neighbor.c
229
if (nbr->iface->type == IF_TYPE_VIRTUALLINK) {
usr.sbin/ospfd/neighbor.c
230
orig_rtr_lsa(nbr->iface->area);
usr.sbin/ospfd/neighbor.c
241
struct nbr *nbr;
usr.sbin/ospfd/neighbor.c
256
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospfd/neighbor.c
259
nbr->id.s_addr = ospfe_router_id();
usr.sbin/ospfd/neighbor.c
260
nbr->state = NBR_STA_DOWN;
usr.sbin/ospfd/neighbor.c
261
nbr->peerid = NBR_IDSELF;
usr.sbin/ospfd/neighbor.c
262
head = NBR_HASH(nbr->peerid);
usr.sbin/ospfd/neighbor.c
263
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospfd/neighbor.c
265
TAILQ_INIT(&nbr->ls_retrans_list);
usr.sbin/ospfd/neighbor.c
266
TAILQ_INIT(&nbr->db_sum_list);
usr.sbin/ospfd/neighbor.c
267
TAILQ_INIT(&nbr->ls_req_list);
usr.sbin/ospfd/neighbor.c
270
struct nbr *
usr.sbin/ospfd/neighbor.c
274
struct nbr *nbr;
usr.sbin/ospfd/neighbor.c
277
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospfd/neighbor.c
280
nbr->state = NBR_STA_DOWN;
usr.sbin/ospfd/neighbor.c
281
nbr->dd_master = 1;
usr.sbin/ospfd/neighbor.c
282
nbr->dd_seq_num = arc4random(); /* RFC: some unique value */
usr.sbin/ospfd/neighbor.c
283
nbr->id.s_addr = nbr_id;
usr.sbin/ospfd/neighbor.c
288
nbr->peerid = peercnt;
usr.sbin/ospfd/neighbor.c
289
head = NBR_HASH(nbr->peerid);
usr.sbin/ospfd/neighbor.c
290
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospfd/neighbor.c
293
nbr->iface = iface;
usr.sbin/ospfd/neighbor.c
294
LIST_INSERT_HEAD(&iface->nbr_list, nbr, entry);
usr.sbin/ospfd/neighbor.c
296
TAILQ_INIT(&nbr->ls_retrans_list);
usr.sbin/ospfd/neighbor.c
297
TAILQ_INIT(&nbr->db_sum_list);
usr.sbin/ospfd/neighbor.c
298
TAILQ_INIT(&nbr->ls_req_list);
usr.sbin/ospfd/neighbor.c
300
nbr->ls_req = NULL;
usr.sbin/ospfd/neighbor.c
303
nbr->state = NBR_STA_FULL;
usr.sbin/ospfd/neighbor.c
304
nbr->addr.s_addr = iface->addr.s_addr;
usr.sbin/ospfd/neighbor.c
305
nbr->priority = iface->priority;
usr.sbin/ospfd/neighbor.c
309
evtimer_set(&nbr->inactivity_timer, nbr_itimer, nbr);
usr.sbin/ospfd/neighbor.c
310
evtimer_set(&nbr->db_tx_timer, db_tx_timer, nbr);
usr.sbin/ospfd/neighbor.c
311
evtimer_set(&nbr->lsreq_tx_timer, ls_req_tx_timer, nbr);
usr.sbin/ospfd/neighbor.c
312
evtimer_set(&nbr->ls_retrans_timer, ls_retrans_timer, nbr);
usr.sbin/ospfd/neighbor.c
313
evtimer_set(&nbr->adj_timer, nbr_adj_timer, nbr);
usr.sbin/ospfd/neighbor.c
316
rn.id.s_addr = nbr->id.s_addr;
usr.sbin/ospfd/neighbor.c
317
rn.area_id.s_addr = nbr->iface->area->id.s_addr;
usr.sbin/ospfd/neighbor.c
318
rn.addr.s_addr = nbr->addr.s_addr;
usr.sbin/ospfd/neighbor.c
319
rn.ifindex = nbr->iface->ifindex;
usr.sbin/ospfd/neighbor.c
320
rn.state = nbr->state;
usr.sbin/ospfd/neighbor.c
322
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_UP, nbr->peerid, 0, &rn,
usr.sbin/ospfd/neighbor.c
325
return (nbr);
usr.sbin/ospfd/neighbor.c
329
nbr_del(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
331
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_DOWN, nbr->peerid, 0, NULL, 0);
usr.sbin/ospfd/neighbor.c
333
if (evtimer_pending(&nbr->inactivity_timer, NULL))
usr.sbin/ospfd/neighbor.c
334
evtimer_del(&nbr->inactivity_timer);
usr.sbin/ospfd/neighbor.c
335
if (evtimer_pending(&nbr->db_tx_timer, NULL))
usr.sbin/ospfd/neighbor.c
336
evtimer_del(&nbr->db_tx_timer);
usr.sbin/ospfd/neighbor.c
337
if (evtimer_pending(&nbr->lsreq_tx_timer, NULL))
usr.sbin/ospfd/neighbor.c
338
evtimer_del(&nbr->lsreq_tx_timer);
usr.sbin/ospfd/neighbor.c
339
if (evtimer_pending(&nbr->ls_retrans_timer, NULL))
usr.sbin/ospfd/neighbor.c
340
evtimer_del(&nbr->ls_retrans_timer);
usr.sbin/ospfd/neighbor.c
341
if (evtimer_pending(&nbr->adj_timer, NULL))
usr.sbin/ospfd/neighbor.c
342
evtimer_del(&nbr->adj_timer);
usr.sbin/ospfd/neighbor.c
345
ls_retrans_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
346
db_sum_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
347
ls_req_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
349
if (nbr->peerid != NBR_IDSELF)
usr.sbin/ospfd/neighbor.c
350
LIST_REMOVE(nbr, entry);
usr.sbin/ospfd/neighbor.c
351
LIST_REMOVE(nbr, hash);
usr.sbin/ospfd/neighbor.c
353
free(nbr);
usr.sbin/ospfd/neighbor.c
356
struct nbr *
usr.sbin/ospfd/neighbor.c
360
struct nbr *nbr;
usr.sbin/ospfd/neighbor.c
364
LIST_FOREACH(nbr, head, hash) {
usr.sbin/ospfd/neighbor.c
365
if (nbr->peerid == peerid)
usr.sbin/ospfd/neighbor.c
366
return (nbr);
usr.sbin/ospfd/neighbor.c
372
struct nbr *
usr.sbin/ospfd/neighbor.c
375
struct nbr *nbr = NULL;
usr.sbin/ospfd/neighbor.c
377
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/neighbor.c
378
if (nbr->id.s_addr == rtr_id)
usr.sbin/ospfd/neighbor.c
379
return (nbr);
usr.sbin/ospfd/neighbor.c
389
struct nbr *nbr = arg;
usr.sbin/ospfd/neighbor.c
391
if (nbr->state == NBR_STA_DOWN)
usr.sbin/ospfd/neighbor.c
392
nbr_del(nbr);
usr.sbin/ospfd/neighbor.c
394
nbr_fsm(nbr, NBR_EVT_ITIMER);
usr.sbin/ospfd/neighbor.c
398
nbr_start_itimer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
403
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/ospfd/neighbor.c
405
if (evtimer_add(&nbr->inactivity_timer, &tv) == -1)
usr.sbin/ospfd/neighbor.c
41
int nbr_adj_ok(struct nbr *);
usr.sbin/ospfd/neighbor.c
410
nbr_stop_itimer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
412
if (evtimer_del(&nbr->inactivity_timer) == -1)
usr.sbin/ospfd/neighbor.c
417
nbr_reset_itimer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
422
tv.tv_sec = nbr->iface->dead_interval;
usr.sbin/ospfd/neighbor.c
424
if (evtimer_add(&nbr->inactivity_timer, &tv) == -1)
usr.sbin/ospfd/neighbor.c
43
LIST_HEAD(nbr_head, nbr);
usr.sbin/ospfd/neighbor.c
431
struct nbr *nbr = arg;
usr.sbin/ospfd/neighbor.c
433
if (!(nbr->state & NBR_STA_ADJFORM))
usr.sbin/ospfd/neighbor.c
436
if (nbr->state & NBR_STA_ACTIVE && nbr->state != NBR_STA_FULL) {
usr.sbin/ospfd/neighbor.c
438
"on interface %s", inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/neighbor.c
439
nbr_fsm(nbr, NBR_EVT_ADJTMOUT);
usr.sbin/ospfd/neighbor.c
444
nbr_start_adj_timer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
451
if (evtimer_add(&nbr->adj_timer, &tv) == -1)
usr.sbin/ospfd/neighbor.c
457
nbr_act_reset_itimer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
459
nbr_reset_itimer(nbr);
usr.sbin/ospfd/neighbor.c
465
nbr_act_start_itimer(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
467
nbr_start_itimer(nbr);
usr.sbin/ospfd/neighbor.c
473
nbr_adj_ok(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
475
struct iface *iface = nbr->iface;
usr.sbin/ospfd/neighbor.c
489
if (iface->dr == nbr || iface->bdr == nbr ||
usr.sbin/ospfd/neighbor.c
500
nbr_act_eval(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
502
if (!nbr_adj_ok(nbr)) {
usr.sbin/ospfd/neighbor.c
503
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospfd/neighbor.c
507
nbr->state = NBR_STA_XSTRT;
usr.sbin/ospfd/neighbor.c
508
nbr->dd_master = 1;
usr.sbin/ospfd/neighbor.c
509
nbr->dd_seq_num++; /* as per RFC */
usr.sbin/ospfd/neighbor.c
510
nbr->dd_pending = 0;
usr.sbin/ospfd/neighbor.c
512
start_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
514
nbr_start_adj_timer(nbr);
usr.sbin/ospfd/neighbor.c
520
nbr_act_snapshot(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
522
stop_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
525
if (nbr->dd_snapshot) {
usr.sbin/ospfd/neighbor.c
527
"for neighbor ID %s (%s)", inet_ntoa(nbr->id),
usr.sbin/ospfd/neighbor.c
528
nbr->iface->name);
usr.sbin/ospfd/neighbor.c
529
return (nbr_act_restart_dd(nbr));
usr.sbin/ospfd/neighbor.c
531
ospfe_imsg_compose_rde(IMSG_NEIGHBOR_CAPA, nbr->peerid, 0,
usr.sbin/ospfd/neighbor.c
532
&nbr->capa_options, sizeof(nbr->capa_options));
usr.sbin/ospfd/neighbor.c
533
ospfe_imsg_compose_rde(IMSG_DB_SNAPSHOT, nbr->peerid, 0, NULL, 0);
usr.sbin/ospfd/neighbor.c
535
nbr->dd_snapshot = 1; /* wait for IMSG_DB_END */
usr.sbin/ospfd/neighbor.c
536
nbr->state = NBR_STA_SNAP;
usr.sbin/ospfd/neighbor.c
542
nbr_act_exchange_done(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
544
if (nbr->dd_master)
usr.sbin/ospfd/neighbor.c
545
stop_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
547
if (ls_req_list_empty(nbr) && nbr->state == NBR_STA_XCHNG &&
usr.sbin/ospfd/neighbor.c
548
nbr->dd_pending == 0) {
usr.sbin/ospfd/neighbor.c
549
nbr->state = NBR_STA_FULL;
usr.sbin/ospfd/neighbor.c
553
nbr->state = NBR_STA_LOAD;
usr.sbin/ospfd/neighbor.c
555
if (!ls_req_list_empty(nbr))
usr.sbin/ospfd/neighbor.c
556
start_ls_req_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
562
nbr_act_adj_ok(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
564
if (nbr_adj_ok(nbr)) {
usr.sbin/ospfd/neighbor.c
565
if (nbr->state == NBR_STA_2_WAY)
usr.sbin/ospfd/neighbor.c
566
return (nbr_act_eval(nbr));
usr.sbin/ospfd/neighbor.c
568
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospfd/neighbor.c
569
return (nbr_act_clear_lists(nbr));
usr.sbin/ospfd/neighbor.c
576
nbr_act_restart_dd(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
578
nbr_act_clear_lists(nbr);
usr.sbin/ospfd/neighbor.c
580
if (!nbr_adj_ok(nbr)) {
usr.sbin/ospfd/neighbor.c
581
nbr->state = NBR_STA_2_WAY;
usr.sbin/ospfd/neighbor.c
585
nbr->state = NBR_STA_XSTRT;
usr.sbin/ospfd/neighbor.c
586
nbr->dd_master = 1;
usr.sbin/ospfd/neighbor.c
587
nbr->dd_seq_num += arc4random() & 0xffff;
usr.sbin/ospfd/neighbor.c
588
nbr->dd_pending = 0;
usr.sbin/ospfd/neighbor.c
591
start_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
593
nbr_start_adj_timer(nbr);
usr.sbin/ospfd/neighbor.c
599
nbr_act_delete(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
604
nbr->dr.s_addr = 0;
usr.sbin/ospfd/neighbor.c
605
nbr->bdr.s_addr = 0;
usr.sbin/ospfd/neighbor.c
607
if (nbr == nbr->iface->self)
usr.sbin/ospfd/neighbor.c
611
nbr_stop_itimer(nbr);
usr.sbin/ospfd/neighbor.c
614
nbr->crypt_seq_num = 0;
usr.sbin/ospfd/neighbor.c
620
if (evtimer_add(&nbr->inactivity_timer, &tv)) {
usr.sbin/ospfd/neighbor.c
623
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/neighbor.c
626
return (nbr_act_clear_lists(nbr));
usr.sbin/ospfd/neighbor.c
630
nbr_act_clear_lists(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
633
stop_db_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
634
stop_ls_req_tx_timer(nbr);
usr.sbin/ospfd/neighbor.c
637
ls_retrans_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
638
db_sum_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
639
ls_req_list_clr(nbr);
usr.sbin/ospfd/neighbor.c
645
nbr_act_hello_check(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
648
inet_ntoa(nbr->id), nbr->iface->name);
usr.sbin/ospfd/neighbor.c
654
nbr_to_ctl(struct nbr *nbr)
usr.sbin/ospfd/neighbor.c
660
memcpy(nctl.name, nbr->iface->name, sizeof(nctl.name));
usr.sbin/ospfd/neighbor.c
661
memcpy(&nctl.id, &nbr->id, sizeof(nctl.id));
usr.sbin/ospfd/neighbor.c
662
memcpy(&nctl.addr, &nbr->addr, sizeof(nctl.addr));
usr.sbin/ospfd/neighbor.c
663
memcpy(&nctl.dr, &nbr->dr, sizeof(nctl.dr));
usr.sbin/ospfd/neighbor.c
664
memcpy(&nctl.bdr, &nbr->bdr, sizeof(nctl.bdr));
usr.sbin/ospfd/neighbor.c
665
memcpy(&nctl.area, &nbr->iface->area->id, sizeof(nctl.area));
usr.sbin/ospfd/neighbor.c
669
TAILQ_FOREACH(le, &nbr->db_sum_list, entry)
usr.sbin/ospfd/neighbor.c
672
nctl.ls_req_lst_cnt = nbr->ls_req_cnt;
usr.sbin/ospfd/neighbor.c
673
nctl.ls_retrans_lst_cnt = nbr->ls_ret_cnt;
usr.sbin/ospfd/neighbor.c
675
nctl.nbr_state = nbr->state;
usr.sbin/ospfd/neighbor.c
682
if (nbr->iface->dr == nbr)
usr.sbin/ospfd/neighbor.c
684
else if (nbr->iface->bdr == nbr)
usr.sbin/ospfd/neighbor.c
686
else if (nbr->iface->state & IF_STA_MULTI)
usr.sbin/ospfd/neighbor.c
689
nctl.iface_state = nbr->iface->state;
usr.sbin/ospfd/neighbor.c
691
nctl.state_chng_cnt = nbr->stats.sta_chng;
usr.sbin/ospfd/neighbor.c
693
nctl.priority = nbr->priority;
usr.sbin/ospfd/neighbor.c
694
nctl.options = nbr->options | nbr->capa_options;
usr.sbin/ospfd/neighbor.c
697
if (evtimer_pending(&nbr->inactivity_timer, &tv)) {
usr.sbin/ospfd/neighbor.c
699
if (nbr->state & NBR_STA_DOWN)
usr.sbin/ospfd/neighbor.c
706
if (nbr->state == NBR_STA_FULL) {
usr.sbin/ospfd/neighbor.c
707
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/ospfd/ospfd.h
325
LIST_HEAD(, nbr) nbr_list;
usr.sbin/ospfd/ospfd.h
338
struct nbr *dr; /* designated router */
usr.sbin/ospfd/ospfd.h
339
struct nbr *bdr; /* backup designated router */
usr.sbin/ospfd/ospfd.h
340
struct nbr *self;
usr.sbin/ospfd/ospfe.c
1022
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/ospfe.c
1023
if (nbr != iface->self &&
usr.sbin/ospfd/ospfe.c
1024
nbr->state & NBR_STA_FULL) {
usr.sbin/ospfd/ospfe.c
1029
rtr_link.id = nbr->addr.s_addr;
usr.sbin/ospfd/ospfe.c
1127
struct nbr *nbr;
usr.sbin/ospfd/ospfe.c
1146
LIST_FOREACH(nbr, &iface->nbr_list, entry)
usr.sbin/ospfd/ospfe.c
1147
if (nbr->state & NBR_STA_FULL) {
usr.sbin/ospfd/ospfe.c
1148
if (ibuf_add(buf, &nbr->id, sizeof(nbr->id)))
usr.sbin/ospfd/ospfe.c
1226
struct nbr *nbr;
usr.sbin/ospfd/ospfe.c
1231
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/ospfe.c
1232
if (iface->self != nbr) {
usr.sbin/ospfd/ospfe.c
1233
nctl = nbr_to_ctl(nbr);
usr.sbin/ospfd/ospfe.c
490
struct nbr *nbr;
usr.sbin/ospfd/ospfe.c
524
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
525
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
534
if ((nbr->state & NBR_STA_FLOOD) == 0)
usr.sbin/ospfd/ospfe.c
540
ls_req_list_add(nbr, lhp);
usr.sbin/ospfd/ospfe.c
543
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
544
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
548
if ((nbr->state & NBR_STA_FLOOD) == 0)
usr.sbin/ospfd/ospfe.c
551
nbr->dd_pending--;
usr.sbin/ospfd/ospfe.c
552
if (nbr->dd_pending == 0 && nbr->state & NBR_STA_LOAD) {
usr.sbin/ospfd/ospfe.c
553
if (ls_req_list_empty(nbr))
usr.sbin/ospfd/ospfe.c
554
nbr_fsm(nbr, NBR_EVT_LOAD_DONE);
usr.sbin/ospfd/ospfe.c
556
start_ls_req_tx_timer(nbr);
usr.sbin/ospfd/ospfe.c
560
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
561
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
564
if (nbr->iface->self == nbr)
usr.sbin/ospfd/ospfe.c
568
nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS);
usr.sbin/ospfd/ospfe.c
571
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
572
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
574
if (nbr->state != NBR_STA_SNAP) /* discard */
usr.sbin/ospfd/ospfe.c
580
db_sum_list_add(nbr, lhp);
usr.sbin/ospfd/ospfe.c
583
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
584
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
587
nbr->dd_snapshot = 0;
usr.sbin/ospfd/ospfe.c
588
if (nbr->state != NBR_STA_SNAP)
usr.sbin/ospfd/ospfe.c
592
nbr_fsm(nbr, NBR_EVT_SNAP_DONE);
usr.sbin/ospfd/ospfe.c
595
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
596
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
617
noack += lsa_flood(iface, nbr,
usr.sbin/ospfd/ospfe.c
625
noack += lsa_flood(nbr->iface, nbr,
usr.sbin/ospfd/ospfe.c
632
area = nbr->iface->area;
usr.sbin/ospfd/ospfe.c
634
noack += lsa_flood(iface, nbr,
usr.sbin/ospfd/ospfe.c
641
le = ls_req_list_get(nbr, &lsa_hdr);
usr.sbin/ospfd/ospfe.c
642
if (!(nbr->state & NBR_STA_FULL) && le != NULL) {
usr.sbin/ospfd/ospfe.c
643
ls_req_list_free(nbr, le);
usr.sbin/ospfd/ospfe.c
652
if (!noack && nbr->iface != NULL &&
usr.sbin/ospfd/ospfe.c
653
nbr->iface->self != nbr) {
usr.sbin/ospfd/ospfe.c
654
if (!(nbr->iface->state & IF_STA_BACKUP) ||
usr.sbin/ospfd/ospfe.c
655
nbr->iface->dr == nbr) {
usr.sbin/ospfd/ospfe.c
659
ls_ack_list_add(nbr->iface, lhp);
usr.sbin/ospfd/ospfe.c
663
lsa_cache_put(ref, nbr);
usr.sbin/ospfd/ospfe.c
680
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
681
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
684
if (nbr->iface->self == nbr)
usr.sbin/ospfd/ospfe.c
688
nbr->state != NBR_STA_SNAP)
usr.sbin/ospfd/ospfe.c
695
ls_retrans_list_add(nbr, imsg.data, 0, 0);
usr.sbin/ospfd/ospfe.c
697
ls_retrans_list_add(nbr, imsg.data, 0, 1);
usr.sbin/ospfd/ospfe.c
699
lsa_cache_put(ref, nbr);
usr.sbin/ospfd/ospfe.c
709
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
710
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
713
if (nbr->iface->self == nbr)
usr.sbin/ospfd/ospfe.c
721
if (nbr->iface->state & IF_STA_DROTHER)
usr.sbin/ospfd/ospfe.c
722
if (ls_retrans_list_del(nbr->iface->self,
usr.sbin/ospfd/ospfe.c
725
if (ls_retrans_list_del(nbr, &lsa_hdr) == 0)
usr.sbin/ospfd/ospfe.c
729
send_direct_ack(nbr->iface, nbr->addr, imsg.data,
usr.sbin/ospfd/ospfe.c
734
nbr = nbr_find_peerid(imsg.hdr.peerid);
usr.sbin/ospfd/ospfe.c
735
if (nbr == NULL)
usr.sbin/ospfd/ospfe.c
738
if (nbr->iface->self == nbr)
usr.sbin/ospfd/ospfe.c
742
nbr_fsm(nbr, NBR_EVT_BAD_LS_REQ);
usr.sbin/ospfd/ospfe.c
839
struct nbr *nbr, *self = NULL;
usr.sbin/ospfd/ospfe.c
878
LIST_FOREACH(nbr, &iface->nbr_list, entry)
usr.sbin/ospfd/ospfe.c
879
if (nbr != iface->self &&
usr.sbin/ospfd/ospfe.c
880
nbr->state & NBR_STA_FULL)
usr.sbin/ospfd/ospfe.c
882
if (nbr) {
usr.sbin/ospfd/ospfe.c
885
rtr_link.id = nbr->id.s_addr;
usr.sbin/ospfd/ospfe.c
906
if (nbr) {
usr.sbin/ospfd/ospfe.c
907
rtr_link.id = nbr->addr.s_addr;
usr.sbin/ospfd/ospfe.c
929
LIST_FOREACH(nbr, &iface->nbr_list,
usr.sbin/ospfd/ospfe.c
931
if (nbr != iface->self &&
usr.sbin/ospfd/ospfe.c
932
nbr->state & NBR_STA_FULL)
usr.sbin/ospfd/ospfe.c
935
nbr = iface->dr;
usr.sbin/ospfd/ospfe.c
937
if (nbr && nbr->state & NBR_STA_FULL) {
usr.sbin/ospfd/ospfe.c
987
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ospfd/ospfe.c
988
if (nbr != iface->self &&
usr.sbin/ospfd/ospfe.c
989
nbr->state & NBR_STA_FULL)
usr.sbin/ospfd/ospfe.c
992
if (nbr) {
usr.sbin/ospfd/ospfe.c
993
rtr_link.id = nbr->id.s_addr;
usr.sbin/ospfd/ospfe.h
100
struct nbr *);
usr.sbin/ospfd/ospfe.h
108
int send_db_description(struct nbr *);
usr.sbin/ospfd/ospfe.h
109
void recv_db_description(struct nbr *, char *, u_int16_t);
usr.sbin/ospfd/ospfe.h
110
void db_sum_list_add(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
111
void db_sum_list_clr(struct nbr *);
usr.sbin/ospfd/ospfe.h
113
void start_db_tx_timer(struct nbr *);
usr.sbin/ospfd/ospfe.h
114
void stop_db_tx_timer(struct nbr *);
usr.sbin/ospfd/ospfe.h
160
void recv_ls_ack(struct nbr *, char *, u_int16_t);
usr.sbin/ospfd/ospfe.h
161
int lsa_hdr_check(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
171
int send_ls_req(struct nbr *);
usr.sbin/ospfd/ospfe.h
172
void recv_ls_req(struct nbr *, char *, u_int16_t);
usr.sbin/ospfd/ospfe.h
173
void ls_req_list_add(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
174
struct lsa_entry *ls_req_list_get(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
175
void ls_req_list_free(struct nbr *, struct lsa_entry *);
usr.sbin/ospfd/ospfe.h
176
void ls_req_list_clr(struct nbr *);
usr.sbin/ospfd/ospfe.h
177
int ls_req_list_empty(struct nbr *);
usr.sbin/ospfd/ospfe.h
179
void start_ls_req_tx_timer(struct nbr *);
usr.sbin/ospfd/ospfe.h
180
void stop_ls_req_tx_timer(struct nbr *);
usr.sbin/ospfd/ospfe.h
183
int lsa_flood(struct iface *, struct nbr *, struct lsa_hdr *,
usr.sbin/ospfd/ospfe.h
185
void recv_ls_update(struct nbr *, char *, u_int16_t);
usr.sbin/ospfd/ospfe.h
187
void ls_retrans_list_add(struct nbr *, struct lsa_hdr *,
usr.sbin/ospfd/ospfe.h
189
int ls_retrans_list_del(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
190
struct lsa_entry *ls_retrans_list_get(struct nbr *, struct lsa_hdr *);
usr.sbin/ospfd/ospfe.h
191
void ls_retrans_list_free(struct nbr *, struct lsa_entry *);
usr.sbin/ospfd/ospfe.h
192
void ls_retrans_list_clr(struct nbr *);
usr.sbin/ospfd/ospfe.h
198
void lsa_cache_put(struct lsa_ref *, struct nbr *);
usr.sbin/ospfd/ospfe.h
202
struct nbr *nbr_new(u_int32_t, struct iface *, int);
usr.sbin/ospfd/ospfe.h
203
void nbr_del(struct nbr *);
usr.sbin/ospfd/ospfe.h
205
struct nbr *nbr_find_id(struct iface *, u_int32_t);
usr.sbin/ospfd/ospfe.h
206
struct nbr *nbr_find_peerid(u_int32_t);
usr.sbin/ospfd/ospfe.h
208
int nbr_fsm(struct nbr *, enum nbr_event);
usr.sbin/ospfd/ospfe.h
211
void nbr_start_itimer(struct nbr *);
usr.sbin/ospfd/ospfe.h
212
void nbr_stop_itimer(struct nbr *);
usr.sbin/ospfd/ospfe.h
213
void nbr_reset_itimer(struct nbr *);
usr.sbin/ospfd/ospfe.h
216
void nbr_start_adj_timer(struct nbr *);
usr.sbin/ospfd/ospfe.h
218
int nbr_act_reset_itimer(struct nbr *);
usr.sbin/ospfd/ospfe.h
219
int nbr_act_start_itimer(struct nbr *);
usr.sbin/ospfd/ospfe.h
220
int nbr_act_eval(struct nbr *);
usr.sbin/ospfd/ospfe.h
221
int nbr_act_snapshot(struct nbr *);
usr.sbin/ospfd/ospfe.h
222
int nbr_act_exchange_done(struct nbr *);
usr.sbin/ospfd/ospfe.h
223
int nbr_act_adj_ok(struct nbr *);
usr.sbin/ospfd/ospfe.h
224
int nbr_act_restart_dd(struct nbr *);
usr.sbin/ospfd/ospfe.h
225
int nbr_act_delete(struct nbr *);
usr.sbin/ospfd/ospfe.h
226
int nbr_act_clear_lists(struct nbr *);
usr.sbin/ospfd/ospfe.h
227
int nbr_act_hello_check(struct nbr *);
usr.sbin/ospfd/ospfe.h
229
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/ospfd/ospfe.h
55
LIST_ENTRY(nbr) entry, hash;
usr.sbin/ospfd/packet.c
123
struct nbr *nbr = NULL;
usr.sbin/ospfd/packet.c
210
nbr = nbr_find_id(iface, ospf_hdr->rtr_id);
usr.sbin/ospfd/packet.c
211
if (ospf_hdr->type != PACKET_TYPE_HELLO && nbr == NULL) {
usr.sbin/ospfd/packet.c
216
if (auth_validate(buf, len, iface, nbr)) {
usr.sbin/ospfd/packet.c
217
if (nbr == NULL)
usr.sbin/ospfd/packet.c
223
inet_ntoa(nbr->id), iface->name);
usr.sbin/ospfd/packet.c
247
recv_db_description(nbr, buf, len);
usr.sbin/ospfd/packet.c
250
recv_ls_req(nbr, buf, len);
usr.sbin/ospfd/packet.c
253
recv_ls_update(nbr, buf, len);
usr.sbin/ospfd/packet.c
256
recv_ls_ack(nbr, buf, len);
usr.sbin/ospfd/rde.c
1000
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ospfd/rde.c
1001
LIST_INSERT_HEAD(&area->nbr_list, nbr, entry);
usr.sbin/ospfd/rde.c
1003
return (nbr);
usr.sbin/ospfd/rde.c
1010
struct rde_nbr *nbr, *xnbr;
usr.sbin/ospfd/rde.c
1015
LIST_FOREACH_SAFE(nbr, head, hash, xnbr) {
usr.sbin/ospfd/rde.c
1016
if (nbr->iface == iface)
usr.sbin/ospfd/rde.c
1017
rde_nbr_del(nbr);
usr.sbin/ospfd/rde.c
1023
rde_nbr_del(struct rde_nbr *nbr)
usr.sbin/ospfd/rde.c
1025
if (nbr == NULL)
usr.sbin/ospfd/rde.c
1028
rde_req_list_free(nbr);
usr.sbin/ospfd/rde.c
1030
LIST_REMOVE(nbr, entry);
usr.sbin/ospfd/rde.c
1031
LIST_REMOVE(nbr, hash);
usr.sbin/ospfd/rde.c
1033
free(nbr);
usr.sbin/ospfd/rde.c
1039
struct rde_nbr *nbr;
usr.sbin/ospfd/rde.c
1048
LIST_FOREACH(nbr, &area->nbr_list, entry) {
usr.sbin/ospfd/rde.c
1049
if (nbr->self)
usr.sbin/ospfd/rde.c
1051
if (nbr->state & NBR_STA_XCHNG ||
usr.sbin/ospfd/rde.c
1052
nbr->state & NBR_STA_LOAD)
usr.sbin/ospfd/rde.c
1066
struct rde_nbr *nbr;
usr.sbin/ospfd/rde.c
1068
LIST_FOREACH(nbr, &area->nbr_list, entry)
usr.sbin/ospfd/rde.c
1069
if (nbr->self)
usr.sbin/ospfd/rde.c
1070
return (nbr);
usr.sbin/ospfd/rde.c
1081
rde_req_list_add(struct rde_nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospfd/rde.c
1088
TAILQ_INSERT_TAIL(&nbr->req_list, le, entry);
usr.sbin/ospfd/rde.c
1095
rde_req_list_exists(struct rde_nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/rde.c
1099
TAILQ_FOREACH(le, &nbr->req_list, entry) {
usr.sbin/ospfd/rde.c
1109
rde_req_list_del(struct rde_nbr *nbr, struct lsa_hdr *lsa_hdr)
usr.sbin/ospfd/rde.c
1113
TAILQ_FOREACH(le, &nbr->req_list, entry) {
usr.sbin/ospfd/rde.c
1117
TAILQ_REMOVE(&nbr->req_list, le, entry);
usr.sbin/ospfd/rde.c
1125
rde_req_list_free(struct rde_nbr *nbr)
usr.sbin/ospfd/rde.c
1129
while ((le = TAILQ_FIRST(&nbr->req_list)) != NULL) {
usr.sbin/ospfd/rde.c
1130
TAILQ_REMOVE(&nbr->req_list, le, entry);
usr.sbin/ospfd/rde.c
256
struct rde_nbr rn, *nbr;
usr.sbin/ospfd/rde.c
312
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
313
if (nbr == NULL)
usr.sbin/ospfd/rde.c
316
nbr->addr.s_addr = addr.s_addr;
usr.sbin/ospfd/rde.c
323
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
324
if (nbr == NULL)
usr.sbin/ospfd/rde.c
327
nbr->state = state;
usr.sbin/ospfd/rde.c
328
if (nbr->state & NBR_STA_FULL)
usr.sbin/ospfd/rde.c
329
rde_req_list_free(nbr);
usr.sbin/ospfd/rde.c
334
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
335
if (nbr == NULL)
usr.sbin/ospfd/rde.c
337
nbr->capa_options = *(u_int8_t *)imsg.data;
usr.sbin/ospfd/rde.c
353
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
354
if (nbr == NULL)
usr.sbin/ospfd/rde.c
357
lsa_snap(nbr);
usr.sbin/ospfd/rde.c
363
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
364
if (nbr == NULL)
usr.sbin/ospfd/rde.c
375
nbr->area->stub) {
usr.sbin/ospfd/rde.c
379
v = lsa_find(nbr->iface, lsa_hdr.type,
usr.sbin/ospfd/rde.c
391
rde_req_list_add(nbr, &lsa_hdr);
usr.sbin/ospfd/rde.c
410
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
411
if (nbr == NULL)
usr.sbin/ospfd/rde.c
420
if ((v = lsa_find(nbr->iface,
usr.sbin/ospfd/rde.c
440
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
441
if (nbr == NULL)
usr.sbin/ospfd/rde.c
449
if (!lsa_check(nbr, lsa,
usr.sbin/ospfd/rde.c
455
v = lsa_find(nbr->iface, lsa->hdr.type, lsa->hdr.ls_id,
usr.sbin/ospfd/rde.c
462
if (nbr->self) {
usr.sbin/ospfd/rde.c
463
lsa_merge(nbr, lsa, v);
usr.sbin/ospfd/rde.c
477
rde_req_list_del(nbr, &lsa->hdr);
usr.sbin/ospfd/rde.c
479
if (!(self = lsa_self(nbr, lsa, v)))
usr.sbin/ospfd/rde.c
480
if (lsa_add(nbr, lsa))
usr.sbin/ospfd/rde.c
506
if (rde_req_list_exists(nbr, &lsa->hdr)) {
usr.sbin/ospfd/rde.c
539
nbr = rde_nbr_find(imsg.hdr.peerid);
usr.sbin/ospfd/rde.c
540
if (nbr == NULL)
usr.sbin/ospfd/rde.c
548
if (rde_nbr_loading(nbr->area))
usr.sbin/ospfd/rde.c
551
v = lsa_find(nbr->iface, lsa_hdr.type, lsa_hdr.ls_id,
usr.sbin/ospfd/rde.c
562
lsa_del(nbr, &lsa_hdr);
usr.sbin/ospfd/rde.c
883
struct rde_nbr *nbr;
usr.sbin/ospfd/rde.c
895
LIST_FOREACH(nbr, &area->nbr_list, entry)
usr.sbin/ospfd/rde.c
896
if (nbr->state == NBR_STA_FULL && !nbr->self)
usr.sbin/ospfd/rde.c
957
struct rde_nbr *nbr;
usr.sbin/ospfd/rde.c
961
LIST_FOREACH(nbr, head, hash) {
usr.sbin/ospfd/rde.c
962
if (nbr->peerid == peerid)
usr.sbin/ospfd/rde.c
963
return (nbr);
usr.sbin/ospfd/rde.c
973
struct rde_nbr *nbr;
usr.sbin/ospfd/rde.c
989
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ospfd/rde.c
992
memcpy(nbr, new, sizeof(*nbr));
usr.sbin/ospfd/rde.c
993
nbr->peerid = peerid;
usr.sbin/ospfd/rde.c
994
nbr->area = area;
usr.sbin/ospfd/rde.c
995
nbr->iface = iface;
usr.sbin/ospfd/rde.c
997
TAILQ_INIT(&nbr->req_list);
usr.sbin/ospfd/rde_lsdb.c
182
lsa_check(struct rde_nbr *nbr, struct lsa *lsa, u_int16_t len)
usr.sbin/ospfd/rde_lsdb.c
184
struct area *area = nbr->area;
usr.sbin/ospfd/rde_lsdb.c
202
if ((ntohs(lsa->hdr.age) < 1 && !nbr->self) ||
usr.sbin/ospfd/rde_lsdb.c
271
if (lsa->hdr.age == htons(MAX_AGE) && !nbr->self && lsa_find(nbr->iface,
usr.sbin/ospfd/rde_lsdb.c
278
rde_imsg_compose_ospfe(IMSG_LS_ACK, nbr->peerid, 0, &lsa->hdr,
usr.sbin/ospfd/rde_lsdb.c
331
lsa_self(struct rde_nbr *nbr, struct lsa *new, struct vertex *v)
usr.sbin/ospfd/rde_lsdb.c
336
if (nbr->self)
usr.sbin/ospfd/rde_lsdb.c
343
LIST_FOREACH(iface, &nbr->area->iface_list, entry)
usr.sbin/ospfd/rde_lsdb.c
365
(void)lsa_add(rde_nbr_self(nbr->area), dummy);
usr.sbin/ospfd/rde_lsdb.c
381
lsa_add(struct rde_nbr *nbr, struct lsa *lsa)
usr.sbin/ospfd/rde_lsdb.c
392
tree = &nbr->iface->lsa_tree;
usr.sbin/ospfd/rde_lsdb.c
394
tree = &nbr->area->lsa_tree;
usr.sbin/ospfd/rde_lsdb.c
396
new = vertex_get(lsa, nbr, tree);
usr.sbin/ospfd/rde_lsdb.c
423
nbr->area->dirty = 1;
usr.sbin/ospfd/rde_lsdb.c
430
if (nbr->self && ntohs(new->lsa->hdr.age) == DEFAULT_AGE)
usr.sbin/ospfd/rde_lsdb.c
441
lsa_del(struct rde_nbr *nbr, struct lsa_hdr *lsa)
usr.sbin/ospfd/rde_lsdb.c
446
v = lsa_find(nbr->iface, lsa->type, lsa->ls_id, lsa->adv_rtr);
usr.sbin/ospfd/rde_lsdb.c
569
lsa_snap(struct rde_nbr *nbr)
usr.sbin/ospfd/rde_lsdb.c
571
struct lsa_tree *tree = &nbr->area->lsa_tree;
usr.sbin/ospfd/rde_lsdb.c
582
if (nbr->capa_options & OSPF_OPTION_O)
usr.sbin/ospfd/rde_lsdb.c
588
rde_imsg_compose_ospfe(IMSG_LS_SNAP, nbr->peerid,
usr.sbin/ospfd/rde_lsdb.c
592
nbr->peerid, 0, &v->lsa->hdr,
usr.sbin/ospfd/rde_lsdb.c
597
if (tree == &nbr->area->lsa_tree)
usr.sbin/ospfd/rde_lsdb.c
598
tree = &nbr->iface->lsa_tree;
usr.sbin/ospfd/rde_lsdb.c
599
else if (nbr->area->stub)
usr.sbin/ospfd/rde_lsdb.c
67
vertex_get(struct lsa *lsa, struct rde_nbr *nbr, struct lsa_tree *tree)
usr.sbin/ospfd/rde_lsdb.c
735
lsa_merge(struct rde_nbr *nbr, struct lsa *lsa, struct vertex *v)
usr.sbin/ospfd/rde_lsdb.c
743
if (lsa_add(nbr, lsa))
usr.sbin/ospfd/rde_lsdb.c
746
rde_imsg_compose_ospfe(IMSG_LS_FLOOD, nbr->peerid, 0,
usr.sbin/ospfd/rde_lsdb.c
75
v->area = nbr->area;
usr.sbin/ospfd/rde_lsdb.c
76
v->peerid = nbr->peerid;
usr.sbin/ospfd/rde_lsdb.c
770
nbr->area->dirty = 1;
usr.sbin/ospfd/rde_lsdb.c
86
if (!nbr->self)
usr.sbin/ospfd/rde_lsdb.c
88
v->self = nbr->self;
usr.sbin/ospfd/rde_spf.c
376
struct rde_nbr *nbr;
usr.sbin/ospfd/rde_spf.c
388
LIST_FOREACH(nbr, &area->nbr_list, entry) {
usr.sbin/ospfd/rde_spf.c
389
if (nbr->ifindex == iface->ifindex) {
usr.sbin/ospfd/rde_spf.c
391
nbr->addr.s_addr);
usr.sbin/ripctl/ripctl.c
371
struct ctl_nbr *nbr;
usr.sbin/ripctl/ripctl.c
376
nbr = imsg->data;
usr.sbin/ripctl/ripctl.c
377
if (asprintf(&state, "%s/%s", nbr_state_name(nbr->nbr_state),
usr.sbin/ripctl/ripctl.c
378
if_state_name(nbr->iface_state)) == -1)
usr.sbin/ripctl/ripctl.c
380
printf("%-15s %-16s", inet_ntoa(nbr->id),
usr.sbin/ripctl/ripctl.c
382
printf("%-15s %-10s", inet_ntoa(nbr->addr), nbr->name);
usr.sbin/ripctl/ripctl.c
383
printf("%-15s\n", nbr->uptime == 0 ? "-" :
usr.sbin/ripctl/ripctl.c
384
fmt_timeframe_core(nbr->uptime));
usr.sbin/ripd/auth.c
126
if (nbr != NULL) {
usr.sbin/ripd/auth.c
127
if (ntohl(a->auth_seq) < nbr->auth_seq_num) {
usr.sbin/ripd/auth.c
74
struct nbr *nbr, struct nbr_failed *nbr_failed, u_int32_t *crypt_seq_num)
usr.sbin/ripd/interface.c
214
struct nbr *nbr = NULL;
usr.sbin/ripd/interface.c
233
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ripd/interface.c
234
if (nbr_fsm(nbr, NBR_EVT_KILL_NBR)) {
usr.sbin/ripd/interface.c
236
inet_ntoa(nbr->id));
usr.sbin/ripd/interface.c
460
struct nbr *nbr;
usr.sbin/ripd/interface.c
465
while ((nbr = LIST_FIRST(&iface->nbr_list)) != NULL)
usr.sbin/ripd/interface.c
466
nbr_del(nbr);
usr.sbin/ripd/message.c
144
send_request(struct packet_head *r_list, struct iface *i, struct nbr *nbr)
usr.sbin/ripd/message.c
158
iface = nbr->iface;
usr.sbin/ripd/message.c
159
dst.sin_addr = nbr->addr;
usr.sbin/ripd/message.c
160
port = htons(nbr->port);
usr.sbin/ripd/message.c
221
send_response(struct packet_head *r_list, struct iface *i, struct nbr *nbr)
usr.sbin/ripd/message.c
234
iface = nbr->iface;
usr.sbin/ripd/message.c
235
dst.sin_addr = nbr->addr;
usr.sbin/ripd/message.c
236
port = htons(nbr->port);
usr.sbin/ripd/message.c
316
recv_request(struct iface *i, struct nbr *nbr, u_int8_t *buf, u_int16_t len)
usr.sbin/ripd/message.c
350
ripe_imsg_compose_rde(IMSG_FULL_RESPONSE, nbr->peerid,
usr.sbin/ripd/message.c
367
ripe_imsg_compose_rde(IMSG_ROUTE_REQUEST, nbr->peerid,
usr.sbin/ripd/message.c
373
ripe_imsg_compose_rde(IMSG_ROUTE_REQUEST_END, nbr->peerid,
usr.sbin/ripd/message.c
378
recv_response(struct iface *i, struct nbr *nbr, u_int8_t *buf, u_int16_t len)
usr.sbin/ripd/message.c
421
r.nexthop.s_addr = nbr->addr.s_addr;
usr.sbin/ripd/neighbor.c
102
old_state = nbr->state;
usr.sbin/ripd/neighbor.c
114
inet_ntoa(nbr->id), nbr_event_name(event),
usr.sbin/ripd/neighbor.c
121
nbr_set_timer(nbr);
usr.sbin/ripd/neighbor.c
124
nbr_set_timer(nbr);
usr.sbin/ripd/neighbor.c
127
nbr_act_del(nbr);
usr.sbin/ripd/neighbor.c
135
nbr->state = new_state;
usr.sbin/ripd/neighbor.c
137
if (old_state != nbr->state) {
usr.sbin/ripd/neighbor.c
140
nbr->uptime = now.tv_sec;
usr.sbin/ripd/neighbor.c
146
inet_ntoa(nbr->id), nbr_state_name(old_state),
usr.sbin/ripd/neighbor.c
147
nbr_state_name(nbr->state));
usr.sbin/ripd/neighbor.c
170
struct nbr *
usr.sbin/ripd/neighbor.c
174
struct nbr *nbr = NULL;
usr.sbin/ripd/neighbor.c
176
if ((nbr = calloc(1, sizeof(*nbr))) == NULL)
usr.sbin/ripd/neighbor.c
179
nbr->state = NBR_STA_DOWN;
usr.sbin/ripd/neighbor.c
180
nbr->id.s_addr = nbr_id;
usr.sbin/ripd/neighbor.c
185
nbr->peerid = peercnt;
usr.sbin/ripd/neighbor.c
186
head = NBR_HASH(nbr->peerid);
usr.sbin/ripd/neighbor.c
187
LIST_INSERT_HEAD(head, nbr, hash);
usr.sbin/ripd/neighbor.c
190
nbr->iface = iface;
usr.sbin/ripd/neighbor.c
191
LIST_INSERT_HEAD(&iface->nbr_list, nbr, entry);
usr.sbin/ripd/neighbor.c
193
TAILQ_INIT(&nbr->rp_list);
usr.sbin/ripd/neighbor.c
194
TAILQ_INIT(&nbr->rq_list);
usr.sbin/ripd/neighbor.c
197
evtimer_set(&nbr->timeout_timer, nbr_timeout_timer, nbr);
usr.sbin/ripd/neighbor.c
200
inet_ntoa(nbr->id), nbr->peerid);
usr.sbin/ripd/neighbor.c
202
return (nbr);
usr.sbin/ripd/neighbor.c
206
nbr_del(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
208
log_debug("nbr_del: neighbor ID %s, peerid %u", inet_ntoa(nbr->id),
usr.sbin/ripd/neighbor.c
209
nbr->peerid);
usr.sbin/ripd/neighbor.c
212
nbr_stop_timer(nbr);
usr.sbin/ripd/neighbor.c
214
LIST_REMOVE(nbr, entry);
usr.sbin/ripd/neighbor.c
215
LIST_REMOVE(nbr, hash);
usr.sbin/ripd/neighbor.c
217
free(nbr);
usr.sbin/ripd/neighbor.c
221
nbr_act_del(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
225
if (nbr->iface->auth_type == AUTH_CRYPT &&
usr.sbin/ripd/neighbor.c
226
nbr->state != NBR_STA_REQ_RCVD)
usr.sbin/ripd/neighbor.c
227
nbr_failed_new(nbr);
usr.sbin/ripd/neighbor.c
229
log_debug("nbr_act_del: neighbor ID %s, peerid %u", inet_ntoa(nbr->id),
usr.sbin/ripd/neighbor.c
230
nbr->peerid);
usr.sbin/ripd/neighbor.c
233
nbr_set_timer(nbr);
usr.sbin/ripd/neighbor.c
236
clear_list(&nbr->rq_list);
usr.sbin/ripd/neighbor.c
237
clear_list(&nbr->rp_list);
usr.sbin/ripd/neighbor.c
240
struct nbr *
usr.sbin/ripd/neighbor.c
244
struct nbr *nbr;
usr.sbin/ripd/neighbor.c
248
LIST_FOREACH(nbr, head, hash) {
usr.sbin/ripd/neighbor.c
249
if (nbr->peerid == peerid)
usr.sbin/ripd/neighbor.c
250
return (nbr);
usr.sbin/ripd/neighbor.c
256
struct nbr *
usr.sbin/ripd/neighbor.c
259
struct nbr *nbr = NULL;
usr.sbin/ripd/neighbor.c
261
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ripd/neighbor.c
262
if (nbr->id.s_addr == src_ip) {
usr.sbin/ripd/neighbor.c
263
return (nbr);
usr.sbin/ripd/neighbor.c
272
nbr_failed_new(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
281
nbr_failed->addr = nbr->addr;
usr.sbin/ripd/neighbor.c
282
nbr_failed->auth_seq_num = nbr->auth_seq_num;
usr.sbin/ripd/neighbor.c
283
iface = nbr->iface;
usr.sbin/ripd/neighbor.c
326
struct nbr *nbr = arg;
usr.sbin/ripd/neighbor.c
328
if (nbr->state == NBR_STA_DOWN)
usr.sbin/ripd/neighbor.c
329
nbr_del(nbr);
usr.sbin/ripd/neighbor.c
331
nbr_fsm(nbr, NBR_EVT_TIMEOUT);
usr.sbin/ripd/neighbor.c
347
nbr_set_timer(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
354
if (evtimer_add(&nbr->timeout_timer, &tv) == -1)
usr.sbin/ripd/neighbor.c
359
nbr_stop_timer(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
361
if (evtimer_del(&nbr->timeout_timer) == -1)
usr.sbin/ripd/neighbor.c
379
nbr_to_ctl(struct nbr *nbr)
usr.sbin/ripd/neighbor.c
384
memcpy(nctl.name, nbr->iface->name, sizeof(nctl.name));
usr.sbin/ripd/neighbor.c
385
memcpy(&nctl.id, &nbr->id, sizeof(nctl.id));
usr.sbin/ripd/neighbor.c
386
memcpy(&nctl.addr, &nbr->addr, sizeof(nctl.addr));
usr.sbin/ripd/neighbor.c
388
nctl.nbr_state = nbr->state;
usr.sbin/ripd/neighbor.c
389
nctl.iface_state = nbr->iface->state;
usr.sbin/ripd/neighbor.c
392
if (evtimer_pending(&nbr->timeout_timer, &tv)) {
usr.sbin/ripd/neighbor.c
394
if (nbr->state & NBR_STA_DOWN)
usr.sbin/ripd/neighbor.c
401
if (nbr->state == NBR_STA_ACTIVE) {
usr.sbin/ripd/neighbor.c
402
nctl.uptime = now.tv_sec - nbr->uptime;
usr.sbin/ripd/neighbor.c
42
void nbr_set_timer(struct nbr *);
usr.sbin/ripd/neighbor.c
43
void nbr_stop_timer(struct nbr *);
usr.sbin/ripd/neighbor.c
45
void nbr_failed_new(struct nbr *);
usr.sbin/ripd/neighbor.c
48
LIST_HEAD(nbr_head, nbr);
usr.sbin/ripd/neighbor.c
95
nbr_fsm(struct nbr *nbr, enum nbr_event event)
usr.sbin/ripd/packet.c
165
nbr = nbr_find_ip(iface, src.sin_addr.s_addr);
usr.sbin/ripd/packet.c
167
if (nbr == NULL && iface->auth_type == AUTH_CRYPT)
usr.sbin/ripd/packet.c
179
if (nbr == NULL) {
usr.sbin/ripd/packet.c
180
nbr = nbr_new(src.sin_addr.s_addr, iface);
usr.sbin/ripd/packet.c
181
nbr->addr = src.sin_addr;
usr.sbin/ripd/packet.c
183
nbr->port = srcport;
usr.sbin/ripd/packet.c
184
nbr_fsm(nbr, NBR_EVT_REQUEST_RCVD);
usr.sbin/ripd/packet.c
189
recv_request(iface, nbr, buf, len);
usr.sbin/ripd/packet.c
195
if (auth_validate(&buf, &len, iface, nbr, nbr_failed,
usr.sbin/ripd/packet.c
202
if (nbr == NULL) {
usr.sbin/ripd/packet.c
203
nbr = nbr_new(src.sin_addr.s_addr, iface);
usr.sbin/ripd/packet.c
206
nbr->addr = src.sin_addr;
usr.sbin/ripd/packet.c
208
nbr->auth_seq_num = auth_crypt_num;
usr.sbin/ripd/packet.c
209
nbr_fsm(nbr, NBR_EVT_RESPONSE_RCVD);
usr.sbin/ripd/packet.c
211
recv_response(iface, nbr, buf, len);
usr.sbin/ripd/packet.c
96
struct nbr *nbr;
usr.sbin/ripd/ripd.h
162
LIST_HEAD(, nbr) nbr_list;
usr.sbin/ripd/ripe.c
312
struct nbr *nbr;
usr.sbin/ripd/ripe.c
348
if ((nbr = nbr_find_peerid(imsg.hdr.peerid)) ==
usr.sbin/ripd/ripe.c
355
add_entry(&nbr->rq_list, rr);
usr.sbin/ripd/ripe.c
365
if ((nbr = nbr_find_peerid(imsg.hdr.peerid)) ==
usr.sbin/ripd/ripe.c
371
send_request(&nbr->rq_list, NULL, nbr);
usr.sbin/ripd/ripe.c
395
if ((nbr = nbr_find_peerid(imsg.hdr.peerid)) == NULL) {
usr.sbin/ripd/ripe.c
401
add_entry(&nbr->rp_list, rr);
usr.sbin/ripd/ripe.c
414
if ((nbr = nbr_find_peerid(imsg.hdr.peerid)) == NULL) {
usr.sbin/ripd/ripe.c
419
send_response(&nbr->rp_list, NULL, nbr);
usr.sbin/ripd/ripe.c
420
nbr_fsm(nbr, NBR_EVT_RESPONSE_SENT);
usr.sbin/ripd/ripe.c
514
struct nbr *nbr;
usr.sbin/ripd/ripe.c
518
LIST_FOREACH(nbr, &iface->nbr_list, entry) {
usr.sbin/ripd/ripe.c
519
nctl = nbr_to_ctl(nbr);
usr.sbin/ripd/ripe.h
102
int send_request(struct packet_head *, struct iface *, struct nbr *);
usr.sbin/ripd/ripe.h
103
int send_response(struct packet_head *, struct iface *, struct nbr *);
usr.sbin/ripd/ripe.h
119
int auth_validate(u_int8_t **, u_int16_t *, struct iface *, struct nbr *,
usr.sbin/ripd/ripe.h
129
struct nbr *nbr_new(u_int32_t, struct iface *);
usr.sbin/ripd/ripe.h
130
void nbr_del(struct nbr *);
usr.sbin/ripd/ripe.h
132
struct nbr *nbr_find_ip(struct iface *, u_int32_t);
usr.sbin/ripd/ripe.h
133
struct nbr *nbr_find_peerid(u_int32_t);
usr.sbin/ripd/ripe.h
137
int nbr_fsm(struct nbr *, enum nbr_event);
usr.sbin/ripd/ripe.h
139
void nbr_act_del(struct nbr *);
usr.sbin/ripd/ripe.h
144
struct ctl_nbr *nbr_to_ctl(struct nbr *);
usr.sbin/ripd/ripe.h
54
LIST_ENTRY(nbr) entry, hash;
usr.sbin/ripd/ripe.h
97
void recv_request(struct iface *, struct nbr *, u_int8_t *, u_int16_t);
usr.sbin/ripd/ripe.h
98
void recv_response(struct iface *, struct nbr *, u_int8_t *, u_int16_t);