diff options
| author | Mark Stapp <mjs@voltanet.io> | 2020-03-05 14:06:46 -0500 |
|---|---|---|
| committer | Mark Stapp <mjs@voltanet.io> | 2020-03-09 11:12:32 -0400 |
| commit | d0636ead31ccfc9f6c27d02617d5965e3111d4ad (patch) | |
| tree | f1c383042125411fc44acd65febdf43ce1f1de17 /zebra/zebra_vty.c | |
| parent | 4c2a712d9325070e9ec45c90b1dd11d66e88169e (diff) | |
lib, *: add a common time interval formatting api
Add a common api that formats a time interval into a string
with different output for short and longer intervals. We do
this in several places, for cli/ui output.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Diffstat (limited to 'zebra/zebra_vty.c')
| -rw-r--r-- | zebra/zebra_vty.c | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c index 79ce43be93..ccc6e9e46b 100644 --- a/zebra/zebra_vty.c +++ b/zebra/zebra_vty.c @@ -241,25 +241,13 @@ static void vty_show_ip_route_detail(struct vty *vty, struct route_node *rn, vty_out(vty, "\n"); time_t uptime; - struct tm tm; uptime = monotime(NULL); uptime -= re->uptime; - gmtime_r(&uptime, &tm); - vty_out(vty, " Last update "); + frrtime_to_interval(uptime, buf, sizeof(buf)); - if (uptime < ONE_DAY_SECOND) - vty_out(vty, "%02d:%02d:%02d", tm.tm_hour, tm.tm_min, - tm.tm_sec); - else if (uptime < ONE_WEEK_SECOND) - vty_out(vty, "%dd%02dh%02dm", tm.tm_yday, tm.tm_hour, - tm.tm_min); - else - vty_out(vty, "%02dw%dd%02dh", tm.tm_yday / 7, - tm.tm_yday - ((tm.tm_yday / 7) * 7), - tm.tm_hour); - vty_out(vty, " ago\n"); + vty_out(vty, " Last update %s ago\n", buf); if (show_ng) vty_out(vty, " Nexthop Group ID: %u\n", re->nhe_id); @@ -402,14 +390,15 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn, json_object *json_route = NULL; json_object *json_labels = NULL; time_t uptime; - struct tm tm; struct vrf *vrf = NULL; rib_dest_t *dest = rib_dest_from_rnode(rn); struct nexthop_group *nhg; + char up_str[MONOTIME_STRLEN]; uptime = monotime(NULL); uptime -= re->uptime; - gmtime_r(&uptime, &tm); + + frrtime_to_interval(uptime, up_str, sizeof(up_str)); /* If showing fib information, use the fib view of the * nexthops. @@ -474,18 +463,8 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn, json_object_int_add(json_route, "internalNextHopActiveNum", nexthop_group_active_nexthop_num( &(re->nhe->nhg))); - if (uptime < ONE_DAY_SECOND) - sprintf(buf, "%02d:%02d:%02d", tm.tm_hour, tm.tm_min, - tm.tm_sec); - else if (uptime < ONE_WEEK_SECOND) - sprintf(buf, "%dd%02dh%02dm", tm.tm_yday, tm.tm_hour, - tm.tm_min); - else - sprintf(buf, "%02dw%dd%02dh", tm.tm_yday / 7, - tm.tm_yday - ((tm.tm_yday / 7) * 7), - tm.tm_hour); - json_object_string_add(json_route, "uptime", buf); + json_object_string_add(json_route, "uptime", up_str); for (ALL_NEXTHOPS_PTR(nhg, nexthop)) { json_nexthop = json_object_new_object(); @@ -774,17 +753,7 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn, sizeof(buf), 1)); } - if (uptime < ONE_DAY_SECOND) - vty_out(vty, ", %02d:%02d:%02d", tm.tm_hour, - tm.tm_min, tm.tm_sec); - else if (uptime < ONE_WEEK_SECOND) - vty_out(vty, ", %dd%02dh%02dm", tm.tm_yday, - tm.tm_hour, tm.tm_min); - else - vty_out(vty, ", %02dw%dd%02dh", tm.tm_yday / 7, - tm.tm_yday - ((tm.tm_yday / 7) * 7), - tm.tm_hour); - vty_out(vty, "\n"); + vty_out(vty, ", %s\n", up_str); } } |
