int nsm_kill_nbr (struct ospf_neighbor *nbr) { /* call it here because we cannot call it from ospf_nsm_event */ nsm_change_status (nbr, NSM_Down); /* Reset neighbor. */ nsm_reset_nbr (nbr); if (nbr->oi->type == OSPF_IFTYPE_NBMA && nbr->nbr_static != NULL) { struct ospf_nbr_static *nbr_static = nbr->nbr_static; nbr_static->neighbor = NULL; nbr_static->state_change = nbr->state_change; nbr->nbr_static = NULL; OSPF_POLL_TIMER_ON (nbr_static->t_poll, ospf_poll_timer, nbr_static->v_poll); if (IS_DEBUG_OSPF (nsm, NSM_EVENTS)) zlog_info ("NSM[%s:%s]: Down (PollIntervalTimer scheduled)", IF_NAME (nbr->oi), inet_ntoa (nbr->address.u.prefix4)); } /* Delete neighbor from interface. */ ospf_nbr_delete (nbr); return 0; }
int nsm_oneway_received (struct ospf_neighbor *nbr) { /* Clear neighbor. */ nsm_reset_nbr (nbr); return 0; }
int nsm_seq_number_mismatch (struct ospf_neighbor *nbr) { /* Clear neighbor. */ nsm_reset_nbr (nbr); return 0; }
int nsm_bad_ls_req (struct ospf_neighbor *nbr) { /* Clear neighbor. */ nsm_reset_nbr (nbr); return 0; }
int nsm_start (struct ospf_neighbor *nbr) { nsm_reset_nbr (nbr); if (nbr->nbr_nbma) OSPF_POLL_TIMER_OFF (nbr->nbr_nbma->t_poll); OSPF_NSM_TIMER_OFF (nbr->t_inactivity); OSPF_NSM_TIMER_ON (nbr->t_inactivity, ospf_inactivity_timer, nbr->v_inactivity); return 0; }