From 77b0af3971cb60fca8e407f3a9380d0cc2f0198d Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Fri, 17 May 2013 13:11:22 +0200 Subject: [PATCH] bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes --- .../model/ipv6-autoconfigured-prefix.cc | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/internet/model/ipv6-autoconfigured-prefix.cc b/src/internet/model/ipv6-autoconfigured-prefix.cc index cdea5dac5..90bf58fe1 100644 --- a/src/internet/model/ipv6-autoconfigured-prefix.cc +++ b/src/internet/model/ipv6-autoconfigured-prefix.cc @@ -118,30 +118,42 @@ void Ipv6AutoconfiguredPrefix::FunctionValidTimeout () 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 ()