diff options
Diffstat (limited to 'ospfd/ospf_ism.c')
| -rw-r--r-- | ospfd/ospf_ism.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ospfd/ospf_ism.c b/ospfd/ospf_ism.c index 9f795ea918..878ab725bd 100644 --- a/ospfd/ospf_ism.c +++ b/ospfd/ospf_ism.c @@ -244,6 +244,10 @@ void ospf_hello_timer(struct event *thread) oi = EVENT_ARG(thread); oi->t_hello = NULL; + /* Check if the GR hello-delay is active. */ + if (oi->gr.hello_delay.t_grace_send) + return; + if (IS_DEBUG_OSPF(ism, ISM_TIMERS)) zlog_debug("ISM[%s]: Timer (Hello timer expire)", IF_NAME(oi)); @@ -282,6 +286,7 @@ static void ism_timer_set(struct ospf_interface *oi) EVENT_OFF(oi->t_hello); EVENT_OFF(oi->t_wait); EVENT_OFF(oi->t_ls_ack); + EVENT_OFF(oi->gr.hello_delay.t_grace_send); break; case ISM_Loopback: /* In this state, the interface may be looped back and will be @@ -289,6 +294,7 @@ static void ism_timer_set(struct ospf_interface *oi) EVENT_OFF(oi->t_hello); EVENT_OFF(oi->t_wait); EVENT_OFF(oi->t_ls_ack); + EVENT_OFF(oi->gr.hello_delay.t_grace_send); break; case ISM_Waiting: /* The router is trying to determine the identity of DRouter and @@ -361,7 +367,7 @@ static int ism_interface_up(struct ospf_interface *oi) /* Otherwise, the state transitions to Waiting. */ next_state = ISM_Waiting; - if (oi->type == OSPF_IFTYPE_NBMA) + if (OSPF_IF_NON_BROADCAST(oi)) ospf_nbr_nbma_if_update(oi->ospf, oi); /* ospf_ism_event (t); */ |
