TCP provides reliable, in-sequence delivery of a full-duplex stream of octets. It is used by applications which need a reliable, connection-oriented data transport.
Defines | |
#define | max(a, b) ((a>b)?a:b) |
#define | min(a, b) ((a>b)?b:a) |
Functions | |
int | IsInLimits (u_long x, u_long low, u_long high) |
Sequence number comparisons. | |
int | NutTcpAbortSocket (TCPSOCKET *sock, u_short last_error) |
Closes socket with error. | |
void | NutTcpCalcRtt (TCPSOCKET *sock) |
int | NutTcpInitStateMachine (void) |
Start TCP state machine. | |
void | NutTcpInput (NETBUF *nb) |
Process incoming TCP segments from IP layer. | |
int | NutTcpStateActiveOpenEvent (TCPSOCKET *sock) |
Initiated by the application. | |
int | NutTcpStateCloseEvent (TCPSOCKET *sock) |
Socket close by application. | |
void | NutTcpStateMachine (NETBUF *nb) |
Process incoming TCP segments. | |
int | NutTcpStatePassiveOpenEvent (TCPSOCKET *sock) |
Initiated by the application. | |
int | NutTcpStateRetranTimeout (TCPSOCKET *sock) |
Retransmit a segment after ACK timeout. | |
int | NutTcpStateWindowEvent (TCPSOCKET *sock) |
Initiated by the application. | |
THREAD (NutTcpSm, arg) | |
Variables | |
NETBUF *volatile | tcp_in_nbq |
HANDLE | tcp_in_rdy |
Sequence number comparisons.
Return true if x is between low and high inclusive, false otherwise
Closes socket with error.
Aborts any socket activity and sets last error.
sock | Socket descriptor. | |
last_error | Error number to report |
int NutTcpInitStateMachine | ( | void | ) |
Start TCP state machine.
The socket interface will automatically call this routine as soon as the first socket is created.
void NutTcpInput | ( | NETBUF * | nb | ) |
Process incoming TCP segments from IP layer.
int NutTcpStateActiveOpenEvent | ( | TCPSOCKET * | sock | ) |
Initiated by the application.
The caller must make sure, that the socket is in closed state.
sock | Socket descriptor. This pointer must have been retrieved by calling NutTcpCreateSocket(). |
int NutTcpStateCloseEvent | ( | TCPSOCKET * | sock | ) |
Socket close by application.
If socket is in state SYN_RECEIVED or ESTABLISHED, it is changed to FINWAIT1.
No further data sending is accepted. Receiving is still allowed.
sock | Socket descriptor. This pointer must have been retrieved by calling NutTcpCreateSocket(). |
void NutTcpStateMachine | ( | NETBUF * | nb | ) |
Process incoming TCP segments.
All incoming TCP packets are passed to this routine. They will be added to a global queue and processed by the TCP state machine, which is running on a separate thread.
int NutTcpStatePassiveOpenEvent | ( | TCPSOCKET * | sock | ) |
Initiated by the application.
sock | Socket descriptor. This pointer must have been retrieved by calling NutTcpCreateSocket(). |
int NutTcpStateRetranTimeout | ( | TCPSOCKET * | sock | ) |
Retransmit a segment after ACK timeout.
This function is called by the TCP timer.
sock | Socket descriptor. This pointer must have been retrieved by calling NutTcpCreateSocket(). |
int NutTcpStateWindowEvent | ( | TCPSOCKET * | sock | ) |
Initiated by the application.
sock | Socket descriptor. This pointer must have been retrieved by calling NutTcpCreateSocket(). |