lwIP  2.1.0
Lightweight IP stack
tcp.h File Reference
#include "lwip/opt.h"
#include "lwip/tcpbase.h"
#include "lwip/mem.h"
#include "lwip/pbuf.h"
#include "lwip/ip.h"
#include "lwip/icmp.h"
#include "lwip/err.h"
#include "lwip/ip6.h"
#include "lwip/ip6_addr.h"

Data Structures

struct  tcp_ext_arg_callbacks
 
struct  tcp_pcb_listen
 
struct  tcp_pcb
 

Macros

#define TCP_PCB_COMMON(type)
 
#define tcp_mss(pcb)   ((pcb)->mss)
 
#define tcp_sndbuf(pcb)   (TCPWND16((pcb)->snd_buf))
 
#define tcp_sndqueuelen(pcb)   ((pcb)->snd_queuelen)
 
#define tcp_nagle_disable(pcb)   tcp_set_flags(pcb, TF_NODELAY)
 
#define tcp_nagle_enable(pcb)   tcp_clear_flags(pcb, TF_NODELAY)
 
#define tcp_nagle_disabled(pcb)   tcp_is_flag_set(pcb, TF_NODELAY)
 
#define tcp_listen(pcb)   tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG)
 

Typedefs

typedef err_t(* tcp_accept_fn) (void *arg, struct tcp_pcb *newpcb, err_t err)
 
typedef err_t(* tcp_recv_fn) (void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
 
typedef err_t(* tcp_sent_fn) (void *arg, struct tcp_pcb *tpcb, u16_t len)
 
typedef err_t(* tcp_poll_fn) (void *arg, struct tcp_pcb *tpcb)
 
typedef void(* tcp_err_fn) (void *arg, err_t err)
 
typedef err_t(* tcp_connected_fn) (void *arg, struct tcp_pcb *tpcb, err_t err)
 
typedef void(* tcp_extarg_callback_pcb_destroyed_fn) (u8_t id, void *data)
 
typedef err_t(* tcp_extarg_callback_passive_open_fn) (u8_t id, struct tcp_pcb_listen *lpcb, struct tcp_pcb *cpcb)
 

Functions

struct tcp_pcbtcp_new (void)
 
struct tcp_pcbtcp_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)
 
void tcp_backlog_delayed (struct tcp_pcb *pcb)
 
void tcp_backlog_accepted (struct tcp_pcb *pcb)
 
void tcp_recved (struct tcp_pcb *pcb, u16_t len)
 
err_t tcp_bind (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
 
void tcp_bind_netif (struct tcp_pcb *pcb, const struct netif *netif)
 
err_t tcp_connect (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port, tcp_connected_fn connected)
 
struct tcp_pcbtcp_listen_with_backlog_and_err (struct tcp_pcb *pcb, u8_t backlog, err_t *err)
 
struct tcp_pcbtcp_listen_with_backlog (struct tcp_pcb *pcb, u8_t backlog)
 
void tcp_abort (struct tcp_pcb *pcb)
 
err_t tcp_close (struct tcp_pcb *pcb)
 
err_t tcp_shutdown (struct tcp_pcb *pcb, int shut_rx, int shut_tx)
 
err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags)
 
void tcp_setprio (struct tcp_pcb *pcb, u8_t prio)
 
err_t tcp_output (struct tcp_pcb *pcb)
 
u8_t tcp_ext_arg_alloc_id (void)
 
void tcp_ext_arg_set_callbacks (struct tcp_pcb *pcb, uint8_t id, const struct tcp_ext_arg_callbacks *const callbacks)
 
void tcp_ext_arg_set (struct tcp_pcb *pcb, uint8_t id, void *arg)
 
void * tcp_ext_arg_get (const struct tcp_pcb *pcb, uint8_t id)
 

Detailed Description

TCP API (to be used from TCPIP thread)
See also TCP

Macro Definition Documentation

◆ TCP_PCB_COMMON

