Move other clock string generation to olsr_clock.c
authorHenning Rogge <hrogge@googlemail.com>
Fri, 25 Feb 2011 17:23:38 +0000 (18:23 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Fri, 25 Feb 2011 17:23:38 +0000 (18:23 +0100)
src/duplicate_set.c
src/hna_set.c
src/link_set.c
src/mid_set.c
src/neighbor_table.c
src/olsr_clock.c
src/olsr_clock.h
src/olsr_spf.c
src/olsr_timer.c
src/olsr_timer.h
src/tc_set.c

index 20fb521..ede65b4 100644 (file)
@@ -245,23 +245,23 @@ olsr_print_duplicate_table(void)
   const int ipwidth = olsr_cnf->ip_version == AF_INET ? 15 : 30;
 
   OLSR_INFO(LOG_DUPLICATE_SET, "\n--- %s ------------------------------------------------- DUPLICATE SET (forwarding)\n\n",
-            olsr_timer_getWallclockString(&timebuf));
+            olsr_clock_getWallclockString(&timebuf));
   OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %8s %s\n", ipwidth, "Node IP", "DupArray", "VTime");
 
   OLSR_FOR_ALL_FORWARD_DUP_ENTRIES(entry, iterator) {
     OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %08x %s\n",
                  ipwidth, olsr_ip_to_string(&addrbuf, entry->avl.key), entry->array,
-                 olsr_timer_getClockString(&timebuf, entry->validity_timer->timer_clock));
+                 olsr_clock_toClockString(&timebuf, entry->validity_timer->timer_clock));
   }
 
   OLSR_INFO(LOG_DUPLICATE_SET, "\n--- %s ------------------------------------------------- DUPLICATE SET (processing)\n\n",
-              olsr_timer_getWallclockString(&timebuf));
+              olsr_clock_getWallclockString(&timebuf));
   OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %8s %s\n", ipwidth, "Node IP", "DupArray", "VTime");
 
   OLSR_FOR_ALL_PROCESS_DUP_ENTRIES(entry, iterator) {
     OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %08x %s\n",
                  ipwidth, olsr_ip_to_string(&addrbuf, entry->avl.key), entry->array,
-                 olsr_timer_getClockString(&timebuf, entry->validity_timer->timer_clock));
+                 olsr_clock_toClockString(&timebuf, entry->validity_timer->timer_clock));
   }
 #endif
 }
