mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-11-03 17:52:44 +00:00
[ospfd] Additional NSM neighbour state change stats/information
2006-07-25 Paul Jakma <paul.jakma@sun.com> * ospf_neigbor.h: (struct ospf_neighbor) Add some additional neighbour state statistics fields, timestamps for progressive and regressive state changes, and pointer to event string for the latter state change. * ospf_nsm.c: (nsm_notice_state_change) Update new state changs history as required. * ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above new per-neighbour state change stats.
This commit is contained in:
parent
cc8b13a00b
commit
3fed4160cd
@ -1,3 +1,14 @@
|
||||
2006-07-25 Paul Jakma <paul.jakma@sun.com>
|
||||
|
||||
* ospf_neigbor.h: (struct ospf_neighbor) Add some additional
|
||||
neighbour state statistics fields, timestamps for progressive
|
||||
and regressive state changes, and pointer to event string
|
||||
for the latter state change.
|
||||
* ospf_nsm.c: (nsm_notice_state_change) Update new state changs
|
||||
history as required.
|
||||
* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above
|
||||
new per-neighbour state change stats.
|
||||
|
||||
2006-07-10 Paul Jakma <paul.jakma@sun.com>
|
||||
|
||||
* ospf_nsm.c: (nsm_change_state) call nsm_clear_adj for all
|
||||
|
||||
@ -80,11 +80,14 @@ struct ospf_neighbor
|
||||
struct thread *t_ls_upd;
|
||||
struct thread *t_hello_reply;
|
||||
|
||||
/* Statistics Field */
|
||||
u_int32_t state_change;
|
||||
struct timeval ts_last_change;
|
||||
const char *last_event_str;
|
||||
/* NBMA configured neighbour */
|
||||
struct ospf_nbr_nbma *nbr_nbma;
|
||||
|
||||
/* Statistics */
|
||||
struct timeval ts_last_progress; /* last advance of NSM */
|
||||
struct timeval ts_last_regress; /* last regressive NSM change */
|
||||
const char *last_regress_str; /* Event which last regressed NSM */
|
||||
u_int32_t state_change; /* NSM state change counter */
|
||||
};
|
||||
|
||||
/* Macros. */
|
||||
|
||||
@ -615,8 +615,14 @@ nsm_notice_state_change (struct ospf_neighbor *nbr, int next_state, int event)
|
||||
LOOKUP (ospf_nsm_state_msg, next_state),
|
||||
ospf_nsm_event_str [event]);
|
||||
|
||||
nbr->ts_last_change = recent_time;
|
||||
nbr->last_event_str = ospf_nsm_event_str [event];
|
||||
/* Advance in NSM */
|
||||
if (next_state > nbr->state)
|
||||
nbr->ts_last_progress = recent_time;
|
||||
else /* regression in NSM */
|
||||
{
|
||||
nbr->ts_last_regress = recent_time;
|
||||
nbr->last_regress_str = ospf_nsm_event_str [event];
|
||||
}
|
||||
|
||||
#ifdef HAVE_SNMP
|
||||
/* Terminal state or regression */
|
||||
|
||||
@ -3155,12 +3155,21 @@ show_ip_ospf_neighbor_detail_sub (struct vty *vty, struct ospf_interface *oi,
|
||||
nbr->priority, LOOKUP (ospf_nsm_state_msg, nbr->state));
|
||||
/* Show state changes. */
|
||||
vty_out (vty, " %d state changes%s", nbr->state_change, VTY_NEWLINE);
|
||||
if (nbr->ts_last_change.tv_sec || nbr->ts_last_change.tv_usec)
|
||||
if (nbr->ts_last_progress.tv_sec || nbr->ts_last_progress.tv_usec)
|
||||
{
|
||||
struct timeval res = tv_sub (recent_time, nbr->ts_last_change);
|
||||
vty_out (vty, " Last state change %s ago, due to %s%s",
|
||||
struct timeval res = tv_sub (recent_time, nbr->ts_last_progress);
|
||||
vty_out (vty, " Most recent state change statistics:%s",
|
||||
VTY_NEWLINE);
|
||||
vty_out (vty, " Progressive change %s ago%s",
|
||||
ospf_timeval_dump (&res, timebuf, sizeof(timebuf)),
|
||||
(nbr->last_event_str ? nbr->last_event_str : "??"),
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
if (nbr->ts_last_regress.tv_sec || nbr->ts_last_regress.tv_usec)
|
||||
{
|
||||
struct timeval res = tv_sub (recent_time, nbr->ts_last_regress);
|
||||
vty_out (vty, " Regressive change %s ago, due to %s%s",
|
||||
ospf_timeval_dump (&res, timebuf, sizeof(timebuf)),
|
||||
(nbr->last_regress_str ? nbr->last_regress_str : "??"),
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
/* Show Designated Rotuer ID. */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user