diff options
author | Mark Stapp <mjs@voltanet.io> | 2019-07-10 16:16:59 +0200 |
---|---|---|
committer | Mark Stapp <mjs@voltanet.io> | 2019-07-10 16:16:59 +0200 |
commit | c9049b920fc1ee2965f43f12816dfd1c5991fbe2 (patch) | |
tree | 51e5948d9dde774691abb58a7472a5574bf97637 | |
parent | Merge pull request #4657 from qlyoung/cleanup-protonum-vrrrrrrrrrrrrrrrrrrrrr... (diff) | |
download | frr-c9049b920fc1ee2965f43f12816dfd1c5991fbe2.tar.xz frr-c9049b920fc1ee2965f43f12816dfd1c5991fbe2.zip |
lib,zebra: avoid use of ctime in monotime api
Replace a call to ctime with ctime_r in the monotime module;
update the callers of the monotime api.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
-rw-r--r-- | lib/monotime.h | 7 | ||||
-rw-r--r-- | zebra/zebra_vxlan.c | 26 |
2 files changed, 17 insertions, 16 deletions
diff --git a/lib/monotime.h b/lib/monotime.h index 6aac966ea..ca27c45dc 100644 --- a/lib/monotime.h +++ b/lib/monotime.h @@ -84,7 +84,10 @@ static inline int64_t monotime_until(const struct timeval *ref, return (int64_t)tv.tv_sec * 1000000LL + tv.tv_usec; } -static inline char *time_to_string(time_t ts) +/* Char buffer size for time-to-string api */ +#define MONOTIME_STRLEN 32 + +static inline char *time_to_string(time_t ts, char *buf) { struct timeval tv; time_t tbuf; @@ -92,7 +95,7 @@ static inline char *time_to_string(time_t ts) monotime(&tv); tbuf = time(NULL) - (tv.tv_sec - ts); - return ctime(&tbuf); + return ctime_r(&tbuf, buf); } #ifdef __cplusplus diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c index 222d91105..d551fa884 100644 --- a/zebra/zebra_vxlan.c +++ b/zebra/zebra_vxlan.c @@ -732,6 +732,7 @@ static void zvni_print_neigh(zebra_neigh_t *n, void *ctxt, json_object *json) bool flags_present = false; struct zebra_vrf *zvrf = NULL; struct timeval detect_start_time = {0, 0}; + char timebuf[MONOTIME_STRLEN]; zvrf = zebra_vrf_get_evpn(); if (!zvrf) @@ -786,19 +787,17 @@ static void zvni_print_neigh(zebra_neigh_t *n, void *ctxt, json_object *json) if (CHECK_FLAG(n->flags, ZEBRA_NEIGH_DUPLICATE)) { vty_out(vty, " Duplicate, detected at %s", - time_to_string(n->dad_dup_detect_time)); + time_to_string(n->dad_dup_detect_time, + timebuf)); } else if (n->dad_count) { monotime_since(&n->detect_start_time, &detect_start_time); if (detect_start_time.tv_sec <= zvrf->dad_time) { - char *buf = time_to_string( - n->detect_start_time.tv_sec); - char tmp_buf[30]; - - strlcpy(tmp_buf, buf, sizeof(tmp_buf)); + time_to_string(n->detect_start_time.tv_sec, + timebuf); vty_out(vty, " Duplicate detection started at %s, detection count %u\n", - tmp_buf, n->dad_count); + timebuf, n->dad_count); } } } else { @@ -1179,6 +1178,7 @@ static void zvni_print_mac(zebra_mac_t *mac, void *ctxt, json_object *json) char buf2[INET6_ADDRSTRLEN]; struct zebra_vrf *zvrf; struct timeval detect_start_time = {0, 0}; + char timebuf[MONOTIME_STRLEN]; zvrf = zebra_vrf_get_evpn(); if (!zvrf) @@ -1309,19 +1309,17 @@ static void zvni_print_mac(zebra_mac_t *mac, void *ctxt, json_object *json) if (CHECK_FLAG(mac->flags, ZEBRA_MAC_DUPLICATE)) { vty_out(vty, " Duplicate, detected at %s", - time_to_string(mac->dad_dup_detect_time)); + time_to_string(mac->dad_dup_detect_time, + timebuf)); } else if (mac->dad_count) { monotime_since(&mac->detect_start_time, &detect_start_time); if (detect_start_time.tv_sec <= zvrf->dad_time) { - char *buf = time_to_string( - mac->detect_start_time.tv_sec); - char tmp_buf[30]; - - strlcpy(tmp_buf, buf, sizeof(tmp_buf)); + time_to_string(mac->detect_start_time.tv_sec, + timebuf); vty_out(vty, " Duplicate detection started at %s, detection count %u\n", - tmp_buf, mac->dad_count); + timebuf, mac->dad_count); } } |