src/node/tcp-socket-factory.cc
changeset 3132 b0b0abb911cd
child 3136 a59b9ce95b6b
equal deleted inserted replaced
3131:d82336dfd269 3132:b0b0abb911cd
       
     1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
       
     2 /*
       
     3  * Copyright (c) 2007 Georgia Tech Research Corporation
       
     4  *
       
     5  * This program is free software; you can redistribute it and/or modify
       
     6  * it under the terms of the GNU General Public License version 2 as
       
     7  * published by the Free Software Foundation;
       
     8  *
       
     9  * This program is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12  * GNU General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU General Public License
       
    15  * along with this program; if not, write to the Free Software
       
    16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
       
    17  *
       
    18  * Author: Raj Bhattacharjea <raj.b@gatech.edu>
       
    19  */
       
    20 #include "tcp-socket-factory.h"
       
    21 #include "ns3/uinteger.h"
       
    22 #include "ns3/double.h"
       
    23 
       
    24 namespace ns3 {
       
    25 
       
    26 NS_OBJECT_ENSURE_REGISTERED (TcpSocketFactory);
       
    27 
       
    28 TypeId
       
    29 TcpSocketFactory::GetTypeId (void)
       
    30 {
       
    31   static TypeId tid = TypeId ("ns3::TcpSocketFactory")
       
    32     .SetParent<SocketFactory> ()
       
    33     .AddAttribute ("DefaultSegmentSize",
       
    34                    "Default TCP maximum segment size in bytes (may be adjusted based on MTU discovery)",
       
    35                    UintegerValue (536),
       
    36                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultSegSize),
       
    37                    MakeUintegerChecker<uint32_t> ())
       
    38     .AddAttribute ("DefaultAdvertisedWindowSize",
       
    39                    "Default TCP advertised window size (bytes)",
       
    40                    UintegerValue (0xffff),
       
    41                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultAdvWin),
       
    42                    MakeUintegerChecker<uint32_t> ())
       
    43     .AddAttribute ("DefaultSlowStartThreshold",
       
    44                    "Default TCP slow start threshold (bytes)",
       
    45                    UintegerValue (0xffff),
       
    46                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultSsThresh),
       
    47                    MakeUintegerChecker<uint32_t> ())
       
    48     .AddAttribute ("DefaultTxBufferSize",
       
    49                    "Default TCP maximum transmit buffer size (bytes)",
       
    50                    UintegerValue (0xffffffffl),
       
    51                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultTxBuffer),
       
    52                    MakeUintegerChecker<uint32_t> ())
       
    53     .AddAttribute ("DefaultRxBufferSize",
       
    54                    "Default TCP maximum receive buffer size (bytes)",
       
    55                    UintegerValue (0xffffffffl),
       
    56                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultRxBuffer),
       
    57                    MakeUintegerChecker<uint32_t> ())
       
    58     .AddAttribute ("DefaultInitialCongestionWindowSize",
       
    59                    "Default TCP initial congestion window size (segments)",
       
    60                    UintegerValue (1),
       
    61                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultInitialCwnd),
       
    62                    MakeUintegerChecker<uint32_t> ())
       
    63     .AddAttribute ("DefaultConnTimeout",
       
    64                    "Default TCP retransmission timeout when opening connection (seconds)",
       
    65                    UintegerValue (3),
       
    66                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultConnTimeout),
       
    67                    MakeUintegerChecker<uint32_t> ())
       
    68     .AddAttribute ("DefaultConnCount",
       
    69                    "Default number of connection attempts (SYN retransmissions) before returning failure",
       
    70                    UintegerValue (6),
       
    71                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultConnCount),
       
    72                    MakeUintegerChecker<uint32_t> ())
       
    73     .AddAttribute ("DefaultDelAckTimeout",
       
    74                    "Default timeout value for TCP delayed acks, in seconds",
       
    75                    DoubleValue (0.2),
       
    76                    MakeDoubleAccessor (&TcpSocketFactory::m_defaultDelAckTimeout),
       
    77                    MakeDoubleChecker<double> ())
       
    78     .AddAttribute ("DefaultDelAckCount",
       
    79                    "Default number of packets to wait before sending a TCP ack",
       
    80                    UintegerValue (2),
       
    81                    MakeUintegerAccessor (&TcpSocketFactory::m_defaultDelAckCount),
       
    82                    MakeUintegerChecker<uint32_t> ())
       
    83      ;
       
    84   return tid;
       
    85 }
       
    86 
       
    87 uint32_t 
       
    88 TcpSocketFactory::GetDefaultSegSize (void) const
       
    89 {
       
    90   return m_defaultSegSize;
       
    91 }
       
    92 uint32_t 
       
    93 TcpSocketFactory::GetDefaultAdvWin (void) const
       
    94 {
       
    95   return m_defaultAdvWin;
       
    96 }
       
    97 uint32_t 
       
    98 TcpSocketFactory::GetDefaultSsThresh (void) const
       
    99 {
       
   100   return m_defaultSsThresh;
       
   101 }
       
   102 uint32_t 
       
   103 TcpSocketFactory::GetDefaultTxBuffer (void) const
       
   104 {
       
   105   return m_defaultTxBuffer;
       
   106 }
       
   107 uint32_t 
       
   108 TcpSocketFactory::GetDefaultRxBuffer (void) const
       
   109 {
       
   110   return m_defaultRxBuffer;
       
   111 }
       
   112 uint32_t 
       
   113 TcpSocketFactory::GetDefaultInitialCwnd (void) const
       
   114 {
       
   115   return m_defaultInitialCwnd;
       
   116 }
       
   117 uint32_t 
       
   118 TcpSocketFactory::GetDefaultConnTimeout (void) const
       
   119 {
       
   120   return m_defaultConnTimeout;
       
   121 }
       
   122 uint32_t 
       
   123 TcpSocketFactory::GetDefaultConnCount (void) const
       
   124 {
       
   125   return m_defaultConnCount;
       
   126 }
       
   127 
       
   128 double
       
   129 TcpSocketFactory::GetDefaultDelAckTimeout (void) const
       
   130 {
       
   131   return m_defaultDelAckTimeout;
       
   132 }
       
   133 
       
   134 uint32_t
       
   135 TcpSocketFactory::GetDefaultDelAckCount (void) const
       
   136 {
       
   137   return m_defaultDelAckCount;
       
   138 }
       
   139 
       
   140 } // namespace ns3