mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 22:50:14 +00:00
zebra: count iface up/down events and keep last time of their occurrence
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 <chris@opensourcerouting.org> Acked-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
This commit is contained in:
parent
ae616d60b5
commit
55ce4d3add
@ -835,6 +835,12 @@ if_down_del_nbr_connected (struct interface *ifp)
|
||||
void
|
||||
if_up (struct interface *ifp)
|
||||
{
|
||||
struct zebra_if *zif;
|
||||
|
||||
zif = ifp->info;
|
||||
zif->up_count++;
|
||||
quagga_timestamp (2, zif->up_last, sizeof (zif->up_last));
|
||||
|
||||
/* Notify the protocol daemons. */
|
||||
if (ifp->ptm_enable && (ifp->ptm_status == ZEBRA_PTM_STATUS_DOWN)) {
|
||||
zlog_warn("%s: interface %s hasn't passed ptm check\n", __func__,
|
||||
@ -859,6 +865,12 @@ if_up (struct interface *ifp)
|
||||
void
|
||||
if_down (struct interface *ifp)
|
||||
{
|
||||
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);
|
||||
|
||||
@ -1035,6 +1047,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);
|
||||
|
||||
zebra_ptm_show_status(vty, ifp);
|
||||
|
||||
vrf = vrf_lookup(ifp->vrf_id);
|
||||
|
@ -189,6 +189,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 /* HAVE_RTADV */
|
||||
|
Loading…
Reference in New Issue
Block a user