diff --git a/ospf6d/ospf6_abr.c b/ospf6d/ospf6_abr.c
index 8224b10..d38ef21 100644
--- a/ospf6d/ospf6_abr.c
+++ b/ospf6d/ospf6_abr.c
@@ -402,7 +402,7 @@
   else
     {
       summary->type = route->type;
-      gettimeofday (&summary->changed, NULL);
+      quagga_gettime (QUAGGA_CLK_MONOTONIC, &summary->changed);
     }
 
   summary->path.router_bits = route->path.router_bits;
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 8c46029..670c5d1 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -225,7 +225,7 @@
       ospf6_flood_clear (old);
     }
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   if (! OSPF6_LSA_IS_MAXAGE (lsa))
     lsa->expire = thread_add_timer (master, ospf6_lsa_expire, lsa,
                                     MAXAGE + lsa->birth.tv_sec - now.tv_sec);
@@ -837,7 +837,7 @@
       if (old)
         {
           struct timeval now, res;
-          gettimeofday (&now, (struct timezone *) NULL);
+          quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
           timersub (&now, &old->installed, &res);
           if (res.tv_sec < MIN_LS_ARRIVAL)
             {
@@ -848,7 +848,7 @@
             }
         }
 
-      gettimeofday (&new->received, (struct timezone *) NULL);
+      quagga_gettime (QUAGGA_CLK_MONOTONIC, &new->received);
 
       if (is_debug)
         zlog_debug ("Flood, Install, Possibly acknowledge the received LSA");
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 5a79862..2cd5303 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -825,7 +825,7 @@
   vty_out (vty, "  Number of I/F scoped LSAs is %u%s",
            oi->lsdb->count, VNL);
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
 
   timerclear (&res);
   if (oi->thread_send_lsupdate)
diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c
index 103e8fc..05b11ba 100644
--- a/ospf6d/ospf6_intra.c
+++ b/ospf6d/ospf6_intra.c
@@ -1256,11 +1256,11 @@
   ospf6_linkstate_prefix2str (&brouter->prefix, destination,
                               sizeof (destination));
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &brouter->installed, &res);
   timerstring (&res, installed, sizeof (installed));
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &brouter->changed, &res);
   timerstring (&res, changed, sizeof (changed));
 
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index e8290b6..108c025 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -180,8 +180,8 @@
 
   assert (lsa && lsa->header);
 
-  if (gettimeofday (&now, (struct timezone *)NULL) < 0)
-    zlog_warn ("LSA: gettimeofday failed, may fail LSA AGEs: %s",
+  if (quagga_gettime (QUAGGA_CLK_MONOTONIC, &now) < 0)
+    zlog_warn ("LSA: quagga_gettime failed, may fail LSA AGEs: %s",
                safe_strerror (errno));
 
   lsa->birth.tv_sec = now.tv_sec - ntohs (lsa->header->age);
@@ -203,8 +203,8 @@
   assert (lsa->header);
 
   /* current time */
-  if (gettimeofday (&now, (struct timezone *)NULL) < 0)
-    zlog_warn ("LSA: gettimeofday failed, may fail LSA AGEs: %s",
+  if (quagga_gettime (QUAGGA_CLK_MONOTONIC, &now) < 0)
+    zlog_warn ("LSA: quagga_gettime failed, may fail LSA AGEs: %s",
                safe_strerror (errno));
 
   /* calculate age */
@@ -351,7 +351,7 @@
   inet_ntop (AF_INET, &lsa->header->adv_router, adv_router,
              sizeof (adv_router));
 
-  gettimeofday (&now, NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &lsa->installed, &res);
   timerstring (&res, duration, sizeof (duration));
 
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index c257092..790fc0a 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1456,7 +1456,7 @@
   if (CHECK_FLAG (on->dbdesc_bits, OSPF6_DBDESC_IBIT))
     {
       struct timeval tv;
-      if (gettimeofday (&tv, (struct timezone *) NULL) < 0)
+      if (quagga_gettime (QUAGGA_CLK_MONOTONIC, &tv) < 0)
         tv.tv_sec = 1;
       on->dbdesc_seqnum = tv.tv_sec;
     }
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index 8a5d698..f6c3aea 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -89,7 +89,7 @@
             buf, oi->interface->name);
   on->ospf6_if = oi;
   on->state = OSPF6_NEIGHBOR_DOWN;
-  gettimeofday (&on->last_changed, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &on->last_changed);
   on->router_id = router_id;
 
   on->summary_list = ospf6_lsdb_create (on);
@@ -154,7 +154,7 @@
   if (prev_state == next_state)
     return;
 
-  gettimeofday (&on->last_changed, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &on->last_changed);
 
   /* log */
   if (IS_OSPF6_DEBUG_NEIGHBOR (STATE))
@@ -568,7 +568,7 @@
   }
 #endif /*HAVE_GETNAMEINFO*/
 
