20 #define NS_LOG_APPEND_CONTEXT \
21 if (m_node) { std::clog << Simulator::Now ().GetSeconds () << " [node " << m_node->GetId () << "] "; }
24 #include "ns3/inet-socket-address.h"
30 #include "ns3/simulation-singleton.h"
31 #include "ns3/simulator.h"
32 #include "ns3/packet.h"
33 #include "ns3/uinteger.h"
34 #include "ns3/trace-source-accessor.h"
39 #include <arpa/inet.h>
40 #include <netinet/in.h>
54 NscTcpSocketImpl::GetTypeId ()
58 .AddTraceSource (
"CongestionWindow",
59 "The TCP connection's congestion window",
65 NscTcpSocketImpl::NscTcpSocketImpl ()
71 m_peerAddress (
"0.0.0.0", 0),
72 m_errno (ERROR_NOTERROR),
73 m_shutdownSend (false),
74 m_shutdownRecv (false),
77 m_closeOnEmpty (false),
79 m_lastMeasuredRtt (
Seconds (0.0))
86 m_delAckMaxCount (sock.m_delAckMaxCount),
87 m_delAckTimeout (sock.m_delAckTimeout),
88 m_noDelay (sock.m_noDelay),
92 m_remoteAddress (sock.m_remoteAddress),
93 m_remotePort (sock.m_remotePort),
94 m_localAddress (sock.m_localAddress),
95 m_localPort (sock.m_localPort),
96 m_peerAddress (sock.m_peerAddress),
97 m_errno (sock.m_errno),
98 m_shutdownSend (sock.m_shutdownSend),
99 m_shutdownRecv (sock.m_shutdownRecv),
100 m_connected (sock.m_connected),
101 m_state (sock.m_state),
102 m_closeOnEmpty (sock.m_closeOnEmpty),
103 m_txBufferSize (sock.m_txBufferSize),
104 m_segmentSize (sock.m_segmentSize),
105 m_rxWindowSize (sock.m_rxWindowSize),
106 m_advertisedWindowSize (sock.m_advertisedWindowSize),
107 m_cWnd (sock.m_cWnd),
108 m_ssThresh (sock.m_ssThresh),
109 m_initialCWnd (sock.m_initialCWnd),
110 m_lastMeasuredRtt (
Seconds (0.0)),
111 m_cnTimeout (sock.m_cnTimeout),
112 m_cnCount (sock.m_cnCount),
115 m_sndBufSize (sock.m_sndBufSize)
220 NS_LOG_LOGIC (
"NscTcpSocketImpl: ERROR_AFNOSUPPORT - Bind6 not supported");
288 " deferring close, state " <<
m_state);
292 NS_LOG_LOGIC (
"NscTcp socket " <<
this <<
" calling disconnect(); moving to CLOSED");
316 std::ostringstream ss;
318 std::string ipstring = ss.str ();
371 return Send (p, flags);
495 struct sockaddr_in sin;
496 size_t sin_len =
sizeof(sin);
510 sin_len =
sizeof(sin);
515 NS_LOG_LOGIC (
"NscTcpSocketImpl " <<
this <<
" accepted connection from "
529 struct sockaddr_in sin;
530 size_t sin_len =
sizeof(sin);
536 NS_LOG_LOGIC (
"NscTcpSocketImpl " <<
this <<
" connected to "
583 uint8_t buffer[8192];
584 len =
sizeof(buffer);
587 if (err == 0 && len == 0)
600 "during read_data, ns-3 errno set to" <<
m_errno);
629 size_t size, written = 0;
634 size = p->GetSize ();
639 uint8_t *buf =
new uint8_t[size];
640 p->CopyData (buf, size);
653 if ((
size_t)ret < size)
655 p->RemoveAtStart (ret);
670 }
while ((
size_t) ret == size);
682 return CopyObject<NscTcpSocketImpl> (
this);