ospf6d: fix linkdown handling

Ensure OSPFv3 handles link down even correctly.

OSPFv3 checks only the administrative status of a link instead of its
operative status. This prevents it up from detecting a real link down
event and reacting appropriately. Only protocol timer timeouts make it
detect a link down eventually. This patch makes it look for the operative
status of a link instead of admin status.

Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>
Reviewed-by: James Li <jli at cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
Dinesh Dutt 2013-08-24 07:55:57 +00:00 committed by David Lamparter
parent b81e97a8a7
commit e7ad6b20d7

View File

@ -316,7 +316,7 @@ ospf6_interface_state_update (struct interface *ifp)
if (oi->area == NULL) if (oi->area == NULL)
return; return;
if (if_is_up (ifp)) if (if_is_operative (ifp))
thread_add_event (master, interface_up, oi, 0); thread_add_event (master, interface_up, oi, 0);
else else
thread_add_event (master, interface_down, oi, 0); thread_add_event (master, interface_down, oi, 0);
@ -625,7 +625,7 @@ interface_up (struct thread *thread)
oi->interface->name); oi->interface->name);
/* check physical interface is up */ /* check physical interface is up */
if (! if_is_up (oi->interface)) if (! if_is_operative (oi->interface))
{ {
if (IS_OSPF6_DEBUG_INTERFACE) if (IS_OSPF6_DEBUG_INTERFACE)
zlog_debug ("Interface %s is down, can't execute [InterfaceUp]", zlog_debug ("Interface %s is down, can't execute [InterfaceUp]",
@ -779,7 +779,7 @@ ospf6_interface_show (struct vty *vty, struct interface *ifp)
type = "UNKNOWN"; type = "UNKNOWN";
vty_out (vty, "%s is %s, type %s%s", vty_out (vty, "%s is %s, type %s%s",
ifp->name, updown[if_is_up (ifp)], type, ifp->name, updown[if_is_operative (ifp)], type,
VNL); VNL);
vty_out (vty, " Interface ID: %d%s", ifp->ifindex, VNL); vty_out (vty, " Interface ID: %d%s", ifp->ifindex, VNL);