From de5784452b31af3c7342269127a12d352edc0b4e Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 31 Aug 2009 15:25:03 +0200 Subject: use time_monotonic() instead of gettimeofday() for time difference calculations --- .../plugins/kernel_netlink/kernel_netlink_net.c | 25 ++++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/charon/plugins/kernel_netlink/kernel_netlink_net.c') diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c index e5c0b5da7..fd79f0781 100644 --- a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -145,7 +144,7 @@ struct private_kernel_netlink_net_t { /** * time of the last roam_job */ - struct timeval last_roam; + timeval_t last_roam; /** * routing table to install routes @@ -208,22 +207,20 @@ static int get_vip_refcount(private_kernel_netlink_net_t *this, host_t* ip) */ static void fire_roam_job(private_kernel_netlink_net_t *this, bool address) { - struct timeval now; + timeval_t now; - if (gettimeofday(&now, NULL) == 0) + time_monotonic(&now); + if (timercmp(&now, &this->last_roam, >)) { - if (timercmp(&now, &this->last_roam, >)) + now.tv_usec += ROAM_DELAY * 1000; + while (now.tv_usec > 1000000) { - now.tv_usec += ROAM_DELAY * 1000; - while (now.tv_usec > 1000000) - { - now.tv_sec++; - now.tv_usec -= 1000000; - } - this->last_roam = now; - charon->scheduler->schedule_job_ms(charon->scheduler, - (job_t*)roam_job_create(address), ROAM_DELAY); + now.tv_sec++; + now.tv_usec -= 1000000; } + this->last_roam = now; + charon->scheduler->schedule_job_ms(charon->scheduler, + (job_t*)roam_job_create(address), ROAM_DELAY); } } -- cgit v1.2.3