/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ /* * Copyright (c) 2007 INRIA * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation; * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author: Mathieu Lacage */ #include "ns3/object.h" #include "ns3/log.h" #include "ns3/uinteger.h" #include "ns3/double.h" #include "ns3/trace-source-accessor.h" #include "ns3/nstime.h" #include "tcp-socket.h" NS_LOG_COMPONENT_DEFINE ("TcpSocket"); namespace ns3 { NS_OBJECT_ENSURE_REGISTERED (TcpSocket); TypeId TcpSocket::GetTypeId (void) { static TypeId tid = TypeId ("ns3::TcpSocket") .SetParent () .AddAttribute ("SndBufSize", "TcpSocket maximum transmit buffer size (bytes)", UintegerValue (131072), // 128k MakeUintegerAccessor (&TcpSocket::GetSndBufSize, &TcpSocket::SetSndBufSize), MakeUintegerChecker ()) .AddAttribute ("RcvBufSize", "TcpSocket maximum receive buffer size (bytes)", UintegerValue (0xffffffffl), MakeUintegerAccessor (&TcpSocket::GetRcvBufSize, &TcpSocket::SetRcvBufSize), MakeUintegerChecker ()) .AddAttribute ("SegmentSize", "TCP maximum segment size in bytes (may be adjusted based on MTU discovery)", UintegerValue (536), MakeUintegerAccessor (&TcpSocket::GetSegSize, &TcpSocket::SetSegSize), MakeUintegerChecker ()) .AddAttribute ("SlowStartThreshold", "TCP slow start threshold (bytes)", UintegerValue (0xffff), MakeUintegerAccessor (&TcpSocket::GetSSThresh, &TcpSocket::SetSSThresh), MakeUintegerChecker ()) .AddAttribute ("InitialCwnd", "TCP initial congestion window size (segments)", UintegerValue (1), MakeUintegerAccessor (&TcpSocket::GetInitialCwnd, &TcpSocket::SetInitialCwnd), MakeUintegerChecker ()) .AddAttribute ("ConnTimeout", "TCP retransmission timeout when opening connection (seconds)", TimeValue (Seconds (3)), MakeTimeAccessor (&TcpSocket::GetConnTimeout, &TcpSocket::SetConnTimeout), MakeTimeChecker ()) .AddAttribute ("ConnCount", "Number of connection attempts (SYN retransmissions) before returning failure", UintegerValue (6), MakeUintegerAccessor (&TcpSocket::GetConnCount, &TcpSocket::SetConnCount), MakeUintegerChecker ()) .AddAttribute ("DelAckTimeout", "Timeout value for TCP delayed acks, in seconds", TimeValue (Seconds (0.2)), MakeTimeAccessor (&TcpSocket::GetDelAckTimeout, &TcpSocket::SetDelAckTimeout), MakeTimeChecker ()) .AddAttribute ("DelAckCount", "Number of packets to wait before sending a TCP ack", UintegerValue (2), MakeUintegerAccessor (&TcpSocket::GetDelAckMaxCount, &TcpSocket::SetDelAckMaxCount), MakeUintegerChecker ()) ; return tid; } TcpSocket::TcpSocket () { NS_LOG_FUNCTION_NOARGS (); } TcpSocket::~TcpSocket () { NS_LOG_FUNCTION_NOARGS (); } }; // namespace ns3