]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Update last reset reason on interface down or neighbor addr loss.
authorDinesh G Dutt <ddutt@cumulusnetworks.com>
Fri, 22 Apr 2016 22:15:25 +0000 (15:15 -0700)
committerDinesh G Dutt <ddutt@cumulusnetworks.com>
Mon, 25 Apr 2016 15:54:44 +0000 (08:54 -0700)
Ticket:
Reviewed By:
Testing Done:

For interface-based peering, we don't update the reset reason to be
interface down. Similarly, we don't update the reason to be loss of
neighbor address (maybe due to RA loss). This patch addresses these
limitations.

bgpd/bgp_fsm.c
bgpd/bgp_zebra.c
bgpd/bgpd.h

index 871467343c1f81460d4471701f954f00a7714392..2373bff104fa2b3e41f33e94da82115c02308574 100644 (file)
@@ -491,7 +491,9 @@ const char *peer_down_str[] =
   "Multihop config change",
   "NSF peer closed the session",
   "Intf peering v6only config change",
-  "BFD down received"
+  "BFD down received",
+  "Interface down",
+  "Neighbor address lost"
 };
 
 static int
index 94a0a566b562927e019f1ef7a1fcec84898f2c77..43653a36f845f06308c85f640f62e2f094513ca4 100644 (file)
@@ -222,6 +222,7 @@ bgp_nbr_connected_delete (struct bgp *bgp, struct nbr_connected *ifc, int del)
     {
       if (peer->conf_if && (strcmp (peer->conf_if, ifc->ifp->name) == 0))
         {
+          peer->last_reset = PEER_DOWN_NBR_ADDR_DEL;
           BGP_EVENT_ADD (peer, BGP_Stop);
         }
     }
@@ -344,7 +345,10 @@ bgp_interface_down (int command, struct zclient *zclient, zebra_size_t length,
           continue;
 
         if (ifp == peer->nexthop.ifp)
-          BGP_EVENT_ADD (peer, BGP_Stop);
+          {
+            BGP_EVENT_ADD (peer, BGP_Stop);
+            peer->last_reset = PEER_DOWN_IF_DOWN;
+          }
       }
   }
 
index 3fe86e4eb646942c3b5900151d369f1445e6b13e..a07bd389f5924c6efa2d82e1a830c820b00821d7 100644 (file)
@@ -834,6 +834,8 @@ struct peer
 #define PEER_DOWN_NSF_CLOSE_SESSION     22 /* NSF tcp session close */
 #define PEER_DOWN_V6ONLY_CHANGE         23 /* if-based peering v6only toggled */
 #define PEER_DOWN_BFD_DOWN              24 /* BFD down */
+#define PEER_DOWN_IF_DOWN               25 /* Interface down */
+#define PEER_DOWN_NBR_ADDR_DEL          26 /* Peer address lost */
 unsigned long last_reset_cause_size;
 u_char last_reset_cause[BGP_MAX_PACKET_SIZE];