index 973beac..ad0aed8 100644 (file)
@@ -244,7 +244,7 @@ olsr_print_hna_set(void)
   struct hna_net *hna_net, *hna_iterator;
 
   OLSR_INFO(LOG_HNA, "\n--- %s ------------------------------------------------- HNA\n\n",
-      olsr_timer_getWallclockString(&timebuf));
+      olsr_clock_getWallclockString(&timebuf));
 
   OLSR_FOR_ALL_TC_ENTRIES(tc, tc_iterator) {
     OLSR_INFO_NH(LOG_HNA, "HNA-gw %s:\n", olsr_ip_to_string(&buf, &tc->addr));
index e4dc7d5..d38ddab 100644 (file)
@@ -667,7 +667,7 @@ olsr_print_link_set(void)
   totaltxt[totaltxt_len] = 0;
 
   OLSR_INFO(LOG_LINKS, "\n--- %s ---------------------------------------------------- LINKS\n\n",
-      olsr_timer_getWallclockString(&timebuf));
+      olsr_clock_getWallclockString(&timebuf));
   OLSR_INFO_NH(LOG_LINKS, "%-*s  %-6s %s %s\n", addrsize, "IP address", "hyst", totaltxt , olsr_get_linklabel(0));
 
   OLSR_FOR_ALL_LINK_ENTRIES(walker, iterator) {
index 1739531..f8de775 100644 (file)
@@ -424,7 +424,7 @@ olsr_print_mid_set(void)
   struct timeval_buf timebuf;
 
   OLSR_INFO(LOG_MID, "\n--- %s ------------------------------------------------- MID\n\n",
-      olsr_timer_getWallclockString(&timebuf));
+      olsr_clock_getWallclockString(&timebuf));
 
   OLSR_FOR_ALL_TC_ENTRIES(tc, tc_iterator) {
     OLSR_FOR_ALL_TC_MID_ENTRIES(tc, alias, mid_iterator) {
index 17ea69e..8779e80 100644 (file)
@@ -484,7 +484,7 @@ olsr_print_neighbor_table(void)
   struct timeval_buf timebuf;
 
   OLSR_INFO(LOG_NEIGHTABLE, "\n--- %s ------------------------------------------------ NEIGHBORS\n\n"
-            "%-*s\tSYM\tMPR\tMPRS\twill\n", olsr_timer_getWallclockString(&timebuf), ipwidth, "IP address");
+            "%-*s\tSYM\tMPR\tMPRS\twill\n", olsr_clock_getWallclockString(&timebuf), ipwidth, "IP address");
 
   OLSR_FOR_ALL_NBR_ENTRIES(nbr, nbr_iterator) {
 
@@ -502,7 +502,7 @@ olsr_print_neighbor_table(void)
   }
 
   OLSR_INFO(LOG_2NEIGH, "\n--- %s ----------------------- TWO-HOP NEIGHBORS\n\n"
-            "IP addr (2-hop)  IP addr (1-hop)  Total cost\n", olsr_timer_getWallclockString(&timebuf));
+            "IP addr (2-hop)  IP addr (1-hop)  Total cost\n", olsr_clock_getWallclockString(&timebuf));
 
   OLSR_FOR_ALL_NBR2_ENTRIES(nbr2, nbr2_iterator) {
     first = true;
index 8353673..fde6b80 100644 (file)
@@ -52,6 +52,8 @@ static uint32_t now_times;             /* relative time compared to startup (in
 static struct timeval first_tv;        /* timevalue during startup */
 static struct timeval last_tv;         /* timevalue used for last olsr_times() calculation */
 
+static int olsr_get_timezone(void);
+
 /**
  * Initialize olsr clock system
  */
@@ -294,6 +296,84 @@ uint32_t olsr_clock_parse_string(char *txt) {
   return t;
 }
 
+
+/**
+ * Format an absolute wallclock system time string.
+ * May be called upto 4 times in a single printf() statement.
+ * Displays microsecond resolution.
+ *
+ * @return buffer to a formatted system time string.
+ */
+const char *
+olsr_clock_getWallclockString(struct timeval_buf *buf)
+{
+  struct timeval now;
+  int sec, usec;
+
+  os_gettimeofday(&now, NULL);
+
+  sec = (int)now.tv_sec + olsr_get_timezone();
+  usec = (int)now.tv_usec;
+
+  snprintf(buf->buf, sizeof(buf), "%02d:%02d:%02d.%06d",
+      (sec % 86400) / 3600, (sec % 3600) / 60, sec % 60, usec);
+
+  return buf->buf;
+}
+
+/**
+ * Format an relative non-wallclock system time string.
+ * Displays millisecond resolution.
+ *
+ * @param absolute timestamp
+ * @return buffer to a formatted system time string.
+ */
+const char *
+olsr_clock_toClockString(struct timeval_buf *buf, uint32_t clk)
+{
+  unsigned int msec = clk % 1000;
+  unsigned int sec = clk / 1000;
+
+  snprintf(buf->buf, sizeof(buf),
+      "%02u:%02u:%02u.%03u", sec / 3600, (sec % 3600) / 60, (sec % 60), (msec % MSEC_PER_SEC));
+
+  return buf->buf;
+}
+
+/**
+ * Returns the difference between gmt and local time in seconds.
+ * Use gmtime() and localtime() to keep things simple.
+ *
+ * taken and slightly modified from www.tcpdump.org.
+ */
+static int
+olsr_get_timezone(void)
+{
+#define OLSR_TIMEZONE_UNINITIALIZED -1
+  static int time_diff = OLSR_TIMEZONE_UNINITIALIZED;
+  if (time_diff == OLSR_TIMEZONE_UNINITIALIZED) {
+    int dir;
+    const time_t t = time(NULL);
+    const struct tm gmt = *gmtime(&t);
+    const struct tm *loc = localtime(&t);
+
+    time_diff = (loc->tm_hour - gmt.tm_hour) * 60 * 60 + (loc->tm_min - gmt.tm_min) * 60;
+
+    /*
+     * If the year or julian day is different, we span 00:00 GMT
+     * and must add or subtract a day. Check the year first to
+     * avoid problems when the julian day wraps.
+     */
+    dir = loc->tm_year - gmt.tm_year;
+    if (!dir) {
+      dir = loc->tm_yday - gmt.tm_yday;
+    }
+
+    time_diff += dir * 24 * 60 * 60;
+  }
+  return time_diff;
+}
+
 /*
  * Local Variables:
  * c-basic-offset: 2
index 4c14a39..30c904b 100644 (file)
 #define USEC_PER_MSEC 1000
 
 struct millitxt_buf {
-  char buf[16];
+  char buf[sizeof("4000000.000")];
+};
+
+/* buffer for displaying absolute timestamps */
+struct timeval_buf {
+  char buf[sizeof("00:00:00.000000")];
 };
 
 void olsr_clock_init(void);
@@ -80,6 +85,9 @@ uint8_t EXPORT(olsr_clock_encode_olsrv1) (const uint32_t);
 char *EXPORT(olsr_clock_to_string)(struct millitxt_buf *buffer, uint32_t t);
 uint32_t EXPORT(olsr_clock_parse_string)(char *txt);
 
+const char *EXPORT(olsr_clock_toClockString)(struct timeval_buf *, uint32_t);
+const char *EXPORT(olsr_clock_getWallclockString)(struct timeval_buf *);
+
 #endif
 
 /*
index 76aa652..6d0a3cb 100644 (file)
@@ -372,7 +372,7 @@ olsr_calculate_routing_table(bool force)
   olsr_spf_run_full(&cand_tree, &path_list, &path_count);
 
   OLSR_DEBUG(LOG_ROUTING, "\n--- %s ------------------------------------------------- DIJKSTRA\n\n",
-      olsr_timer_getWallclockString(&timebuf));
+      olsr_clock_getWallclockString(&timebuf));
 
 #ifdef SPF_PROFILING
   gettimeofday(&t3, NULL);
index 2730fd1..32d43ec 100644 (file)
@@ -5,16 +5,16 @@
  *      Author: rogge
  */
 
-#include <unistd.h>
 #include <assert.h>
 #include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
 
 #include "common/avl.h"
 #include "common/avl_olsr_comp.h"
-#include "olsr.h"
+#include "olsr_clock.h"
 #include "olsr_logging.h"
 #include "olsr_memcookie.h"
-#include "os_time.h"
 #include "olsr_timer.h"
 
 /* Hashed root of all timers */
@@ -28,7 +28,6 @@ static struct olsr_memcookie_info *timerinfo_cookie = NULL;
 
 /* Prototypes */
 static uint32_t calc_jitter(unsigned int rel_time, uint8_t jitter_pct, unsigned int random_val);
-static int olsr_get_timezone(void);
 
 /**
  * Init datastructures for maintaining timers.
@@ -112,49 +111,6 @@ olsr_timer_add(const char *name, timer_cb_func callback, bool periodic) {
 }
 
 /**
- * Format an absolute wallclock system time string.
- * May be called upto 4 times in a single printf() statement.
- * Displays microsecond resolution.
- *
- * @return buffer to a formatted system time string.
- */
-const char *
-olsr_timer_getWallclockString(struct timeval_buf *buf)
-{
-  struct timeval now;
-  int sec, usec;
-
-  os_gettimeofday(&now, NULL);
-
-  sec = (int)now.tv_sec + olsr_get_timezone();
-  usec = (int)now.tv_usec;
-
-  snprintf(buf->buf, sizeof(buf), "%02d:%02d:%02d.%06d",
-      (sec % 86400) / 3600, (sec % 3600) / 60, sec % 60, usec);
-
-  return buf->buf;
-}
-
-/**
- * Format an relative non-wallclock system time string.
- * Displays millisecond resolution.
- *
- * @param absolute timestamp
- * @return buffer to a formatted system time string.
- */
-const char *
-olsr_timer_getClockString(struct timeval_buf *buf, uint32_t clk)
-{
-  unsigned int msec = clk % 1000;
-  unsigned int sec = clk / 1000;
-
-  snprintf(buf->buf, sizeof(buf),
-      "%02u:%02u:%02u.%03u", sec / 3600, (sec % 3600) / 60, (sec % 60), (msec % MSEC_PER_SEC));
-
-  return buf->buf;
-}
-
-/**
  * Start a new timer.
  *
  * @param relative time expressed in milliseconds
@@ -205,7 +161,7 @@ olsr_timer_start(unsigned int rel_time,
   list_add_before(&timer_wheel[timer->timer_clock & TIMER_WHEEL_MASK], &timer->timer_list);
 
   OLSR_DEBUG(LOG_TIMER, "TIMER: start %s timer %p firing in %s, ctx %p\n",
-             ti->name, timer, olsr_timer_getClockString(&timebuf, timer->timer_clock), context);
+             ti->name, timer, olsr_clock_toClockString(&timebuf, timer->timer_clock), context);
 
   return timer;
 }
@@ -281,7 +237,7 @@ olsr_timer_change(struct olsr_timer_entry *timer, unsigned int rel_time, uint8_t
 
   OLSR_DEBUG(LOG_TIMER, "TIMER: change %s timer %p, firing to %s, ctx %p\n",
              timer->timer_info->name, timer,
-             olsr_timer_getClockString(&timebuf, timer->timer_clock), timer->timer_cb_context);
+             olsr_clock_toClockString(&timebuf, timer->timer_clock), timer->timer_cb_context);
 }
 
 /*
@@ -395,7 +351,7 @@ walk_timers(void)
                    "at clocktick %u (%s)\n",
                    timer->timer_info->name,
                    timer, timer->timer_cb_context, timer_last_run,
-                   olsr_timer_getWallclockString(&timebuf));
+                   olsr_clock_getWallclockString(&timebuf));
 
         /* This timer is expired, call into the provided callback function */
         timer->timer_in_callback = true;
@@ -451,38 +407,3 @@ walk_timers(void)
    */
   timer_last_run = olsr_clock_getNow();
 }
