Compute and display SPF execution statistics
Detailed SPF statistics, all around time spent executing various pieces of SPF
such as the SPF algorithm itself, installing routes, pruning unreachable networks
etc.
Reason codes for firing up SPF are:
R - Router LSA, N - Network LSA, S - Summary LSA, ABR - ABR status change,
ASBR - ASBR Status Change, AS - ASBR Summary, M - MaxAge
Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: JR Rivers <jrrivers@cumulusnetworks.com>
Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Reviewed-by: Ayan Banerjee <ayan@cumulusnetworks.com>
Reviewed-by: Paul Jakma <paul@opensourcerouting.org>
diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c
index ef02336..ebcc717 100644
--- a/ospfd/ospf_dump.c
+++ b/ospfd/ospf_dump.c
@@ -247,16 +247,21 @@
#define HOUR_IN_SECONDS (60*MINUTE_IN_SECONDS)
#define DAY_IN_SECONDS (24*HOUR_IN_SECONDS)
#define WEEK_IN_SECONDS (7*DAY_IN_SECONDS)
- unsigned long w, d, h, m, s, ms;
+ unsigned long w, d, h, m, s, ms, us;
if (!t)
return "inactive";
- w = d = h = m = s = ms = 0;
+ w = d = h = m = s = ms = us = 0;
memset (buf, 0, size);
-
- ms = t->tv_usec / 1000;
-
+
+ us = t->tv_usec;
+ if (us >= 1000)
+ {
+ ms = us / 1000;
+ us %= 1000;
+ }
+
if (ms >= 1000)
{
t->tv_sec += ms / 1000;
@@ -297,9 +302,11 @@
snprintf (buf, size, "%ldh%02ldm%02lds", h, m, t->tv_sec);
else if (m)
snprintf (buf, size, "%ldm%02lds", m, t->tv_sec);
- else
+ else if (ms)
snprintf (buf, size, "%ld.%03lds", t->tv_sec, ms);
-
+ else
+ snprintf (buf, size, "%ld usecs", t->tv_usec);
+
return buf;
}