bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes
authorTommaso Pecorella <tommaso.pecorella@unifi.it>
Fri, 17 May 2013 13:11:22 +0200
changeset 9759 2fca33f9a3a5
parent 9758 b7f82950d534
child 9760 858d18e11e11
bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes
src/internet/model/ipv6-autoconfigured-prefix.cc
--- a/src/internet/model/ipv6-autoconfigured-prefix.cc	Tue May 14 08:01:34 2013 -0700
+++ b/src/internet/model/ipv6-autoconfigured-prefix.cc	Fri May 17 13:11:22 2013 +0200
@@ -118,30 +118,42 @@
 
 void Ipv6AutoconfiguredPrefix::StartPreferredTimer ()
 {
-  NS_LOG_INFO ("Start PreferredTimer for " << m_prefix);
-  m_preferredTimer.SetFunction (&Ipv6AutoconfiguredPrefix::FunctionPreferredTimeout, this);
-  m_preferredTimer.SetDelay (Seconds (m_preferredLifeTime));
-  m_preferredTimer.Schedule ();
+  if (m_preferredLifeTime != 0xffffffff)
+    {
+      NS_LOG_INFO ("Start PreferredTimer for " << m_prefix);
+      m_preferredTimer.SetFunction (&Ipv6AutoconfiguredPrefix::FunctionPreferredTimeout, this);
+      m_preferredTimer.SetDelay (Seconds (m_preferredLifeTime));
+      m_preferredTimer.Schedule ();
+    }
 }
 
 void Ipv6AutoconfiguredPrefix::StartValidTimer ()
 {
-  NS_LOG_INFO ("Start ValidTimer for " << m_prefix);
-  m_validTimer.SetFunction (&Ipv6AutoconfiguredPrefix::FunctionValidTimeout, this);
-  m_validTimer.SetDelay (Seconds (m_validLifeTime - m_preferredLifeTime));
-  m_validTimer.Schedule ();
+  if (m_validLifeTime != 0xffffffff)
+    {
+      NS_LOG_INFO ("Start ValidTimer for " << m_prefix);
+      m_validTimer.SetFunction (&Ipv6AutoconfiguredPrefix::FunctionValidTimeout, this);
+      m_validTimer.SetDelay (Seconds (m_validLifeTime - m_preferredLifeTime));
+      m_validTimer.Schedule ();
+    }
 }
 
 void Ipv6AutoconfiguredPrefix::StopPreferredTimer ()
 {
-  NS_LOG_INFO ("Stop PreferredTimer for " << m_prefix);
-  m_preferredTimer.Cancel ();
+  if (m_preferredTimer.IsRunning())
+    {
+      NS_LOG_INFO ("Stop PreferredTimer for " << m_prefix);
+      m_preferredTimer.Cancel ();
+    }
 }
 
 void Ipv6AutoconfiguredPrefix::StopValidTimer ()
 {
-  NS_LOG_INFO ("Stop ValidTimer for " << m_prefix);
-  m_validTimer.Cancel ();
+  if (m_validTimer.IsRunning())
+    {
+      NS_LOG_INFO ("Stop ValidTimer for " << m_prefix);
+      m_validTimer.Cancel ();
+    }
 }
 
 void Ipv6AutoconfiguredPrefix::RemoveMe ()