merge
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Fri Apr 11 11:30:05 2008 -0700 (22 months ago)
changeset 290930c9b48a3af3
parent 2908 4ebd61a5612c
parent 2907 ebc23fe98852
child 2910 db4e803514cb
child 2995 b72805b3ca69
merge
     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),