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>
57 .AddTraceSource (
"CongestionWindow",
58 "The TCP connection's congestion window",
70 m_peerAddress (
"0.0.0.0", 0),
71 m_errno (ERROR_NOTERROR),
72 m_shutdownSend (false),
73 m_shutdownRecv (false),
76 m_closeOnEmpty (false),
78 m_lastMeasuredRtt (Seconds (0.0))
85 m_delAckMaxCount (sock.m_delAckMaxCount),
86 m_delAckTimeout (sock.m_delAckTimeout),
87 m_noDelay (sock.m_noDelay),
91 m_remoteAddress (sock.m_remoteAddress),
92 m_remotePort (sock.m_remotePort),
93 m_localAddress (sock.m_localAddress),
94 m_localPort (sock.m_localPort),
95 m_peerAddress (sock.m_peerAddress),
96 m_errno (sock.m_errno),
97 m_shutdownSend (sock.m_shutdownSend),
98 m_shutdownRecv (sock.m_shutdownRecv),
99 m_connected (sock.m_connected),
100 m_state (sock.m_state),
101 m_closeOnEmpty (sock.m_closeOnEmpty),
102 m_txBufferSize (sock.m_txBufferSize),
103 m_segmentSize (sock.m_segmentSize),
104 m_rxWindowSize (sock.m_rxWindowSize),
105 m_advertisedWindowSize (sock.m_advertisedWindowSize),
106 m_cWnd (sock.m_cWnd),
107 m_ssThresh (sock.m_ssThresh),
108 m_initialCWnd (sock.m_initialCWnd),
109 m_lastMeasuredRtt (Seconds (0.0)),
110 m_cnTimeout (sock.m_cnTimeout),
111 m_cnCount (sock.m_cnCount),
114 m_sndBufSize (sock.m_sndBufSize)
219 NS_LOG_LOGIC (
"NscTcpSocketImpl: ERROR_AFNOSUPPORT - Bind6 not supported");
287 " deferring close, state " <<
m_state);
291 NS_LOG_LOGIC (
"NscTcp socket " <<
this <<
" calling disconnect(); moving to CLOSED");
315 std::ostringstream ss;
317 std::string ipstring = ss.str ();
370 return Send (p, flags);
494 struct sockaddr_in sin;
495 size_t sin_len =
sizeof(sin);
509 sin_len =
sizeof(sin);
514 NS_LOG_LOGIC (
"NscTcpSocketImpl " <<
this <<
" accepted connection from "
528 struct sockaddr_in sin;
529 size_t sin_len =
sizeof(sin);
535 NS_LOG_LOGIC (
"NscTcpSocketImpl " <<
this <<
" connected to "
582 uint8_t buffer[8192];
583 len =
sizeof(buffer);
586 if (err == 0 && len == 0)
599 "during read_data, ns-3 errno set to" <<
m_errno);
628 size_t size, written = 0;
633 size = p->GetSize ();
638 uint8_t *buf =
new uint8_t[size];
639 p->CopyData (buf, size);
652 if ((
size_t)ret < size)
654 p->RemoveAtStart (ret);
669 }
while ((
size_t) ret == size);
681 return CopyObject<NscTcpSocketImpl> (
this);