From: Christian Franke <[email protected]> It is quite useful to be able to assert whether specific interfaces have flapped or also to verify that specific interfaces have not flapped.
By having counters for those events and storing the last time of their occurrence, this is made possible. Signed-off-by: Christian Franke <[email protected]> --- zebra/interface.c | 15 +++++++++++++++ zebra/interface.h | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/zebra/interface.c b/zebra/interface.c index 8a9225a..ab0dfb5 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -536,6 +536,11 @@ if_up (struct interface *ifp) struct listnode *next; struct connected *ifc; struct prefix *p; + struct zebra_if *zif; + + zif = ifp->info; + zif->up_count++; + quagga_timestamp(2, zif->up_last, sizeof(zif->up_last)); /* Notify the protocol daemons. */ zebra_interface_up_update (ifp); @@ -569,6 +574,11 @@ if_down (struct interface *ifp) struct listnode *next; struct connected *ifc; struct prefix *p; + struct zebra_if *zif; + + zif = ifp->info; + zif->down_count++; + quagga_timestamp(2, zif->down_last, sizeof(zif->down_last)); /* Notify to the protocol daemons. */ zebra_interface_down_update (ifp); @@ -728,6 +738,11 @@ if_dump_vty (struct vty *vty, struct interface *ifp) vty_out (vty, "down%s", VTY_NEWLINE); } + vty_out (vty, " Link ups: %5u last: %s%s", zebra_if->up_count, + zebra_if->up_last[0] ? zebra_if->up_last : "(never)", VTY_NEWLINE); + vty_out (vty, " Link downs: %5u last: %s%s", zebra_if->down_count, + zebra_if->down_last[0] ? zebra_if->down_last : "(never)", VTY_NEWLINE); + vty_out (vty, " vrf: %u%s", ifp->vrf_id, VTY_NEWLINE); if (ifp->desc) diff --git a/zebra/interface.h b/zebra/interface.h index dbb33c5..a7522bc 100644 --- a/zebra/interface.h +++ b/zebra/interface.h @@ -188,6 +188,12 @@ struct zebra_if /* Installed addresses chains tree. */ struct route_table *ipv4_subnets; + /* Information about up/down changes */ + unsigned int up_count; + char up_last[QUAGGA_TIMESTAMP_LEN]; + unsigned int down_count; + char down_last[QUAGGA_TIMESTAMP_LEN]; + #if defined(HAVE_RTADV) struct rtadvconf rtadv; #endif /* RTADV */ -- 2.7.4 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
