|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
21 #ifndef TCP_SOCKET_BASE_H
22 #define TCP_SOCKET_BASE_H
26 #include "ns3/traced-value.h"
27 #include "ns3/tcp-socket.h"
28 #include "ns3/ipv4-header.h"
29 #include "ns3/ipv6-header.h"
30 #include "ns3/timer.h"
31 #include "ns3/sequence-number.h"
32 #include "ns3/data-rate.h"
34 #include "ns3/tcp-socket-state.h"
44 class TcpCongestionOps;
382 void UpdateCwnd (uint32_t oldValue, uint32_t newValue);
464 return ((tos & 0xfc) | 0x02);
475 return ((tos & 0xfc) | 0x01);
486 return ((tos & 0xfc) | 0x03);
508 return ((tos & 0x03) == 0x00);
519 return ((tos & 0x03) == 0x02);
530 return ((tos & 0x03) == 0x01);
541 return ((tos & 0x03) == 0x03);
553 return ((tos & 0xfc) | codePoint);
579 virtual int Bind (
void);
580 virtual int Bind6 (
void);
583 virtual int Listen (
void);
584 virtual int Close (
void);
703 const uint32_t tcpPayloadSize);
749 void ForwardIcmp (
Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
760 void ForwardIcmp6 (
Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
953 virtual uint32_t
Window (
void)
const;
1032 bool isRetransmission);
1046 void DupAck (uint32_t currentDelivered);
1053 void EnterCwr (uint32_t currentDelivered);
1235 uint32_t
GetRWnd (
void)
const;
virtual uint32_t Window(void) const
Return the max possible number of unacked bytes.
void SetRetxThresh(uint32_t retxThresh)
Set the retransmission threshold (dup ack threshold for a fast retransmit)
void AddOptionTimestamp(TcpHeader &header)
Add the timestamp option to the header.
EventId m_lastAckEvent
Last ACK timeout event.
virtual void SendEmptyPacket(uint8_t flags)
Send a empty packet that carries a flag, e.g., ACK.
a unique identifier for an interface.
virtual void SetSynRetries(uint32_t count)
Set the number of connection retries before giving up.
virtual void SetTcp(Ptr< TcpL4Protocol > tcp)
Set the associated TCP L4 protocol.
void ForwardUp(Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
Called by the L3 protocol when it received a packet to pass on to TCP.
TracedValue< SequenceNumber32 > m_ecnCWRSeq
Sequence number of the last sent CWR.
virtual uint16_t AdvertisedWindowSize(bool scale=true) const
The amount of Rx window announced to the peer.
void ForwardIcmp6(Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
Called by the L3 protocol when it received an ICMPv6 packet to pass on to TCP.
Ptr< TcpTxBuffer > GetTxBuffer(void) const
Get a pointer to the Tx buffer.
void AddSocketTags(const Ptr< Packet > &p) const
Add Tags for the Socket.
uint8_t m_sndWindShift
Window shift to apply to incoming segments.
bool CheckEcnEct0(uint8_t tos) const
Checks for ECT(0) codepoint.
EventId m_sendPendingDataEvent
micro-delay event to send pending data
An identifier for simulation events.
void SendRST(void)
Send reset and tear down this socket.
void SetMinRto(Time minRto)
Sets the Minimum RTO.
void UpdatePacingRate(void)
Dynamically update the pacing rate.
SocketErrno
Enumeration of the possible errors returned by a socket.
virtual int ShutdownSend(void)
void AddOptionSack(TcpHeader &header)
Add the SACK option to the header.
void UpdateCwndInfl(uint32_t oldValue, uint32_t newValue)
Callback function to hook to TcpSocketState inflated congestion window.
virtual void SetRcvBufSize(uint32_t size)
Set the receive buffer size.
int SetupEndpoint6(void)
Configure the endpoint v6 to a local address.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
bool IsTcpOptionEnabled(uint8_t kind) const
Return true if the specified option is enabled.
RttHistory(SequenceNumber32 s, uint32_t c, Time t)
Constructor - builds an RttHistory with the given parameters.
A representation of an IPv6 endpoint/connection.
Time GetClockGranularity(void) const
Get the Clock Granularity (used in RTO calcs).
Ptr< Packet > Recv(void)
Read a single packet from the socket.
virtual ~TcpSocketBase(void)
uint32_t m_delAckMaxCount
Number of packet to fire an ACK before delay timeout.
void ForwardIcmp(Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
Called by the L3 protocol when it received an ICMP packet to pass on to TCP.
void(* TcpTxRxTracedCallback)(const Ptr< const Packet > packet, const TcpHeader &header, const Ptr< const TcpSocketBase > socket)
TracedCallback signature for tcp packet transmission or reception events.
Ptr< Node > m_node
the associated node
int DoConnect(void)
Perform the real connection tasks: Send SYN if allowed, RST if invalid.
void SetRecoveryAlgorithm(Ptr< TcpRecoveryOps > recovery)
Install a recovery algorithm on this socket.
virtual uint32_t BytesInFlight(void) const
Return total bytes in flight.
virtual void PersistTimeout(void)
Send 1 byte probe to get an updated window size.
virtual void SetDataRetries(uint32_t retries)
Set the number of data transmission retries before giving up.
virtual void SetSegSize(uint32_t size)
Set the segment size.
static TypeId GetTypeId(void)
Get the type ID.
TracedCallback< SequenceNumber32, SequenceNumber32 > m_highTxMarkTrace
Callback pointer for high tx mark chaining.
static uint32_t SafeSubtraction(uint32_t a, uint32_t b)
Performs a safe subtraction between a and b (a-b)
void ProcessWait(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received a packet upon CLOSE_WAIT, FIN_WAIT_1, FIN_WAIT_2.
uint8_t m_rcvWindShift
Window shift to apply to outgoing segments.
virtual void SetTcpNoDelay(bool noDelay)
Enable/Disable Nagle's algorithm.
virtual int ShutdownRecv(void)
TcpCongState_t
Definition of the Congestion state machine.
TracedValue< SequenceNumber32 > m_ecnCESeq
Sequence number of the last received Congestion Experienced.
Time time
Time this one was sent.
bool m_closeOnEmpty
Close socket upon tx buffer emptied.
TracedValue< SequenceNumber32 > m_ecnEchoSeq
Sequence number of the last received ECN Echo.
TracedValue< SequenceNumber32 > m_highRxMark
Highest seqno received.
virtual void BindToNetDevice(Ptr< NetDevice > netdevice)
Bind a socket to specific device.
virtual int Close(void)
Close a socket.
virtual void DoForwardUp(Ptr< Packet > packet, const Address &fromAddress, const Address &toAddress)
Called by TcpSocketBase::ForwardUp{,6}().
void ProcessSynRcvd(Ptr< Packet > packet, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress)
Received a packet upon SYN_RCVD.
void SetPaceInitialWindow(bool paceWindow)
Enable or disable pacing of the initial window.
virtual uint32_t GetDelAckMaxCount(void) const
Get the number of packet to fire an ACK before delay timeout.
Ipv4 addresses are stored in host order in this class.
Describes an IPv6 address.
void AddOptions(TcpHeader &tcpHeader)
Add options to TcpHeader.
SequenceNumber32 seq
First sequence number in packet sent.
uint8_t MarkEcnEct1(uint8_t tos) const
Mark ECT(1) codepoint.
EventId m_retxEvent
Retransmission event.
bool m_shutdownSend
Send no longer allowed.
virtual void ReTxTimeout(void)
An RTO event happened.
void ProcessOptionTimestamp(const Ptr< const TcpOption > option, const SequenceNumber32 &seq)
Process the timestamp option from other side.
Time GetMinRto(void) const
Get the Minimum RTO.
virtual uint32_t AvailableWindow(void) const
Return unfilled portion of window.
EcnCodePoint_t
ECN code points.
uint32_t m_dupAckCount
Dupack counter.
uint32_t m_timestampToEcho
Timestamp to echo.
TracedCallback< uint32_t, uint32_t > m_bytesInFlightTrace
Callback pointer for bytesInFlight trace chaining.
Ipv4EndPoint * m_endPoint
the IPv4 endpoint
virtual enum SocketErrno GetErrno(void) const
Get last error number.
A base class for implementation of a stream socket using TCP.
Ptr< TcpRecoveryOps > m_recoveryOps
Recovery Algorithm.
Ptr< TcpSocketState > m_tcb
Congestion control information.
int SetupCallback(void)
Common part of the two Bind(), i.e.
uint32_t m_dataRetrCount
Count of remaining data retransmission attempts.
uint32_t GetRWnd(void) const
Get the current value of the receiver's offered window (RCV.WND)
Helper class to store RTT measurements.
void UpdateCongState(TcpSocketState::TcpCongState_t oldValue, TcpSocketState::TcpCongState_t newValue)
Callback function to hook to TcpSocketState congestion state.
void ReadOptions(const TcpHeader &tcpHeader, uint32_t *bytesSacked)
Read TCP options before Ack processing.
void ProcessOptionSackPermitted(const Ptr< const TcpOption > option)
Read the SACK PERMITTED option.
void Destroy(void)
Kill this socket by zeroing its attributes (IPv4)
bool m_shutdownRecv
Receive no longer allowed.
bool m_noDelay
Set to true to disable Nagle's algorithm.
A simple virtual Timer class.
uint16_t m_maxWinSize
Maximum window size to advertise.
void UpdateEcnState(TcpSocketState::EcnState_t oldValue, TcpSocketState::EcnState_t newValue)
Callback function to hook to EcnState state.
TracedValue< uint32_t > m_advWnd
Advertised Window size.
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)
Read a single packet from the socket and retrieve the sender address.
virtual Time GetDelAckTimeout(void) const
Get the time to delay an ACK.
virtual uint32_t UnAckDataCount(void) const
Return count of number of unacked bytes.
virtual uint32_t GetInitialSSThresh(void) const
Get the initial Slow Start Threshold.
Ptr< TcpL4Protocol > m_tcp
the associated TCP L4 protocol
Class for representing data rates.
bool CheckEcnEct1(uint8_t tos) const
Checks for ECT(1) codepoint.
void UpdateNextTxSequence(SequenceNumber32 oldValue, SequenceNumber32 newValue)
Callback function to hook to TcpSocketState next tx sequence.
uint32_t GetRetxThresh(void) const
Get the retransmission threshold (dup ack threshold for a fast retransmit)
void DeallocateEndPoint(void)
Deallocate m_endPoint and m_endPoint6.
bool retx
True if this has been retransmitted.
int DoClose(void)
Close a socket by sending RST, FIN, or FIN+ACK, depend on the current state.
void(* TcpCongStatesTracedValueCallback)(const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue)
TracedValue Callback signature for TcpCongState_t.
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)
Send data to a specified peer.
uint32_t m_bytesAckedNotProcessed
Bytes acked, but not processed.
void ProcessOptionWScale(const Ptr< const TcpOption > option)
Read and parse the Window scale option.
Time m_delAckTimeout
Time to delay an ACK.
int SetupEndpoint(void)
Configure the endpoint to a local address.
a polymophic address class
EventId m_delAckEvent
Delayed ACK timeout event.
bool m_limitedTx
perform limited transmit
uint8_t ClearEcnBits(uint8_t tos) const
Clears ECN bits from TOS.
Time m_persistTimeout
Time between sending 1-byte probes.
virtual Ptr< Node > GetNode(void) const
Return the node this socket is associated with.
virtual int Connect(const Address &address)
Initiate a connection to a remote host.
virtual uint32_t GetSndBufSize(void) const
Get the send buffer size.
Time m_clockGranularity
Clock Granularity used in RTO calcs.
Ptr< TcpRateOps > m_rateOps
Rate operations.
TracedCallback< Time, Time > m_lastRttTrace
Callback pointer for RTT trace chaining.
(abstract) base class of all TcpSockets
Ptr< TcpRxBuffer > GetRxBuffer(void) const
Get a pointer to the Rx buffer.
Ipv6EndPoint * m_endPoint6
the IPv6 endpoint
static Time Max()
Maximum representable Time Not to be confused with Max(Time,Time).
uint32_t m_dataRetries
Number of data retransmission attempts.
Ptr< TcpTxBuffer > m_txBuffer
Tx buffer.
virtual void ReceivedAck(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received an ACK packet.
SocketType
Enumeration of the possible socket types.
virtual uint32_t GetDataRetries(void) const
Get the number of data transmission retries before giving up.
uint8_t MarkEcnEct0(uint8_t tos) const
Mark ECT(0) codepoint.
@ CLOSED
Socket is finished
void(* EcnStatesTracedValueCallback)(const TcpSocketState::EcnState_t oldValue, const TcpSocketState::EcnState_t newValue)
TracedValue Callback signature for ECN state trace.
virtual void SetDelAckTimeout(Time timeout)
Set the time to delay an ACK.
bool OutOfRange(SequenceNumber32 head, SequenceNumber32 tail) const
Check if a sequence number range is within the rx window.
TracedCallback< SequenceNumber32, SequenceNumber32 > m_nextTxSequenceTrace
Callback pointer for next tx sequence chaining.
virtual void SetNode(Ptr< Node > node)
Set the associated node.
void ProcessEstablished(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received a packet upon ESTABLISHED state.
virtual void LastAckTimeout(void)
Timeout at LAST_ACK, close the connection.
Simulation virtual time values and global simulation resolution.
virtual uint32_t GetInitialCwnd(void) const
Get the initial Congestion Window.
uint32_t SendPendingData(bool withAck=false)
Send as much pending data as possible according to the Tx window.
uint8_t MarkEcnCodePoint(const uint8_t tos, const TcpSocketState::EcnCodePoint_t codePoint) const
mark ECN code point
void AddOptionSackPermitted(TcpHeader &header)
Add the SACK PERMITTED option to the header.
@ CANCEL_ON_DESTROY
This policy cancels the event from the destructor of the Timer or from Suspend().
virtual uint32_t GetRcvBufSize(void) const
Get the receive buffer size.
virtual void CompleteFork(Ptr< Packet > p, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress)
Complete a connection by forking the socket.
void EnterRecovery(uint32_t currentDelivered)
Enter the CA_RECOVERY, and retransmit the head.
bool m_sackEnabled
RFC SACK option enabled.
uint8_t CalculateWScale() const
Calculate window scale value based on receive buffer space.
EcnState_t
Definition of the Ecn state machine.
virtual int GetSockName(Address &address) const
Get socket address.
uint8_t MarkEcnCe(uint8_t tos) const
Mark CE codepoint.
virtual int Listen(void)
Listen for incoming connections.
virtual bool GetTcpNoDelay(void) const
Check if Nagle's algorithm is enabled or not.
TracedValue< TcpStates_t > m_state
TCP state.
General infrastructure for TCP testing.
virtual uint32_t SendDataPacket(SequenceNumber32 seq, uint32_t maxSize, bool withAck)
Extract at most maxSize bytes from the TxBuffer at sequence seq, add the TCP header,...
virtual void SetInitialCwnd(uint32_t cwnd)
Set the initial Congestion Window.
virtual TypeId GetInstanceTypeId() const
Get the instance TypeId.
virtual void SetSndBufSize(uint32_t size)
Set the send buffer size.
TracedCallback< Ptr< const Packet >, const TcpHeader &, Ptr< const TcpSocketBase > > m_rxTrace
Trace of received packets.
Ptr< RttEstimator > m_rtt
Round trip time estimator.
bool IsPacingEnabled(void) const
Return true if packets in the current window should be paced.
virtual void SetInitialSSThresh(uint32_t threshold)
Set the initial Slow Start Threshold.
virtual uint32_t GetSynRetries(void) const
Get the number of connection retries before giving up.
Time m_minRto
minimum value of the Retransmit timeout
void UpdateBytesInFlight(uint32_t oldValue, uint32_t newValue)
Callback function to hook to TcpSocketState bytes inflight.
SequenceNumber32 m_recover
Previous highest Tx seqnum for fast recovery (set it to initial seq number)
virtual bool SetAllowBroadcast(bool allowBroadcast)
Configure whether broadcast datagram transmissions are allowed.
void UpdateRtt(Time oldValue, Time newValue)
Callback function to hook to TcpSocketState rtt.
void ForwardUp6(Ptr< Packet > packet, Ipv6Header header, uint16_t port, Ptr< Ipv6Interface > incomingInterface)
Called by the L3 protocol when it received a packet to pass on to TCP.
Ptr< TcpCongestionOps > m_congestionControl
Congestion control.
void SetPacingStatus(bool pacing)
Enable or disable pacing.
double m_msl
Max segment lifetime.
UseEcn_t
Parameter value related to ECN enable/disable functionality similar to sysctl for tcp_ecn.
void UpdateWindowSize(const TcpHeader &header)
Update the receiver window (RWND) based on the value of the window field in the header.
TracedCallback< uint32_t, uint32_t > m_cWndInflTrace
Callback pointer for cWndInfl trace chaining.
void ConnectionSucceeded(void)
Schedule-friendly wrapper for Socket::NotifyConnectionSucceeded()
virtual void SetDelAckMaxCount(uint32_t count)
Set the number of packet to fire an ACK before delay timeout.
uint32_t count
Number of bytes sent.
uint32_t m_delAckCount
Delayed ACK counter.
void DoPeerClose(void)
FIN is in sequence, notify app and respond with a FIN.
bool CheckNoEcn(uint8_t tos) const
Checks if TOS has no ECN codepoints.
TracedValue< SequenceNumber32 > m_highRxAckMark
Highest ack received.
virtual Time GetPersistTimeout(void) const
Get the timeout for persistent connection.
void UpdateHighTxMark(SequenceNumber32 oldValue, SequenceNumber32 newValue)
Callback function to hook to TcpSocketState high tx mark.
Time Seconds(double value)
Construct a Time in the indicated unit.
void DoRetransmit(void)
Retransmit the first segment marked as lost, without considering available window nor pacing.
uint32_t m_synCount
Count of remaining connection retries.
std::deque< RttHistory > m_history
List of sent packet.
TracedValue< Time > m_rto
Retransmit timeout.
virtual void SetConnTimeout(Time timeout)
Set the connection timeout.
SequenceNumber32 GetHighRxAck(void) const
Get the current value of the receiver's highest (in-sequence) sequence number acked.
void ProcessListen(Ptr< Packet > packet, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress)
Received a packet upon LISTEN state.
void UpdateSsThresh(uint32_t oldValue, uint32_t newValue)
Callback function to hook to TcpSocketState slow start threshold.
void SetCongestionControlAlgorithm(Ptr< TcpCongestionOps > algo)
Install a congestion control algorithm on this socket.
void ProcessClosing(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received a packet upon CLOSING.
bool m_closeNotified
Told app to close socket.
TracedCallback< TcpSocketState::EcnState_t, TcpSocketState::EcnState_t > m_ecnStateTrace
Callback pointer for ECN state trace chaining.
uint32_t ProcessOptionSack(const Ptr< const TcpOption > option)
Read the SACK option.
bool m_isFirstPartialAck
First partial ACK during RECOVERY.
void Destroy6(void)
Kill this socket by zeroing its attributes (IPv6)
TracedCallback< TcpSocketState::TcpCongState_t, TcpSocketState::TcpCongState_t > m_congStateTrace
Callback pointer for congestion state trace chaining.
virtual uint32_t GetRxAvailable(void) const
Return number of bytes which can be returned from one or multiple calls to Recv.
EventId m_persistEvent
Persist event: Send 1 byte to probe for a non-zero Rx window.
void SetUseEcn(TcpSocketState::UseEcn_t useEcn)
Set ECN mode of use on the socket.
void UpdatePacingRateTrace(DataRate oldValue, DataRate newValue)
Callback function to hook to TcpSocketState pacing rate.
virtual void UpdateRttHistory(const SequenceNumber32 &seq, uint32_t sz, bool isRetransmission)
Update the RTT history, when we send TCP segments.
TracedCallback< Ptr< const Packet >, const TcpHeader &, Ptr< const TcpSocketBase > > m_txTrace
Trace of transmitted packets.
TcpSocketBase(void)
Create an unbound TCP socket.
void DupAck(uint32_t currentDelivered)
Dupack management.
bool m_timestampEnabled
Timestamp option enabled.
virtual void DelAckTimeout(void)
Action upon delay ACK timeout, i.e.
bool m_winScalingEnabled
Window Scale option enabled (RFC 7323)
virtual int Bind6(void)
Allocate a local IPv6 endpoint for this socket.
virtual enum SocketType GetSocketType(void) const
virtual void ReceivedData(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Recv of a data, put into buffer, call L7 to get it if necessary.
void SetClockGranularity(Time clockGranularity)
Sets the Clock Granularity (used in RTO calcs).
Forward calls to a chain of Callback.
Timer m_pacingTimer
Pacing Event.
virtual void SetRtt(Ptr< RttEstimator > rtt)
Set the associated RTT estimator.
uint32_t m_retxThresh
Fast Retransmit threshold.
virtual void ProcessAck(const SequenceNumber32 &ackNumber, bool scoreboardUpdated, uint32_t currentDelivered, const SequenceNumber32 &oldHeadSequence)
Process a received ack.
void AddOptionWScale(TcpHeader &header)
Add the window scale option to the header.
virtual uint32_t GetTxAvailable(void) const
Returns the number of bytes which can be sent in a single call to Send.
virtual void EstimateRtt(const TcpHeader &tcpHeader)
Take into account the packet for RTT estimation.
void ProcessSynSent(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received a packet upon SYN_SENT.
void CloseAndNotify(void)
Peacefully close the socket by notifying the upper layer and deallocate end point.
virtual uint32_t GetSegSize(void) const
Get the segment size.
TracedCallback< uint32_t, uint32_t > m_cWndTrace
Callback pointer for cWnd trace chaining.
void TimeWait(void)
Move from CLOSING or FIN_WAIT_2 to TIME_WAIT state.
virtual bool GetAllowBroadcast(void) const
Query whether broadcast datagram transmissions are allowed.
uint32_t m_synRetries
Number of connection attempts.
TracedCallback< DataRate, DataRate > m_pacingRateTrace
Callback pointer for pacing rate trace chaining.
virtual int GetPeerName(Address &address) const
Get the peer address of a connected socket.
Time m_cnTimeout
Timeout for connection retry.
void NotifyPacingPerformed(void)
Notify Pacing.
virtual void SetPersistTimeout(Time timeout)
Set the timeout for persistent connection.
virtual Time GetConnTimeout(void) const
Get the connection timeout.
Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback6
ICMPv6 callback.
virtual int Bind(void)
Allocate a local IPv4 endpoint for this socket.
void ProcessLastAck(Ptr< Packet > packet, const TcpHeader &tcpHeader)
Received a packet upon LAST_ACK.
void CancelAllTimers(void)
Cancel all timer when endpoint is deleted.
A representation of an internet endpoint/connection.
virtual int Send(Ptr< Packet > p, uint32_t flags)
Send data (or dummy data) to the remote host.
bool IsValidTcpSegment(const SequenceNumber32 seq, const uint32_t tcpHeaderSize, const uint32_t tcpPayloadSize)
Checks whether the given TCP segment is valid or not.
void EnterCwr(uint32_t currentDelivered)
Enter CA_CWR state upon receipt of an ECN Echo.
Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback
ICMP callback.
void PeerClose(Ptr< Packet > p, const TcpHeader &tcpHeader)
Received a FIN from peer, notify rx buffer.
virtual Ptr< TcpSocketBase > Fork(void)
Call CopyObject<> to clone me.
virtual void NewAck(SequenceNumber32 const &seq, bool resetRTO)
Update buffers w.r.t.
bool CheckEcnCe(uint8_t tos) const
Checks for CE codepoint.
SequenceNumber32 m_highTxAck
Highest ack sent.
TracedCallback< uint32_t, uint32_t > m_ssThTrace
Callback pointer for ssTh trace chaining.
TracedValue< uint32_t > m_rWnd
Receiver window (RCV.WND in RFC793)
bool m_recoverActive
Whether "m_recover" has been set/activated It is used to avoid comparing with the old m_recover value...
void UpdateCwnd(uint32_t oldValue, uint32_t newValue)
Callback function to hook to TcpSocketState congestion window.
EventId m_timewaitEvent
TIME_WAIT expiration event: Move this socket to CLOSED state.
bool m_connected
Connection established.