]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospf6d: fix linkdown handling
authorDinesh Dutt <ddutt@cumulusnetworks.com>
Sat, 24 Aug 2013 07:55:57 +0000 (07:55 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Fri, 8 Nov 2013 02:15:43 +0000 (18:15 -0800)
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>
ospf6d/ospf6_interface.c

index 94b599be5641000f962a8145110a5d58e226f039..d1f5cba1c30527edae30f87a38ee8c9ee5988855 100644 (file)
@@ -316,7 +316,7 @@ ospf6_interface_state_update (struct interface *ifp)
   if (oi->area == NULL)
     return;
 
-  if (if_is_up (ifp))
+  if (if_is_operative (ifp))
     thread_add_event (master, interface_up, oi, 0);
   else
     thread_add_event (master, interface_down, oi, 0);
@@ -625,7 +625,7 @@ interface_up (struct thread *thread)
                oi->interface->name);
 
   /* check physical interface is up */
-  if (! if_is_up (oi->interface))
+  if (! if_is_operative (oi->interface))
     {
       if (IS_OSPF6_DEBUG_INTERFACE)
         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";
 
   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);
   vty_out (vty, "  Interface ID: %d%s", ifp->ifindex, VNL);