diff options
| author | Chirag Shah <chirag@cumulusnetworks.com> | 2020-04-09 10:28:43 -0700 |
|---|---|---|
| committer | Chirag Shah <chirag@cumulusnetworks.com> | 2020-04-22 08:55:07 -0700 |
| commit | 8d0c8ff55a44bf2a3cba36a88b38670a83f8bafd (patch) | |
| tree | 838cd3fb8b8c70c0bd9ebfd536fe80653fba7034 /lib/yang_wrappers.c | |
| parent | e4306dc6953111e954554efe22b6f96b5afc9684 (diff) | |
lib: yang wrapper for date-and-time
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'lib/yang_wrappers.c')
| -rw-r--r-- | lib/yang_wrappers.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/yang_wrappers.c b/lib/yang_wrappers.c index 7d94a2f744..c31ba3fcc0 100644 --- a/lib/yang_wrappers.c +++ b/lib/yang_wrappers.c @@ -24,6 +24,7 @@ #include "northbound.h" #include "printfrr.h" #include "nexthop.h" +#include "printfrr.h" static const char *yang_get_default_value(const char *xpath) { @@ -1138,6 +1139,32 @@ void yang_str2mac(const char *value, struct ethaddr *mac) (void)prefix_str2mac(value, mac); } +struct yang_data *yang_data_new_date_and_time(const char *xpath, time_t time) +{ + struct tm tm; + char timebuf[MONOTIME_STRLEN]; + struct timeval _time, time_real; + char *ts_dot; + uint16_t buflen; + + _time.tv_sec = time; + _time.tv_usec = 0; + monotime_to_realtime(&_time, &time_real); + + gmtime_r(&time_real.tv_sec, &tm); + + /* rfc-3339 format */ + strftime(timebuf, sizeof(timebuf), "%Y-%m-%dT%H:%M:%S", &tm); + buflen = strlen(timebuf); + ts_dot = timebuf + buflen; + + /* microseconds and appends Z */ + snprintfrr(ts_dot, sizeof(timebuf) - buflen, ".%06luZ", + (unsigned long)time_real.tv_usec); + + return yang_data_new(xpath, timebuf); +} + const char *yang_nexthop_type2str(uint32_t ntype) { switch (ntype) { |
