21 #ifndef TCP_SOCKET_BASE_H
22 #define TCP_SOCKET_BASE_H
26 #include "ns3/callback.h"
27 #include "ns3/traced-value.h"
28 #include "ns3/tcp-socket.h"
30 #include "ns3/ipv4-address.h"
31 #include "ns3/ipv4-header.h"
32 #include "ns3/ipv4-interface.h"
33 #include "ns3/ipv6-header.h"
34 #include "ns3/event-id.h"
85 virtual int Bind (
void);
86 virtual int Bind6 (
void);
90 virtual int Close (
void);
142 void ForwardIcmp (
Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
143 void ForwardIcmp6 (
Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo);
173 virtual uint32_t
Window (
void);
virtual void DupAck(const TcpHeader &t, uint32_t count)=0
keep track of time values and allow control of global simulation resolution
virtual int GetSockName(Address &address) const
virtual void EstimateRtt(const TcpHeader &)
virtual void ReceivedAck(Ptr< Packet >, const TcpHeader &)
virtual uint16_t AdvertisedWindowSize(void)
virtual uint32_t GetSegSize(void) const
uint32_t SendDataPacket(SequenceNumber32 seq, uint32_t maxSize, bool withAck)
(abstract) base class of all TcpSockets
Ipv4EndPoint * m_endPoint
virtual ~TcpSocketBase(void)
TracedValue< Time > m_lastRtt
virtual uint32_t GetInitialCwnd(void) const =0
virtual int ShutdownRecv(void)
void ProcessClosing(Ptr< Packet >, const TcpHeader &)
Ptr< Packet > Recv(void)
Read a single packet from the socket.
void PeerClose(Ptr< Packet >, const TcpHeader &)
virtual void SetPersistTimeout(Time timeout)
virtual int Send(Ptr< Packet > p, uint32_t flags)
virtual bool GetAllowBroadcast(void) const
Query whether broadcast datagram transmissions are allowed.
static TypeId GetTypeId(void)
virtual void AddOptions(TcpHeader &)
Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback
void CancelAllTimers(void)
virtual void ReceivedData(Ptr< Packet >, const TcpHeader &)
void ConnectionSucceeded(void)
TracedValue< SequenceNumber32 > m_nextTxSequence
virtual void SetSSThresh(uint32_t threshold)=0
trace classes with value semantics
void CompleteFork(Ptr< Packet >, const TcpHeader &, const Address &fromAddress, const Address &toAdress)
virtual Time GetPersistTimeout(void) const
virtual void PersistTimeout(void)
TracedValue< TcpStates_t > m_state
uint32_t m_delAckMaxCount
a polymophic address class
virtual uint32_t GetRcvBufSize(void) const
virtual bool GetTcpNoDelay(void) const
void ForwardIcmp6(Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
virtual void Retransmit(void)
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)
virtual uint32_t UnAckDataCount(void)
void ForwardUp(Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
virtual uint32_t GetSndBufSize(void) const
virtual enum SocketType GetSocketType(void) const
virtual void SetInitialCwnd(uint32_t cwnd)=0
Ipv6EndPoint * m_endPoint6
virtual void BindToNetDevice(Ptr< NetDevice > netdevice)
bool OutOfRange(SequenceNumber32 head, SequenceNumber32 tail) const
virtual bool SetAllowBroadcast(bool allowBroadcast)
Configure whether broadcast datagram transmissions are allowed.
virtual void SetTcpNoDelay(bool noDelay)
class for the reordering buffer that keeps the data from lower layer, i.e. TcpL4Protocol, sent to the application
virtual uint32_t GetConnCount(void) const
class for keeping the data sent by the application to the TCP socket, i.e. the sending buffer...
A base class for implementation of a stream socket using TCP.
Ptr< RttEstimator > m_rtt
virtual void SetTcp(Ptr< TcpL4Protocol > tcp)
Ptr< TcpL4Protocol > m_tcp
virtual int ShutdownSend(void)
void ProcessListen(Ptr< Packet >, const TcpHeader &, const Address &, const Address &)
virtual void SetDelAckMaxCount(uint32_t count)
void ProcessEstablished(Ptr< Packet >, const TcpHeader &)
virtual void SetNode(Ptr< Node > node)
virtual uint32_t BytesInFlight(void)
virtual int Connect(const Address &address)
void ProcessSynRcvd(Ptr< Packet >, const TcpHeader &, const Address &, const Address &)
virtual uint32_t AvailableWindow(void)
virtual Ptr< TcpSocketBase > Fork(void)=0
virtual void SetRtt(Ptr< RttEstimator > rtt)
virtual void ReTxTimeout(void)
TracedValue< SequenceNumber32 > m_highTxMark
void SendEmptyPacket(uint8_t flags)
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)
virtual void SetSndBufSize(uint32_t size)
virtual void SetDelAckTimeout(Time timeout)
virtual void NewAck(SequenceNumber32 const &seq)
void DeallocateEndPoint(void)
Describes an IPv6 address.
Ipv4 addresses are stored in host order in this class.
TracedValue< Time > m_rto
an identifier for simulation events.
virtual void SetConnCount(uint32_t count)
void ForwardUp6(Ptr< Packet > packet, Ipv6Header header, uint16_t port)
An IPv6 end point, four tuples identification.
virtual uint32_t Window(void)
void ProcessSynSent(Ptr< Packet >, const TcpHeader &)
virtual enum SocketErrno GetErrno(void) const
void ProcessWait(Ptr< Packet >, const TcpHeader &)
virtual void ReadOptions(const TcpHeader &)
virtual void SetSegSize(uint32_t size)
void ProcessLastAck(Ptr< Packet >, const TcpHeader &)
void CloseAndNotify(void)
Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > m_icmpCallback6
virtual Ptr< Node > GetNode(void) const
virtual void SetRcvBufSize(uint32_t size)
virtual Time GetDelAckTimeout(void) const
virtual void DelAckTimeout(void)
virtual void LastAckTimeout(void)
virtual void DoForwardUp(Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
virtual int Bind6(void)
Allocate a local IPv6 endpoint for this socket.
a unique identifier for an interface.
bool SendPendingData(bool withAck=false)
void ForwardIcmp(Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo)
TracedValue< uint32_t > m_rWnd
virtual void DoRetransmit(void)
A representation of an internet endpoint/connection.
virtual uint32_t GetDelAckMaxCount(void) const
virtual void SetConnTimeout(Time timeout)
virtual Time GetConnTimeout(void) const
virtual uint32_t GetTxAvailable(void) const
virtual uint32_t GetSSThresh(void) const =0
virtual uint32_t GetRxAvailable(void) const