diff options
author | Paul Jakma <paul@opensourcerouting.org> | 2015-05-26 15:19:38 +0100 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-06-21 12:31:53 +0100 |
commit | 84c3840c7157438b5cb2e324d184ca08ac07fb41 (patch) | |
tree | 1022dc746e3c2f6498ebc94a632ce3f4f2f0c32e /bgpd | |
parent | 55cfa2f190620f7c711944637659bc208970324d (diff) | |
download | quagga-84c3840c7157438b5cb2e324d184ca08ac07fb41.tar.bz2 quagga-84c3840c7157438b5cb2e324d184ca08ac07fb41.tar.xz |
bgpd: peer_uptime overflows after 1 year
* bgpd.c: (peer_uptime) Wraps after 1 year, and doesn't indicate years.
Fix. Assume a year is 365 days, for an easy life.
Fixes: Bug #836
Reported-by: Rolf Hanßen
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'bgpd')
-rw-r--r-- | bgpd/bgpd.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 4de854e4..7a0274c0 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -4699,10 +4699,11 @@ peer_uptime (time_t uptime2, char *buf, size_t len) uptime1 = bgp_clock (); uptime1 -= uptime2; tm = gmtime (&uptime1); - + /* Making formatted timer strings. */ #define ONE_DAY_SECOND 60*60*24 -#define ONE_WEEK_SECOND 60*60*24*7 +#define ONE_WEEK_SECOND ONE_DAY_SECOND*7 +#define ONE_YEAR_SECOND ONE_DAY_SECOND*365 if (uptime1 < ONE_DAY_SECOND) snprintf (buf, len, "%02d:%02d:%02d", @@ -4710,9 +4711,13 @@ peer_uptime (time_t uptime2, char *buf, size_t len) else if (uptime1 < ONE_WEEK_SECOND) snprintf (buf, len, "%dd%02dh%02dm", tm->tm_yday, tm->tm_hour, tm->tm_min); - else + else if (uptime1 < ONE_YEAR_SECOND) snprintf (buf, len, "%02dw%dd%02dh", tm->tm_yday/7, tm->tm_yday - ((tm->tm_yday/7) * 7), tm->tm_hour); + else + snprintf (buf, len, "%02dy%02dw%dd", + tm->tm_year - 70, tm->tm_yday/7, + tm->tm_yday - ((tm->tm_yday/7) * 7)); return buf; } |