-
-/**
- * Returns the difference between gmt and local time in seconds.
- * Use gmtime() and localtime() to keep things simple.
- *
- * taken and slightly modified from www.tcpdump.org.
- */
-static int
-olsr_get_timezone(void)
-{
-#define OLSR_TIMEZONE_UNINITIALIZED -1
-  static int time_diff = OLSR_TIMEZONE_UNINITIALIZED;
-  if (time_diff == OLSR_TIMEZONE_UNINITIALIZED) {
-    int dir;
-    const time_t t = time(NULL);
-    const struct tm gmt = *gmtime(&t);
-    const struct tm *loc = localtime(&t);
-
-    time_diff = (loc->tm_hour - gmt.tm_hour) * 60 * 60 + (loc->tm_min - gmt.tm_min) * 60;
-
-    /*
-     * If the year or julian day is different, we span 00:00 GMT
-     * and must add or subtract a day. Check the year first to
-     * avoid problems when the julian day wraps.
-     */
-    dir = loc->tm_year - gmt.tm_year;
-    if (!dir) {
-      dir = loc->tm_yday - gmt.tm_yday;
-    }
-
-    time_diff += dir * 24 * 60 * 60;
-  }
-  return time_diff;
-}
-
index 25635a9..4f87cf3 100644 (file)
@@ -80,11 +80,6 @@ struct olsr_timer_entry {
   void *timer_cb_context;
 };
 
