summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_dump.c
diff options
context:
space:
mode:
authorDinesh G Dutt <ddutt@cumulusnetworks.com>2014-09-30 12:53:28 -0700
committerPaul Jakma <paul@quagga.net>2014-11-11 17:25:09 +0000
commit50f38b3500a6af6e1b0d1389d65c62d70c41e8c2 (patch)
tree0525b14ce3c53f891cd7f5a00fcf954f4893a99f /ospfd/ospf_dump.c
parent88d37b902bc8127379d3293b9671aa6a11479c23 (diff)
downloadquagga-50f38b3500a6af6e1b0d1389d65c62d70c41e8c2.tar.bz2
quagga-50f38b3500a6af6e1b0d1389d65c62d70c41e8c2.tar.xz
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>
Diffstat (limited to 'ospfd/ospf_dump.c')
-rw-r--r--ospfd/ospf_dump.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c
index ef023366..ebcc717f 100644
--- a/ospfd/ospf_dump.c
+++ b/ospfd/ospf_dump.c
@@ -247,16 +247,21 @@ ospf_timeval_dump (struct timeval *t, char *buf, size_t size)
#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 @@ ospf_timeval_dump (struct timeval *t, char *buf, size_t size)
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;
}