Merge with ns-3-dev.
--- a/.hgtags Thu Oct 15 15:11:27 2009 +0200
+++ b/.hgtags Fri Oct 16 10:25:12 2009 +0200
@@ -38,3 +38,4 @@
c975274c9707b1f07d94cc51f205c351122131a5 ns-3.5
549243b47311211975b388cd64fcb9111caa2fc2 ns-3.6-RC1
8996042990466b1eda718a848e1c02923c0add74 ns-3.6-RC2
+79ff6ad1adbb7b4677759ddf52028b68b0515168 ns-3.6-RC3
--- a/RELEASE_NOTES Thu Oct 15 15:11:27 2009 +0200
+++ b/RELEASE_NOTES Fri Oct 16 10:25:12 2009 +0200
@@ -68,6 +68,10 @@
- Previous unit tests have been ported to new framework.
- Examples are tested for run-ability.
+ f) A new Flow Monitor module
+ - To very easily measure flow metrics in a simulation
+ - No need to use trace callbacks or parsing trace files
+
API changes from ns-3.5
-----------------------
API changes for this release are documented in the file CHANGES.html.
--- a/doc/release_steps.txt Thu Oct 15 15:11:27 2009 +0200
+++ b/doc/release_steps.txt Fri Oct 16 10:25:12 2009 +0200
@@ -38,20 +38,21 @@
- clone the ns-3-dev-ref-traces and place it on the repository as above
but use the name ns-3.x-ref-traces and edit the hgrc appropriately
7. check out a clean version of the new release (ns-3.x) somewhere
+ - hg clone http://code.nsnam.org/ns-3.x
8. Update the VERSION for this new release
- change the string 3-dev in the VERSION file to the real version
(e.g. 3.7 or 3.7-RC1) This must agree with the version name you chose in the clone
for the regression tests to work.
- - hg commit
- - hg push
+ - hg commit -m "update VERSION to ns-3.x"
+ - hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x
+
9. Run the tests on the new release (debug and optimized) like a user would
You need to use ns-3-allinone since you will use that to make the distro
- - hg clone http://code.nsnam.org/ns-3-allinone-ns-3.x
+ - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x
+ - cd !$
- ./download.py -n ns-3.x -r ns-3.x-ref-traces
- ./build.py
- cd ns-3.x
- - ./waf -d debug configure
- - ./waf
- ./test.py
- ./test.py -g
- ./waf --regression
--- a/src/devices/mesh/dot11s/hwmp-protocol.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/dot11s/hwmp-protocol.cc Fri Oct 16 10:25:12 2009 +0200
@@ -184,6 +184,7 @@
m_doFlag (false),
m_rfFlag (false)
{
+ NS_LOG_FUNCTION_NOARGS ();
if (m_isRoot)
{
@@ -193,11 +194,13 @@
HwmpProtocol::~HwmpProtocol ()
{
+ NS_LOG_FUNCTION_NOARGS ();
}
void
HwmpProtocol::DoDispose ()
{
+ NS_LOG_FUNCTION_NOARGS ();
for (std::map<Mac48Address, EventId>::iterator i = m_preqTimeouts.begin (); i != m_preqTimeouts.end (); i ++)
{
i->second.Cancel ();
@@ -206,8 +209,10 @@
m_preqTimeouts.clear ();
m_lastDataSeqno.clear ();
m_lastHwmpSeqno.clear ();
+ m_interfaces.clear ();
m_rqueue.clear ();
m_rtable = 0;
+ m_mp = 0;
}
bool
--- a/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.cc Fri Oct 16 10:25:12 2009 +0200
@@ -118,19 +118,11 @@
void
IeBeaconTiming::ClearTimingElement ()
{
- uint16_t to_delete = 0;
- uint16_t i;
for (NeighboursTimingUnitsList::iterator j = m_neighbours.begin (); j != m_neighbours.end (); j++)
{
- to_delete++;
(*j) = 0;
}
- for (i = 0; i < to_delete; i++)
- {
- m_neighbours.pop_back ();
- }
m_neighbours.clear ();
-
}
uint8_t
IeBeaconTiming::GetInformationSize () const
--- a/src/devices/mesh/dot11s/ie-dot11s-preq.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/dot11s/ie-dot11s-preq.cc Fri Oct 16 10:25:12 2009 +0200
@@ -373,16 +373,11 @@
void
IePreq::ClearDestinationAddressElements ()
{
- int i;
for (std::vector<Ptr<DestinationAddressUnit> >::iterator j = m_destinations.begin (); j
!= m_destinations.end (); j++)
{
(*j) = 0;
}
- for (i = 0; i < m_destCount; i++)
- {
- m_destinations.pop_back ();
- }
m_destinations.clear ();
m_destCount = 0;
}
--- a/src/devices/mesh/dot11s/peer-management-protocol.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/dot11s/peer-management-protocol.cc Fri Oct 16 10:25:12 2009 +0200
@@ -93,6 +93,8 @@
i->second.clear ();
}
m_neighbourBeacons.clear ();
+
+ m_plugins.clear ();
}
bool
--- a/src/devices/mesh/mesh-point-device.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/mesh-point-device.cc Fri Oct 16 10:25:12 2009 +0200
@@ -73,6 +73,9 @@
*iter = 0;
}
m_ifaces.clear ();
+ m_node = 0;
+ m_channel = 0;
+ m_routingProtocol = 0;
NetDevice::DoDispose ();
}
--- a/src/devices/mesh/mesh-wifi-beacon.h Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/mesh-wifi-beacon.h Fri Oct 16 10:25:12 2009 +0200
@@ -27,8 +27,6 @@
#include "ns3/wifi-mac-header.h"
#include "ns3/wifi-information-element-vector.h"
-#include <vector>
-
namespace ns3 {
/**
--- a/src/devices/mesh/mesh-wifi-interface-mac.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/mesh-wifi-interface-mac.cc Fri Oct 16 10:25:12 2009 +0200
@@ -282,8 +282,10 @@
m_rxMiddle = 0;
m_low = 0;
m_dcfManager = 0;
+ m_stationManager = 0;
m_phy = 0;
m_queues.clear ();
+ m_plugins.clear ();
m_beaconSendEvent.Cancel ();
m_beaconDca = 0;
--- a/src/devices/mesh/wifi-information-element-vector.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/mesh/wifi-information-element-vector.cc Fri Oct 16 10:25:12 2009 +0200
@@ -74,7 +74,7 @@
void
WifiInformationElementVector::Serialize (Buffer::Iterator start) const
{
- for(std::vector<Ptr<WifiInformationElement> >::const_iterator i = m_elements.begin (); i != m_elements.end (); i ++)
+ for(IE_VECTOR::const_iterator i = m_elements.begin (); i != m_elements.end (); i ++)
{
start.WriteU8((*i)->ElementId ());
start.WriteU8 ((*i)->GetInformationSize ());
--- a/src/devices/wifi/interference-helper.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/wifi/interference-helper.cc Fri Oct 16 10:25:12 2009 +0200
@@ -611,7 +611,7 @@
{
*i = 0;
}
- m_events.erase (m_events.begin (), m_events.end ());
+ m_events.clear ();
}
void
--- a/src/devices/wifi/wifi-net-device.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/wifi/wifi-net-device.cc Fri Oct 16 10:25:12 2009 +0200
@@ -28,6 +28,9 @@
#include "ns3/pointer.h"
#include "ns3/node.h"
#include "ns3/trace-source-accessor.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("WifiNetDevice");
namespace ns3 {
@@ -65,13 +68,18 @@
WifiNetDevice::WifiNetDevice ()
: m_mtu (0),
m_configComplete (false)
-{}
+{
+ NS_LOG_FUNCTION_NOARGS ();
+}
WifiNetDevice::~WifiNetDevice ()
-{}
+{
+ NS_LOG_FUNCTION_NOARGS ();
+}
void
WifiNetDevice::DoDispose (void)
{
+ NS_LOG_FUNCTION_NOARGS ();
m_node = 0;
m_mac->Dispose ();
m_phy->Dispose ();
--- a/src/devices/wifi/yans-wifi-channel.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/wifi/yans-wifi-channel.cc Fri Oct 16 10:25:12 2009 +0200
@@ -56,6 +56,7 @@
{}
YansWifiChannel::~YansWifiChannel ()
{
+ NS_LOG_FUNCTION_NOARGS ();
m_phyList.clear ();
}
--- a/src/devices/wifi/yans-wifi-phy.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/devices/wifi/yans-wifi-phy.cc Fri Oct 16 10:25:12 2009 +0200
@@ -139,6 +139,8 @@
m_channel = 0;
m_modes.clear ();
m_device = 0;
+ m_mobility = 0;
+ m_state = 0;
}
void
--- a/src/helper/dot11s-installer.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/helper/dot11s-installer.cc Fri Oct 16 10:25:12 2009 +0200
@@ -73,8 +73,9 @@
hwmp->SetRoot ();
}
//Install interaction between HWMP and Peer management protocol:
- pmp->SetPeerLinkStatusCallback (MakeCallback (&HwmpProtocol::PeerLinkStatus, hwmp));
- hwmp->SetNeighboursCallback (MakeCallback (&PeerManagementProtocol::GetActiveLinks, pmp));
+ //PeekPointer()'s to avoid circular Ptr references
+ pmp->SetPeerLinkStatusCallback (MakeCallback (&HwmpProtocol::PeerLinkStatus, PeekPointer (hwmp)));
+ hwmp->SetNeighboursCallback (MakeCallback (&PeerManagementProtocol::GetActiveLinks, PeekPointer (pmp)));
return true;
}
void
--- a/src/node/net-device.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/node/net-device.cc Fri Oct 16 10:25:12 2009 +0200
@@ -45,6 +45,8 @@
}
NetDevice::~NetDevice ()
-{}
+{
+ NS_LOG_FUNCTION_NOARGS ();
+}
} // namespace ns3
--- a/src/node/node.cc Thu Oct 15 15:11:27 2009 +0200
+++ b/src/node/node.cc Fri Oct 16 10:25:12 2009 +0200
@@ -148,6 +148,7 @@
void
Node::DoDispose()
{
+ m_handlers.clear ();
for (std::vector<Ptr<NetDevice> >::iterator i = m_devices.begin ();
i != m_devices.end (); i++)
{