1.1 --- a/examples/csma-broadcast.cc Fri Apr 11 11:29:49 2008 -0700
1.2 +++ b/examples/csma-broadcast.cc Fri Apr 11 11:30:05 2008 -0700
1.3 @@ -74,10 +74,8 @@
1.4 NetDeviceContainer n0 = csma.Install (c0);
1.5 NetDeviceContainer n1 = csma.Install (c1);
1.6
1.7 -
1.8 InternetStackHelper internet;
1.9 - internet.Install (c0);
1.10 - internet.Install (c1);
1.11 + internet.Install (c);
1.12
1.13 NS_LOG_INFO ("Assign IP Addresses.");
1.14 Ipv4AddressHelper ipv4;
2.1 --- a/examples/csma-multicast.cc Fri Apr 11 11:29:49 2008 -0700
2.2 +++ b/examples/csma-multicast.cc Fri Apr 11 11:30:05 2008 -0700
2.3 @@ -84,8 +84,7 @@
2.4
2.5 NS_LOG_INFO ("Add IP Stack.");
2.6 InternetStackHelper internet;
2.7 - internet.Install (c0);
2.8 - internet.Install (c1);
2.9 + internet.Install (c);
2.10
2.11 NS_LOG_INFO ("Assign IP Addresses.");
2.12 Ipv4AddressHelper ipv4Addr;
3.1 --- a/src/common/pcap-writer.cc Fri Apr 11 11:29:49 2008 -0700
3.2 +++ b/src/common/pcap-writer.cc Fri Apr 11 11:30:05 2008 -0700
3.3 @@ -111,12 +111,20 @@
3.4 void
3.5 PcapWriter::Write32 (uint32_t data)
3.6 {
3.7 - WriteData ((uint8_t*)&data, 4);
3.8 + uint8_t buffer[4];
3.9 + buffer[0] = (data >> 0) & 0xff;
3.10 + buffer[1] = (data >> 8) & 0xff;
3.11 + buffer[2] = (data >> 16) & 0xff;
3.12 + buffer[3] = (data >> 24) & 0xff;
3.13 + WriteData (buffer, 4);
3.14 }
3.15 void
3.16 PcapWriter::Write16 (uint16_t data)
3.17 {
3.18 - WriteData((uint8_t*)&data, 2);
3.19 + uint8_t buffer[2];
3.20 + buffer[0] = (data >> 0) & 0xff;
3.21 + buffer[1] = (data >> 8) & 0xff;
3.22 + WriteData (buffer, 2);
3.23 }
3.24
3.25 } // namespace ns3
4.1 --- a/src/core/config.cc Fri Apr 11 11:29:49 2008 -0700
4.2 +++ b/src/core/config.cc Fri Apr 11 11:30:05 2008 -0700
4.3 @@ -190,7 +190,7 @@
4.4 {
4.5 // This is a call to GetObject
4.6 std::string tidString = item.substr (1, item.size () - 1);
4.7 - NS_LOG_DEBUG ("GetObject="<<tidString<<"on path="<<GetResolvedPath (""));
4.8 + NS_LOG_DEBUG ("GetObject="<<tidString<<" on path="<<GetResolvedPath (""));
4.9 TypeId tid = TypeId::LookupByName (tidString);
4.10 Ptr<Object> object = root->GetObject<Object> (tid);
4.11 if (object == 0)
5.1 --- a/src/core/object.cc Fri Apr 11 11:29:49 2008 -0700
5.2 +++ b/src/core/object.cc Fri Apr 11 11:30:05 2008 -0700
5.3 @@ -114,6 +114,13 @@
5.4 NS_ASSERT (!o->m_disposed);
5.5 NS_ASSERT (CheckLoose ());
5.6 NS_ASSERT (o->CheckLoose ());
5.7 +
5.8 + if (DoGetObject (o->m_tid))
5.9 + {
5.10 + NS_FATAL_ERROR ("Object::AggregateObject(): "
5.11 + "Multiple aggregation of objects of type " << o->m_tid.GetName ());
5.12 + }
5.13 +
5.14 Object *other = PeekPointer (o);
5.15 Object *next = m_next;
5.16 m_next = other->m_next;
6.1 --- a/src/core/traced-value.h Fri Apr 11 11:29:49 2008 -0700
6.2 +++ b/src/core/traced-value.h Fri Apr 11 11:30:05 2008 -0700
6.3 @@ -118,6 +118,12 @@
6.4 TracedCallback<T,T> m_cb;
6.5 };
6.6
6.7 +template <typename T>
6.8 +std::ostream& operator << (std::ostream& os, const TracedValue<T>& rhs)
6.9 +{
6.10 + return os<<rhs.Get();
6.11 +}
6.12 +
6.13 template <typename T, typename U>
6.14 bool operator == (const TracedValue<T> &lhs, const TracedValue<U> &rhs)
6.15 {
7.1 --- a/src/internet-node/tcp-socket.cc Fri Apr 11 11:29:49 2008 -0700
7.2 +++ b/src/internet-node/tcp-socket.cc Fri Apr 11 11:30:05 2008 -0700
7.3 @@ -31,6 +31,7 @@
7.4 #include "tcp-typedefs.h"
7.5 #include "ns3/simulator.h"
7.6 #include "ns3/packet.h"
7.7 +#include "ns3/trace-source-accessor.h"
7.8
7.9 #include <algorithm>
7.10
7.11 @@ -40,6 +41,20 @@
7.12
7.13 namespace ns3 {
7.14
7.15 +NS_OBJECT_ENSURE_REGISTERED (TcpSocket);
7.16 +
7.17 +TypeId
7.18 +TcpSocket::GetTypeId ()
7.19 +{
7.20 + static TypeId tid = TypeId("ns3::TcpSocket")
7.21 + .SetParent<Socket> ()
7.22 + .AddTraceSource ("CongestionWindow",
7.23 + "The TCP connection's congestion window",
7.24 + MakeTraceSourceAccessor (&TcpSocket::m_cWnd))
7.25 + ;
7.26 + return tid;
7.27 +}
7.28 +
7.29 TcpSocket::TcpSocket ()
7.30 : m_skipRetxResched (false),
7.31 m_dupAckCount (0),
7.32 @@ -899,7 +914,7 @@
7.33 {
7.34 NS_LOG_FUNCTION;
7.35 NS_LOG_LOGIC ("TcpSocket::Window() "<<this);
7.36 - return std::min (m_rxWindowSize, m_cWnd);
7.37 + return std::min (m_rxWindowSize, m_cWnd.Get());
7.38 }
7.39
7.40 uint32_t TcpSocket::AvailableWindow ()
7.41 @@ -1120,7 +1135,7 @@
7.42 }
7.43 else
7.44 { // Congestion avoidance mode, adjust by (ackBytes*segSize) / cWnd
7.45 - double adder = ((double) m_segmentSize * m_segmentSize) / m_cWnd;
7.46 + double adder = ((double) m_segmentSize * m_segmentSize) / m_cWnd.Get();
7.47 if (adder < 1.0)
7.48 {
7.49 adder = 1.0;
8.1 --- a/src/internet-node/tcp-socket.h Fri Apr 11 11:29:49 2008 -0700
8.2 +++ b/src/internet-node/tcp-socket.h Fri Apr 11 11:30:05 2008 -0700
8.3 @@ -22,6 +22,7 @@
8.4
8.5 #include <stdint.h>
8.6 #include "ns3/callback.h"
8.7 +#include "ns3/traced-value.h"
8.8 #include "ns3/socket.h"
8.9 #include "ns3/ptr.h"
8.10 #include "ns3/ipv4-address.h"
8.11 @@ -31,6 +32,7 @@
8.12 #include "sequence-number.h"
8.13 #include "rtt-estimator.h"
8.14
8.15 +
8.16 namespace ns3 {
8.17
8.18 class Ipv4EndPoint;
8.19 @@ -42,6 +44,7 @@
8.20 class TcpSocket : public Socket
8.21 {
8.22 public:
8.23 + static TypeId GetTypeId (void);
8.24 /**
8.25 * Create an unbound tcp socket.
8.26 */
8.27 @@ -152,12 +155,12 @@
8.28 SequenceNumber m_firstPendingSequence;
8.29
8.30 // Window management
8.31 - uint32_t m_segmentSize; // SegmentSize
8.32 - uint32_t m_rxWindowSize;
8.33 - uint32_t m_advertisedWindowSize; // Window to advertise to peer
8.34 - uint32_t m_cWnd; // Congestion window
8.35 - uint32_t m_ssThresh; // Slow Start Threshold
8.36 - uint32_t m_initialCWnd; // Initial (and reset) value for cWnd
8.37 + uint32_t m_segmentSize; //SegmentSize
8.38 + uint32_t m_rxWindowSize;
8.39 + uint32_t m_advertisedWindowSize; //Window to advertise
8.40 + TracedValue<uint32_t> m_cWnd; //Congestion window
8.41 + uint32_t m_ssThresh; //Slow Start Threshold
8.42 + uint32_t m_initialCWnd; //Initial cWnd value
8.43
8.44 // Round trip time estimation
8.45 Ptr<RttEstimator> m_rtt;
9.1 --- a/src/node/tcp.cc Fri Apr 11 11:29:49 2008 -0700
9.2 +++ b/src/node/tcp.cc Fri Apr 11 11:30:05 2008 -0700
9.3 @@ -30,52 +30,52 @@
9.4 {
9.5 static TypeId tid = TypeId ("ns3::Tcp")
9.6 .SetParent<SocketFactory> ()
9.7 - .AddAttribute ("TcpDefaultSegmentSize",
9.8 - "Default TCP maximum segment size in bytes (may be adjusted based on MTU discovery)",
9.9 - Uinteger (536),
9.10 - MakeUintegerAccessor (&Tcp::m_defaultSegSize),
9.11 - MakeUintegerChecker<uint32_t> ())
9.12 - .AddAttribute ("TcpDefaultAdvertisedWindowSize",
9.13 + .AddAttribute ("DefaultSegmentSize",
9.14 + "Default TCP maximum segment size in bytes (may be adjusted based on MTU discovery)",
9.15 + Uinteger (536),
9.16 + MakeUintegerAccessor (&Tcp::m_defaultSegSize),
9.17 + MakeUintegerChecker<uint32_t> ())
9.18 + .AddAttribute ("DefaultAdvertisedWindowSize",
9.19 "Default TCP advertised window size (bytes)",
9.20 Uinteger (0xffff),
9.21 MakeUintegerAccessor (&Tcp::m_defaultAdvWin),
9.22 MakeUintegerChecker<uint32_t> ())
9.23 - .AddAttribute ("TcpDefaultSlowStartThreshold",
9.24 + .AddAttribute ("DefaultSlowStartThreshold",
9.25 "Default TCP slow start threshold (bytes)",
9.26 Uinteger (0xffff),
9.27 MakeUintegerAccessor (&Tcp::m_defaultSsThresh),
9.28 MakeUintegerChecker<uint32_t> ())
9.29 - .AddAttribute ("TcpDefaultTxBufferSize",
9.30 + .AddAttribute ("DefaultTxBufferSize",
9.31 "Default TCP maximum transmit buffer size (bytes)",
9.32 Uinteger (0xffffffffl),
9.33 MakeUintegerAccessor (&Tcp::m_defaultTxBuffer),
9.34 MakeUintegerChecker<uint32_t> ())
9.35 - .AddAttribute ("TcpDefaultRxBufferSize",
9.36 + .AddAttribute ("DefaultRxBufferSize",
9.37 "Default TCP maximum receive buffer size (bytes)",
9.38 Uinteger (0xffffffffl),
9.39 MakeUintegerAccessor (&Tcp::m_defaultRxBuffer),
9.40 MakeUintegerChecker<uint32_t> ())
9.41 - .AddAttribute ("TcpDefaultInitialCongestionWindowSize",
9.42 + .AddAttribute ("DefaultInitialCongestionWindowSize",
9.43 "Default TCP initial congestion window size (segments)",
9.44 Uinteger (1),
9.45 MakeUintegerAccessor (&Tcp::m_defaultInitialCwnd),
9.46 MakeUintegerChecker<uint32_t> ())
9.47 - .AddAttribute ("TcpDefaultConnTimeout",
9.48 + .AddAttribute ("DefaultConnTimeout",
9.49 "Default TCP retransmission timeout when opening connection (seconds)",
9.50 Uinteger (3),
9.51 MakeUintegerAccessor (&Tcp::m_defaultConnTimeout),
9.52 MakeUintegerChecker<uint32_t> ())
9.53 - .AddAttribute ("TcpDefaultConnCount",
9.54 + .AddAttribute ("DefaultConnCount",
9.55 "Default number of connection attempts (SYN retransmissions) before returning failure",
9.56 Uinteger (6),
9.57 MakeUintegerAccessor (&Tcp::m_defaultConnCount),
9.58 MakeUintegerChecker<uint32_t> ())
9.59 - .AddAttribute ("TcpDefaultDelAckTimeout",
9.60 + .AddAttribute ("DefaultDelAckTimeout",
9.61 "Default timeout value for TCP delayed acks, in seconds",
9.62 Double (0.2),
9.63 MakeDoubleAccessor (&Tcp::m_defaultDelAckTimeout),
9.64 MakeDoubleChecker<double> ())
9.65 - .AddAttribute ("TcpDefaultDelAckCount",
9.66 + .AddAttribute ("DefaultDelAckCount",
9.67 "Default number of packets to wait before sending a TCP ack",
9.68 Uinteger (2),
9.69 MakeUintegerAccessor (&Tcp::m_defaultDelAckCount),