]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: yang wrapper for date-and-time 6249/head
authorChirag Shah <chirag@cumulusnetworks.com>
Thu, 9 Apr 2020 17:28:43 +0000 (10:28 -0700)
committerChirag Shah <chirag@cumulusnetworks.com>
Wed, 22 Apr 2020 15:55:07 +0000 (08:55 -0700)
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
lib/yang_wrappers.c
lib/yang_wrappers.h

index 7d94a2f744b804fd3744551f95e8cfb7cc8ab309..c31ba3fcc0080113e539a055021738400a4c63fc 100644 (file)
@@ -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) {
index d853b61ae1c12a8a26974c21364b1e09b311219f..16d0a2d09dd6fe117a682e907fb1a4253294b734 100644 (file)
@@ -180,6 +180,11 @@ extern struct yang_data *yang_data_new_mac(const char *xpath,
                                           const struct ethaddr *mac);
 extern void yang_str2mac(const char *value, struct ethaddr *mac);
 
+/*data-and-time */
+extern struct yang_data *yang_data_new_date_and_time(const char *xpath,
+                                                    time_t time);
+
+/* nexthop enum2str */
 extern const char *yang_nexthop_type2str(uint32_t ntype);
 
 #endif /* _FRR_NORTHBOUND_WRAPPERS_H_ */