From 558593480c9813117995d802a1f54fac0a2edbee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lichtblau?= Date: Thu, 13 Oct 2011 21:55:21 +0200 Subject: [PATCH] Bug 1278: Ipv4ClickRouting::HandleScheduleFromClick should stay integer for delay calculation to be accurate --- src/click/model/ipv4-click-routing.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/click/model/ipv4-click-routing.cc b/src/click/model/ipv4-click-routing.cc index a5e774c64..374e0e304 100644 --- a/src/click/model/ipv4-click-routing.cc +++ b/src/click/model/ipv4-click-routing.cc @@ -261,6 +261,8 @@ Ipv4ClickRouting::RunClickEvent () { m_simNode->curtime.tv_sec = Simulator::Now ().GetSeconds (); m_simNode->curtime.tv_usec = Simulator::Now ().GetMicroSeconds () % 1000000; + NS_LOG_DEBUG ("RunClickEvent at " << m_simNode->curtime.tv_sec << " " << + m_simNode->curtime.tv_usec << " " << Simulator::Now ()); simclick_click_run (m_simNode); } @@ -269,10 +271,10 @@ Ipv4ClickRouting::HandleScheduleFromClick (const struct timeval *when) { NS_LOG_DEBUG ("HandleScheduleFromClick at " << when->tv_sec << " " << when->tv_usec << " " << Simulator::Now ()); - double simtime = when->tv_sec + (when->tv_usec / 1.0e6); - double simdelay = simtime - Simulator::Now ().GetMicroSeconds () / 1.0e6; + Time simtime = Time::FromInteger(when->tv_sec, Time::S) + Time::FromInteger(when->tv_usec, Time::US); + Time simdelay = simtime - Simulator::Now(); - Simulator::Schedule (Seconds (simdelay), &Ipv4ClickRouting::RunClickEvent, this); + Simulator::Schedule (simdelay, &Ipv4ClickRouting::RunClickEvent, this); } void @@ -640,7 +642,7 @@ int simclick_sim_command (simclick_node_t *simnode, int cmd, ...) clickInstance->HandleScheduleFromClick (when); retval = 0; - NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE: " << when->tv_sec << "s and " << when->tv_usec << "usecs later."); + NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE at " << when->tv_sec << "s and " << when->tv_usec << "usecs."); break; }