|
err_t | tcp_close (struct tcp_pcb *pcb) |
|
err_t | tcp_shutdown (struct tcp_pcb *pcb, int shut_rx, int shut_tx) |
|
void | tcp_abort (struct tcp_pcb *pcb) |
|
err_t | tcp_bind (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) |
|
struct tcp_pcb * | tcp_listen_with_backlog (struct tcp_pcb *pcb, u8_t backlog) |
|
void | tcp_recved (struct tcp_pcb *pcb, u16_t len) |
|
err_t | tcp_connect (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port, tcp_connected_fn connected) |
|
struct tcp_pcb * | tcp_new (void) |
|
struct tcp_pcb * | tcp_new_ip_type (u8_t type) |
|
void | tcp_arg (struct tcp_pcb *pcb, void *arg) |
|
void | tcp_recv (struct tcp_pcb *pcb, tcp_recv_fn recv) |
|
void | tcp_sent (struct tcp_pcb *pcb, tcp_sent_fn sent) |
|
void | tcp_err (struct tcp_pcb *pcb, tcp_err_fn err) |
|
void | tcp_accept (struct tcp_pcb *pcb, tcp_accept_fn accept) |
|
void | tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval) |
|
Transmission Control Protocol for IP
- See also
- RAW API and Netconn API
Common functions for the TCP implementation, such as functinos for manipulating the data structures and the TCP timer functions. TCP functions related to input and output is found in tcp_in.c and tcp_out.c respectively.
#define tcp_nagle_disable |
( |
|
pcb | ) |
((pcb)->flags |= TF_NODELAY) |
#define tcp_nagle_disabled |
( |
|
pcb | ) |
(((pcb)->flags & TF_NODELAY) != 0) |
#define tcp_nagle_enable |
( |
|
pcb | ) |
((pcb)->flags = (tcpflags_t)((pcb)->flags & ~TF_NODELAY)) |
void tcp_abort |
( |
struct tcp_pcb * |
pcb | ) |
|
Aborts the connection by sending a RST (reset) segment to the remote host. The pcb is deallocated. This function never fails.
ATTENTION: When calling this from one of the TCP callbacks, make sure you always return ERR_ABRT (and never return ERR_ABRT otherwise or you will risk accessing deallocated memory or memory leaks!
- Parameters
-
Used for specifying the function that should be called when a LISTENing connection has been connected to another host.
- Parameters
-
pcb | tcp_pcb to set the accept callback |
accept | callback function to call for this pcb when LISTENing connection has been connected to another host |
void tcp_arg |
( |
struct tcp_pcb * |
pcb, |
|
|
void * |
arg |
|
) |
| |
Used to specify the argument that should be passed callback functions.
- Parameters
-
pcb | tcp_pcb to set the callback argument |
arg | void pointer argument to pass to callback functions |
Binds the connection to a local port number and IP address. If the IP address is not given (i.e., ipaddr == NULL), the IP address of the outgoing network interface is used instead.
- Parameters
-
pcb | the tcp_pcb to bind (no check is done whether this pcb is already bound!) |
ipaddr | the local ip address to bind to (use IP_ADDR_ANY to bind to any local address |
port | the local port to bind to |
- Returns
- ERR_USE if the port is already in use ERR_VAL if bind failed because the PCB is not in a valid state ERR_OK if bound
Closes the connection held by the PCB.
Listening pcbs are freed and may not be referenced any more. Connection pcbs are freed if not yet connected and may not be referenced any more. If a connection is established (at least SYN received or in a closing state), the connection is closed, and put in a closing state. The pcb is then automatically freed in tcp_slowtmr(). It is therefore unsafe to reference it (unless an error is returned).
- Parameters
-
- Returns
- ERR_OK if connection has been closed another err_t if closing failed and pcb is not freed
Connects to another host. The function given as the "connected" argument will be called when the connection has been established.
- Parameters
-
pcb | the tcp_pcb used to establish the connection |
ipaddr | the remote ip address to connect to |
port | the remote tcp port to connect to |
connected | callback function to call when connected (on error, the err calback will be called) |
- Returns
- ERR_VAL if invalid arguments are given ERR_OK if connect request has been sent other err_t values if connect request couldn't be sent
Used to specify the function that should be called when a fatal error has occurred on the connection.
- Note
- The corresponding pcb is already freed when this callback is called!
- Parameters
-
pcb | tcp_pcb to set the err callback |
err | callback function to call for this pcb when a fatal error has occurred on the connection |
struct tcp_pcb* tcp_listen_with_backlog |
( |
struct tcp_pcb * |
pcb, |
|
|
u8_t |
backlog |
|
) |
| |
Set the state of the connection to be LISTEN, which means that it is able to accept incoming connections. The protocol control block is reallocated in order to consume less memory. Setting the connection to LISTEN is an irreversible process.
- Parameters
-
pcb | the original tcp_pcb |
backlog | the incoming connections queue limit |
- Returns
- tcp_pcb used for listening, consumes less memory.
- Note
- The original tcp_pcb is freed. This function therefore has to be called like this: tpcb = tcp_listen(tpcb);
Creates a new TCP protocol control block but doesn't place it on any of the TCP PCB lists. The pcb is not put on any list until binding using tcp_bind().
struct tcp_pcb* tcp_new_ip_type |
( |
u8_t |
type | ) |
|
Creates a new TCP protocol control block but doesn't place it on any of the TCP PCB lists. The pcb is not put on any list until binding using tcp_bind().
- Parameters
-
type | IP address type, see IPADDR_TYPE_XX definitions. |
- Returns
- a new tcp_pcb that initially is in state CLOSED
Used to specify the function that should be called periodically from TCP. The interval is specified in terms of the TCP coarse timer interval, which is called twice a second.
Used to specify the function that should be called when a TCP connection receives data.
- Parameters
-
pcb | tcp_pcb to set the recv callback |
recv | callback function to call for this pcb when data is received |
void tcp_recved |
( |
struct tcp_pcb * |
pcb, |
|
|
u16_t |
len |
|
) |
| |
This function should be called by the application when it has processed the data. The purpose is to advertise a larger window when the data has been processed.
- Parameters
-
pcb | the tcp_pcb for which data is read |
len | the amount of bytes that have been read by the application |
Used to specify the function that should be called when TCP data has been successfully delivered to the remote host.
- Parameters
-
pcb | tcp_pcb to set the sent callback |
sent | callback function to call for this pcb when data is successfully sent |
err_t tcp_shutdown |
( |
struct tcp_pcb * |
pcb, |
|
|
int |
shut_rx, |
|
|
int |
shut_tx |
|
) |
| |
Causes all or part of a full-duplex connection of this PCB to be shut down. This doesn't deallocate the PCB unless shutting down both sides! Shutting down both sides is the same as calling tcp_close, so if it succeds, the PCB should not be referenced any more.
- Parameters
-
pcb | PCB to shutdown |
shut_rx | shut down receive side if this is != 0 |
shut_tx | shut down send side if this is != 0 |
- Returns
- ERR_OK if shutdown succeeded (or the PCB has already been shut down) another err_t on error.