Lines Matching defs:nbr
40 void ls_retrans_list_insert(struct nbr *, struct lsa_entry *);
41 void ls_retrans_list_remove(struct nbr *, struct lsa_entry *);
45 lsa_flood(struct iface *iface, struct nbr *originator, struct lsa_hdr *lsa_hdr,
48 struct nbr *nbr;
53 LIST_FOREACH(nbr, &iface->nbr_list, entry) {
54 if (nbr == iface->self)
56 if (!(nbr->state & NBR_STA_FLOOD))
63 while ((le = ls_retrans_list_get(nbr, lsa_hdr)))
64 ls_retrans_list_free(nbr, le);
66 if (!(nbr->state & NBR_STA_FULL) &&
67 (le = ls_req_list_get(nbr, lsa_hdr)) != NULL) {
71 ls_req_list_free(nbr, le);
78 ls_req_list_free(nbr, le);
83 if (nbr == originator) {
95 ls_retrans_list_add(nbr, data, iface->rxmt_interval, 0);
124 LIST_FOREACH(nbr, &iface->nbr_list, entry) {
125 if (nbr == iface->self)
127 if (!(nbr->state & NBR_STA_FLOOD))
129 if (!TAILQ_EMPTY(&nbr->ls_retrans_list)) {
130 le = TAILQ_LAST(&nbr->ls_retrans_list,
137 ls_retrans_list_add(nbr, data, 0, 1);
234 recv_ls_update(struct nbr *nbr, char *buf, u_int16_t len)
241 "neighbor ID %s (%s)", inet_ntoa(nbr->id),
242 nbr->iface->name);
250 switch (nbr->state) {
258 "neighbor ID %s (%s)", nbr_state_name(nbr->state),
259 inet_ntoa(nbr->id), nbr->iface->name);
267 "neighbor ID %s (%s)", inet_ntoa(nbr->id),
268 nbr->iface->name);
274 "neighbor ID %s (%s)", inet_ntoa(nbr->id),
275 nbr->iface->name);
278 ospfe_imsg_compose_rde(IMSG_LS_UPD, nbr->peerid, 0,
285 "neighbor ID %s (%s)", inet_ntoa(nbr->id),
286 nbr->iface->name);
297 ls_retrans_list_add(struct nbr *nbr, struct lsa_hdr *lsa,
314 ls_retrans_list_insert(nbr, le);
316 if (!evtimer_pending(&nbr->ls_retrans_timer, NULL)) {
318 tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
320 if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
326 ls_retrans_list_del(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
330 if ((le = ls_retrans_list_get(nbr, lsa_hdr)) == NULL)
341 ls_retrans_list_free(nbr, le);
349 ls_retrans_list_get(struct nbr *nbr, struct lsa_hdr *lsa_hdr)
353 TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
363 ls_retrans_list_insert(struct nbr *nbr, struct lsa_entry *new)
368 TAILQ_FOREACH(le, &nbr->ls_retrans_list, entry) {
372 nbr->ls_ret_cnt++;
378 TAILQ_INSERT_TAIL(&nbr->ls_retrans_list, new, entry);
379 nbr->ls_ret_cnt++;
383 ls_retrans_list_remove(struct nbr *nbr, struct lsa_entry *le)
393 if (TAILQ_FIRST(&nbr->ls_retrans_list) == le &&
394 evtimer_pending(&nbr->ls_retrans_timer, NULL))
397 TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
398 nbr->ls_ret_cnt--;
400 if (reset && TAILQ_FIRST(&nbr->ls_retrans_list)) {
401 if (evtimer_del(&nbr->ls_retrans_timer) == -1)
405 tv.tv_sec = TAILQ_FIRST(&nbr->ls_retrans_list)->le_when;
407 if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
413 ls_retrans_list_free(struct nbr *nbr, struct lsa_entry *le)
415 ls_retrans_list_remove(nbr, le);
417 lsa_cache_put(le->le_ref, nbr);
422 ls_retrans_list_clr(struct nbr *nbr)
426 while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
427 ls_retrans_list_free(nbr, le);
429 nbr->ls_ret_cnt = 0;
438 struct nbr *nbr = bula;
445 if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL)
453 if (nbr->iface->self == nbr) {
459 if (le->le_oneshot && nbr->iface->state & IF_STA_DRORBDR)
461 else if (nbr->iface->state & IF_STA_DRORBDR) {
466 lsa_flood(nbr->iface, nbr, &le->le_ref->hdr,
468 ls_retrans_list_free(nbr, le);
471 } else if (nbr->iface->type == IF_TYPE_POINTOPOINT)
472 memcpy(&addr, &nbr->addr, sizeof(addr));
476 memcpy(&addr, &nbr->addr, sizeof(addr));
478 if ((buf = prepare_ls_update(nbr->iface)) == NULL) {
483 while ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL &&
491 if (add_ls_update(buf, nbr->iface, le->le_ref->data,
497 inet_ntoa(nbr->id), nbr->iface->name);
498 TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
499 nbr->ls_ret_cnt--;
500 le->le_when = nbr->iface->rxmt_interval;
501 ls_retrans_list_insert(nbr, le);
507 ls_retrans_list_free(nbr, le);
509 TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry);
510 nbr->ls_ret_cnt--;
511 le->le_when = nbr->iface->rxmt_interval;
512 ls_retrans_list_insert(nbr, le);
516 send_ls_update(buf, nbr->iface, addr, nlsa);
521 if ((le = TAILQ_FIRST(&nbr->ls_retrans_list)) != NULL) {
525 if (evtimer_add(&nbr->ls_retrans_timer, &tv) == -1)
609 lsa_cache_put(struct lsa_ref *ref, struct nbr *nbr)
615 ospfe_imsg_compose_rde(IMSG_LS_MAXAGE, nbr->peerid, 0,