#define TCP_PCB_COMMON (   type)
Value:
type *next; /* for the linked list */ \
void *callback_arg; \
TCP_PCB_EXTARGS \
enum tcp_state state; /* TCP state */ \
u8_t prio; \
/* ports are in host byte order */ \
u16_t local_port

members common to struct tcp_pcb and struct tcp_listen_pcb

Typedef Documentation

◆ tcp_accept_fn

typedef err_t(* tcp_accept_fn) (void *arg, struct tcp_pcb *newpcb, err_t err)

Function prototype for tcp accept callback functions. Called when a new connection can be accepted on a listening pcb.

Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
newpcbThe new connection pcb
errAn error code if there has been an error accepting. Only return ERR_ABRT if you have called tcp_abort from within the callback function!

◆ tcp_connected_fn

typedef err_t(* tcp_connected_fn) (void *arg, struct tcp_pcb *tpcb, err_t err)

Function prototype for tcp connected callback functions. Called when a pcb is connected to the remote side after initiating a connection attempt by calling tcp_connect().

Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
tpcbThe connection pcb which is connected
errAn unused error code, always ERR_OK currently ;-)
Note
When a connection attempt fails, the error callback is currently called!

◆ tcp_err_fn

typedef void(* tcp_err_fn) (void *arg, err_t err)

Function prototype for tcp error callback functions. Called when the pcb receives a RST or is unexpectedly closed for any other reason.

Note
The corresponding pcb is already freed when this callback is called!
Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
errError code to indicate why the pcb has been closed ERR_ABRT: aborted through tcp_abort or by a TCP timer ERR_RST: the connection was reset by the remote host

◆ tcp_extarg_callback_passive_open_fn

typedef err_t(* tcp_extarg_callback_passive_open_fn) (u8_t id, struct tcp_pcb_listen *lpcb, struct tcp_pcb *cpcb)

Function prototype to transition arguments from a listening pcb to an accepted pcb

Parameters
idext arg id (allocated via tcp_ext_arg_alloc_id)
lpcbthe listening pcb accepting a connection
cpcbthe newly allocated connection pcb
Returns
ERR_OK if OK, any error if connection should be dropped

◆ tcp_extarg_callback_pcb_destroyed_fn

typedef void(* tcp_extarg_callback_pcb_destroyed_fn) (u8_t id, void *data)

Function prototype for deallocation of arguments. Called just before the pcb is freed, so don't expect to be able to do anything with this pcb!

Parameters
idext arg id (allocated via tcp_ext_arg_alloc_id)
datapointer to the data (set via tcp_ext_arg_set before)

◆ tcp_poll_fn

typedef err_t(* tcp_poll_fn) (void *arg, struct tcp_pcb *tpcb)

Function prototype for tcp poll callback functions. Called periodically as specified by

See also
tcp_poll.
Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
tpcbtcp pcb
Returns
ERR_OK: try to send some data by calling tcp_output Only return ERR_ABRT if you have called tcp_abort from within the callback function!

◆ tcp_recv_fn

typedef err_t(* tcp_recv_fn) (void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)

Function prototype for tcp receive callback functions. Called when data has been received.

Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
tpcbThe connection pcb which received data
pThe received data (or NULL when the connection has been closed!)
errAn error code if there has been an error receiving Only return ERR_ABRT if you have called tcp_abort from within the callback function!

◆ tcp_sent_fn

typedef err_t(* tcp_sent_fn) (void *arg, struct tcp_pcb *tpcb, u16_t len)

Function prototype for tcp sent callback functions. Called when sent data has been acknowledged by the remote side. Use it to free corresponding resources. This also means that the pcb has now space available to send new data.

Parameters
argAdditional argument to pass to the callback function (
See also
tcp_arg())
Parameters
tpcbThe connection pcb for which data has been acknowledged
lenThe amount of bytes acknowledged
Returns
ERR_OK: try to send some data by calling tcp_output Only return ERR_ABRT if you have called tcp_abort from within the callback function!

Function Documentation

◆ tcp_setprio()

void tcp_setprio ( struct tcp_pcb pcb,
u8_t  prio 
)

Sets the priority of a connection.

Parameters
pcbthe tcp_pcb to manipulate
prionew priority