#include <FreeRTOS_TCP_WIN.h>
Every TCP connection owns a TCP window for the administration of all packets It owns two sets of segment descriptors, incoming and outgoing
| uint32_t TCPWindow_t::bHasInit |
The window structure has been initialised
| uint32_t TCPWindow_t::bSendFullSize |
May only send packets with a size equal to MSS (for optimisation)
| uint32_t TCPWindow_t::bTimeStamps |
Socket is supposed to use TCP time-stamps. This depends on the
| struct { ... } TCPWindow_t::bits |
party which opens the connection
| union { ... } TCPWindow_t::u |
Use a union to store the 32-bit flag field and the breakdown at the same place.
| TCPWinSize_t TCPWindow_t::xSize |
Size of the TCP window.
| uint32_t TCPWindow_t::ulFirstSequenceNumber |
Logging & debug: the first segment received/sent in this connection for Tx: initial send sequence number (ISS) for Rx: initial receive sequence number (IRS)
| uint32_t TCPWindow_t::ulCurrentSequenceNumber |
Tx/Rx: the oldest sequence number not yet confirmed, also SND.UNA / RCV.NXT In other words: the sequence number of the left side of the sliding window
| uint32_t TCPWindow_t::ulFINSequenceNumber |
The sequence number which carried the FIN flag
| uint32_t TCPWindow_t::ulHighestSequenceNumber |
Sequence number of the right-most byte + 1
| struct { ... } TCPWindow_t::rx |
Structure for the receiver for TCP.
| struct { ... } TCPWindow_t::tx |
Structure for the transmitter for TCP.
| uint32_t TCPWindow_t::ulOurSequenceNumber |
The SEQ number we're sending out
| uint32_t TCPWindow_t::ulUserDataLength |
Number of bytes in Rx buffer which may be passed to the user, after having received a 'missing packet'
| uint32_t TCPWindow_t::ulNextTxSequenceNumber |
The sequence number given to the next byte to be added for transmission
| int32_t TCPWindow_t::lSRTT |
Smoothed Round Trip Time, it may increment quickly and it decrements slower
| uint8_t TCPWindow_t::ucOptionLength |
Number of valid bytes in ulOptionsData[]
| List_t TCPWindow_t::xPriorityQueue |
Priority queue: segments which must be sent immediately
| List_t TCPWindow_t::xTxQueue |
Transmit queue: segments queued for transmission
| List_t TCPWindow_t::xWaitQueue |
Waiting queue: outstanding segments
| TCPSegment_t* TCPWindow_t::pxHeadSegment |
points to a segment which has not been transmitted and it's size is still growing (user data being added)
| uint32_t TCPWindow_t::ulOptionsData[ipSIZE_TCP_OPTIONS/sizeof(uint32_t)] |
Contains the options we send out
| List_t TCPWindow_t::xTxSegments |
A linked list of all transmission segments, sorted on sequence number
| List_t TCPWindow_t::xRxSegments |
A linked list of reception segments, order depends on sequence of arrival
| uint16_t TCPWindow_t::usOurPortNumber |
Mostly for debugging/logging: our TCP port number
| uint16_t TCPWindow_t::usPeerPortNumber |
debugging/logging: the peer's TCP port number
| uint16_t TCPWindow_t::usMSS |
Current accepted MSS
| uint16_t TCPWindow_t::usMSSInit |
MSS as configured by the socket owner