-/* buffer for displaying absolute timestamps */
-struct timeval_buf {
-  char buf[sizeof("00:00:00.000000")];
-};
-
 /* Timers */
 extern struct list_entity EXPORT(timerinfo_list);
 #define OLSR_FOR_ALL_TIMERS(ti, iterator) list_for_each_element_safe(&timerinfo_list, ti, node, iterator)
@@ -102,7 +97,4 @@ void EXPORT(olsr_timer_stop) (struct olsr_timer_entry *);
 
 struct olsr_timer_info *EXPORT(olsr_timer_add)(const char *name, timer_cb_func callback, bool periodic);
 
-const char *EXPORT(olsr_timer_getClockString)(struct timeval_buf *, uint32_t);
-const char *EXPORT(olsr_timer_getWallclockString)(struct timeval_buf *);
-
 #endif /* OLSR_TIMER_H_ */
index dfb12f4..45af42b 100644 (file)
@@ -647,7 +647,7 @@ olsr_print_tc_table(void)
   struct timeval_buf timebuf;
 
   OLSR_INFO(LOG_TC, "\n--- %s ------------------------------------------------- TOPOLOGY\n\n",
-      olsr_timer_getWallclockString(&timebuf));
+      olsr_clock_getWallclockString(&timebuf));
   OLSR_INFO_NH(LOG_TC, "%-*s %-*s %-7s      %8s %12s %5s\n", ipwidth,
                "Source IP addr", ipwidth, "Dest IP addr", "", olsr_get_linklabel(0), "vtime", "ansn");