-  gettimeofday (&now, NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
 
   /* Dead time */
   h = m = s = 0;
@@ -630,7 +630,7 @@
   inet_ntop (AF_INET, &on->drouter, drouter, sizeof (drouter));
   inet_ntop (AF_INET, &on->bdrouter, bdrouter, sizeof (bdrouter));
 
-  gettimeofday (&now, NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &on->last_changed, &res);
   timerstring (&res, duration, sizeof (duration));
 
@@ -654,7 +654,7 @@
   inet_ntop (AF_INET, &on->drouter, drouter, sizeof (drouter));
   inet_ntop (AF_INET, &on->bdrouter, bdrouter, sizeof (bdrouter));
 
-  gettimeofday (&now, NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &on->last_changed, &res);
   timerstring (&res, duration, sizeof (duration));
 
diff --git a/ospf6d/ospf6_route.c b/ospf6d/ospf6_route.c
index a89ed7e..9832f57 100644
--- a/ospf6d/ospf6_route.c
+++ b/ospf6d/ospf6_route.c
@@ -378,7 +378,7 @@
   else if (IS_OSPF6_DEBUG_ROUTE (TABLE))
     zlog_debug ("%s: route add: %s", ospf6_route_table_name (table), buf);
 
-  gettimeofday (&now, NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
 
   node = route_node_get (table->table, &route->prefix);
   route->rnode = node;
@@ -792,7 +792,7 @@
   char duration[16], ifname[IFNAMSIZ];
   struct timeval now, res;
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &route->changed, &res);
   timerstring (&res, duration, sizeof (duration));
 
@@ -841,7 +841,7 @@
   char duration[16];
   int i;
 
-  gettimeofday (&now, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
 
   /* destination */
   if (route->type == OSPF6_DEST_TYPE_LINKSTATE)
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index 44e11f9..bfb6df2 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -527,9 +527,9 @@
     ospf6_spf_log_database (oa);
 
   /* execute SPF calculation */
-  gettimeofday (&start, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &start);
   ospf6_spf_calculation (oa->ospf6->router_id, oa->spf_table, oa);
-  gettimeofday (&end, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &end);
   timersub (&end, &start, &runtime);
 
   if (IS_OSPF6_DEBUG_SPF (PROCESS) || IS_OSPF6_DEBUG_SPF (TIME))
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index b42962c..c4cc9fa 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -117,7 +117,7 @@
   o = XCALLOC (MTYPE_OSPF6_TOP, sizeof (struct ospf6));
 
   /* initialize */
-  gettimeofday (&o->starttime, (struct timezone *) NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &o->starttime);
   o->area_list = list_new ();
   o->area_list->cmp = ospf6_area_cmp;
   o->lsdb = ospf6_lsdb_create (o);
@@ -447,7 +447,7 @@
            router_id, VNL);
 
   /* running time */
-  gettimeofday (&now, (struct timezone *)NULL);
+  quagga_gettime (QUAGGA_CLK_MONOTONIC, &now);
   timersub (&now, &o->starttime, &running);
   timerstring (&running, duration, sizeof (duration));
   vty_out (vty, " Running %s%s", duration, VNL);
