summaryrefslogtreecommitdiff
path: root/zebra/zebra_vty.c
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2020-03-05 14:06:46 -0500
committerMark Stapp <mjs@voltanet.io>2020-03-09 11:12:32 -0400
commitd0636ead31ccfc9f6c27d02617d5965e3111d4ad (patch)
treef1c383042125411fc44acd65febdf43ce1f1de17 /zebra/zebra_vty.c
parent4c2a712d9325070e9ec45c90b1dd11d66e88169e (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.c45
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);
}
}