Microchip® Advanced Software Framework

tcp.h File Reference
#include "lwip/opt.h"
#include "lwip/mem.h"
#include "lwip/pbuf.h"
#include "lwip/ip.h"
#include "lwip/icmp.h"
#include "lwip/err.h"

Data Structures

struct  tcp_pcb
 
struct  tcp_pcb_listen
 

Macros

#define DEF_ACCEPT_CALLBACK   tcp_accept_fn accept;
 
#define tcp_accepted(pcb)
 
#define tcp_listen(pcb)   tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG)
 
#define tcp_mss(pcb)   (((pcb)->flags & TF_TIMESTAMP) ? ((pcb)->mss - 12) : (pcb)->mss)
 
#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 &= ~TF_NODELAY)
 
#define TCP_PCB_COMMON(type)
 members common to struct tcp_pcb and struct tcp_listen_pcb More...
 
#define TCP_PRIO_MAX   127
 
#define TCP_PRIO_MIN   1
 
#define TCP_PRIO_NORMAL   64
 
#define tcp_sndbuf(pcb)   ((pcb)->snd_buf)
 
#define tcp_sndqueuelen(pcb)   ((pcb)->snd_queuelen)
 
#define TCP_SNDQUEUELEN_OVERFLOW   (0xffffU-3)
 
#define TCP_WRITE_FLAG_COPY   0x01
 
#define TCP_WRITE_FLAG_MORE   0x02
 
#define TF_ACK_DELAY   ((u8_t)0x01U) /* Delayed ACK. */
 
#define TF_ACK_NOW   ((u8_t)0x02U) /* Immediate ACK. */
 
#define TF_FIN   ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */
 
#define TF_INFR   ((u8_t)0x04U) /* In fast recovery. */
 
#define TF_NAGLEMEMERR   ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */
 
#define TF_NODELAY   ((u8_t)0x40U) /* Disable Nagle algorithm */
 
#define TF_RXCLOSED   ((u8_t)0x10U) /* rx closed by tcp_shutdown */
 
#define TF_TIMESTAMP   ((u8_t)0x08U) /* Timestamp option enabled */
 

Typedefs

typedef err_t(* tcp_accept_fn )(void *arg, struct tcp_pcb *newpcb, err_t err)
 Function prototype for tcp accept callback functions. More...
 
typedef err_t(* tcp_connected_fn )(void *arg, struct tcp_pcb *tpcb, err_t err)
 Function prototype for tcp connected callback functions. More...
 
typedef void(* tcp_err_fn )(void *arg, err_t err)
 Function prototype for tcp error callback functions. More...
 
typedef err_t(* tcp_poll_fn )(void *arg, struct tcp_pcb *tpcb)
 Function prototype for tcp poll callback functions. More...
 
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. More...
 
typedef err_t(* tcp_sent_fn )(void *arg, struct tcp_pcb *tpcb, u16_t len)
 Function prototype for tcp sent callback functions. More...
 

Enumerations

enum  tcp_state {
  CLOSED = 0,
  LISTEN = 1,
  SYN_SENT = 2,
  SYN_RCVD = 3,
  ESTABLISHED = 4,
  FIN_WAIT_1 = 5,
  FIN_WAIT_2 = 6,
  CLOSE_WAIT = 7,
  CLOSING = 8,
  LAST_ACK = 9,
  TIME_WAIT = 10
}
 

Functions

void tcp_abort (struct tcp_pcb *pcb)
 Aborts the connection by sending a RST (reset) segment to the remote host. More...
 
void tcp_accept (struct tcp_pcb *pcb, tcp_accept_fn accept)
 Used for specifying the function that should be called when a LISTENing connection has been connected to another host. More...
 
void tcp_arg (struct tcp_pcb *pcb, void *arg)
 Used to specify the argument that should be passed callback functions. More...
 
err_t tcp_bind (struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port)
 Binds the connection to a local portnumber and IP address. More...
 
err_t tcp_close (struct tcp_pcb *pcb)
 Closes the connection held by the PCB. More...
 
err_t tcp_connect (struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, tcp_connected_fn connected)
 Connects to another host. More...
 
const char * tcp_debug_state_str (enum tcp_state s)
 
void tcp_err (struct tcp_pcb *pcb, tcp_err_fn err)
 Used to specify the function that should be called when a fatal error has occured on the connection. More...
 
struct tcp_pcbtcp_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. More...
 
struct tcp_pcbtcp_new (void)
 Creates a new TCP protocol control block but doesn't place it on any of the TCP PCB lists. More...
 
err_t tcp_output (struct tcp_pcb *pcb)
 Find out what we can send and send it. More...
 
void tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval)
 Used to specify the function that should be called periodically from TCP. More...
 
void tcp_recv (struct tcp_pcb *pcb, tcp_recv_fn recv)
 Used to specify the function that should be called when a TCP connection receives data. More...
 
void tcp_recved (struct tcp_pcb *pcb, u16_t len)
 This function should be called by the application when it has processed the data. More...
 
void tcp_sent (struct tcp_pcb *pcb, tcp_sent_fn sent)
 Used to specify the function that should be called when TCP data has been successfully delivered to the remote host. More...
 
void tcp_setprio (struct tcp_pcb *pcb, u8_t prio)
 Sets the priority of a connection. More...
 
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. More...
 
err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags)
 Write data for sending (but does not send it immediately). More...
 

#define DEF_ACCEPT_CALLBACK   tcp_accept_fn accept;
#define tcp_accepted (   pcb)
Value:
LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", \
(pcb)->state == LISTEN)
#define LWIP_ASSERT(message, assertion)
Definition: debug.h:69
Definition: tcp.h:128
#define tcp_listen (   pcb)    tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG)

Referenced by httpd_init().

#define tcp_mss (   pcb)    (((pcb)->flags & TF_TIMESTAMP) ? ((pcb)->mss - 12) : (pcb)->mss)
#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 &= ~TF_NODELAY)
#define TCP_PCB_COMMON (   type)
Value:
type *next; /* for the linked list */ \
void *callback_arg; \
/* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \
DEF_ACCEPT_CALLBACK \
enum tcp_state state; /* TCP state */ \
u8_t prio; \
/* ports are in host byte order */ \
u16_t local_port
uint16_t u16_t
Definition: cc.h:46
uint8_t u8_t
Definition: cc.h:44
void
Create a one-shot timer (aka timeout).
Definition: lwip_timers_141.c:270
timeout next
Definition: lwip_timers_141.c:278
tcp_state
Definition: tcp.h:126

members common to struct tcp_pcb and struct tcp_listen_pcb

#define TCP_PRIO_MAX   127

Referenced by tcp_kill_prio().

#define TCP_PRIO_MIN   1

Referenced by http_accept().

#define TCP_PRIO_NORMAL   64

Referenced by tcp_new().

#define tcp_sndbuf (   pcb)    ((pcb)->snd_buf)

Referenced by http_send_data().

#define tcp_sndqueuelen (   pcb)    ((pcb)->snd_queuelen)
#define TCP_SNDQUEUELEN_OVERFLOW   (0xffffU-3)
#define TCP_WRITE_FLAG_COPY   0x01

Referenced by http_send_data(), and tcp_write().

#define TCP_WRITE_FLAG_MORE   0x02

Referenced by tcp_pbuf_prealloc(), and tcp_write().

#define TF_ACK_DELAY   ((u8_t)0x01U) /* Delayed ACK. */
#define TF_ACK_NOW   ((u8_t)0x02U) /* Immediate ACK. */
#define TF_FIN   ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */
#define TF_INFR   ((u8_t)0x04U) /* In fast recovery. */

Referenced by tcp_receive(), and tcp_rexmit_fast().

#define TF_NAGLEMEMERR   ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */
#define TF_NODELAY   ((u8_t)0x40U) /* Disable Nagle algorithm */

Referenced by tcp_pbuf_prealloc().

#define TF_RXCLOSED   ((u8_t)0x10U) /* rx closed by tcp_shutdown */
#define TF_TIMESTAMP   ((u8_t)0x08U) /* Timestamp option enabled */

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!
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 ;-) TODO! Only return ERR_ABRT if you have called tcp_abort from within the callback function!
Note
When a connection attempt fails, the error callback is currently called!
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
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!
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!
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!

enum tcp_state
Enumerator
CLOSED 
LISTEN 
SYN_SENT 
SYN_RCVD 
ESTABLISHED 
FIN_WAIT_1 
FIN_WAIT_2 
CLOSE_WAIT 
CLOSING 
LAST_ACK 
TIME_WAIT 

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
pcbthe tcp pcb to abort

References tcp_abandon().

Referenced by http_poll(), netif_set_ipaddr(), tcp_input(), tcp_kill_prio(), tcp_kill_timewait(), and tcp_process().

void tcp_accept ( struct tcp_pcb pcb,
tcp_accept_fn  accept 
)

Used for specifying the function that should be called when a LISTENing connection has been connected to another host.

Parameters
pcbtcp_pcb to set the accept callback
acceptcallback function to call for this pcb when LISTENing connection has been connected to another host

Referenced by httpd_init().

void tcp_arg ( struct tcp_pcb pcb,
void arg 
)

Used to specify the argument that should be passed callback functions.

Parameters
pcbtcp_pcb to set the callback argument
argvoid pointer argument to pass to callback functions

References arg.

Referenced by http_accept(), and http_close_conn().

err_t tcp_bind ( struct tcp_pcb pcb,
ip_addr_t ipaddr,
u16_t  port 
)

Binds the connection to a local portnumber 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
pcbthe tcp_pcb to bind (no check is done whether this pcb is already bound!)
ipaddrthe local ip address to bind to (use IP_ADDR_ANY to bind to any local address
portthe 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

References CLOSED, ERR_BUF, ERR_OK, ERR_USE, ERR_VAL, ip_addr_cmp, ip_addr_isany, ip_get_option, LWIP_DEBUGF, LWIP_ERROR(), NULL, NUM_TCP_PCB_LISTS, NUM_TCP_PCB_LISTS_NO_TIME_WAIT, SOF_REUSEADDR, TCP_DEBUG, tcp_new_port(), TCP_REG, and U16_F.

Referenced by httpd_init().

err_t tcp_close ( struct tcp_pcb pcb)

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
pcbthe tcp_pcb to close
Returns
ERR_OK if connection has been closed another err_t if closing failed and pcb is not freed

References tcp_pcb::flags, LISTEN, LWIP_DEBUGF, tcp_close_shutdown(), TCP_DEBUG, tcp_debug_print_state, and TF_RXCLOSED.

Referenced by http_close_conn(), and tcp_recv_null().

err_t tcp_connect ( struct tcp_pcb pcb,
ip_addr_t ipaddr,
u16_t  port,
tcp_connected_fn  connected 
)

Connects to another host.

The function given as the "connected" argument will be called when the connection has been established.

Parameters
pcbthe tcp_pcb used to establish the connection
ipaddrthe remote ip address to connect to
portthe remote tcp port to connect to
connectedcallback function to call when connected (or on error)
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

References CLOSED, tcp_pcb::connected, tcp_pcb::cwnd, ERR_BUF, ERR_ISCONN, ERR_OK, ERR_RTE, ERR_USE, ERR_VAL, netif::ip_addr, ip_addr_cmp, ip_addr_copy, ip_addr_isany, ip_get_option, ip_route(), tcp_pcb::lastack, LWIP_DEBUGF, LWIP_ERROR(), LWIP_UNUSED_ARG, tcp_pcb::mss, NULL, NUM_TCP_PCB_LISTS, tcp_pcb::rcv_ann_right_edge, tcp_pcb::rcv_ann_wnd, tcp_pcb::rcv_nxt, tcp_pcb::rcv_wnd, tcp_pcb::remote_port, tcp_pcb::snd_lbb, tcp_pcb::snd_nxt, tcp_pcb::snd_wnd, snmp_inc_tcpactiveopens, SOF_REUSEADDR, tcp_pcb::ssthresh, SYN_SENT, TCP_DEBUG, tcp_eff_send_mss(), tcp_enqueue_flags(), TCP_MSS, tcp_new_port(), tcp_next_iss(), tcp_output(), TCP_REG_ACTIVE, TCP_RMV, TCP_SYN, TCP_WND, and U16_F.

const char* tcp_debug_state_str ( enum tcp_state  s)

References tcp_state_str.

void tcp_err ( struct tcp_pcb pcb,
tcp_err_fn  err 
)

Used to specify the function that should be called when a fatal error has occured on the connection.

Parameters
pcbtcp_pcb to set the err callback
errcallback function to call for this pcb when a fatal error has occured on the connection

References tcp_pcb::errf, LISTEN, and LWIP_ASSERT.

Referenced by http_accept().

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
pcbthe original tcp_pcb
backlogthe 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);

References CLOSED, ip_addr_cmp, ip_addr_copy, ip_get_option, ip_set_option, LISTEN, tcp_listen_pcbs_t::listen_pcbs, LWIP_ERROR(), LWIP_UNUSED_ARG, memp_free(), memp_malloc(), NULL, tcp_listen_pcbs_t::pcbs, SOF_ACCEPTCONN, SOF_REUSEADDR, tcp_accept_null(), tcp_listen_pcbs, TCP_REG, and TCP_RMV.

struct tcp_pcb* tcp_new ( void  )

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().

: Maybe there should be a idle TCP PCB list where these PCBs are put on. Port reservation using tcp_bind() is implemented but allocated pcbs that are not bound can't be killed automatically if wanting to allocate a pcb with higher prio (

See Also
tcp_kill_prio())
Returns
a new tcp_pcb that initially is in state CLOSED

References tcp_alloc(), and TCP_PRIO_NORMAL.

Referenced by httpd_init().

void tcp_poll ( struct tcp_pcb pcb,
tcp_poll_fn  poll,
u8_t  interval 
)

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.

References LISTEN, LWIP_ASSERT, LWIP_UNUSED_ARG, tcp_pcb::poll, and tcp_pcb::pollinterval.

Referenced by http_accept().

void tcp_recv ( struct tcp_pcb pcb,
tcp_recv_fn  recv 
)

Used to specify the function that should be called when a TCP connection receives data.

Parameters
pcbtcp_pcb to set the recv callback
recvcallback function to call for this pcb when data is received

References LISTEN, LWIP_ASSERT, and tcp_pcb::recv.

Referenced by http_accept(), and http_close_conn().

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
pcbthe tcp_pcb for which data is read
lenthe amount of bytes that have been read by the application

References LISTEN, LWIP_ASSERT, LWIP_DEBUGF, tcp_pcb::rcv_wnd, tcp_ack_now, TCP_DEBUG, tcp_output(), tcp_update_rcv_ann_wnd(), TCP_WND, and U16_F.

Referenced by http_recv(), and tcp_recv_null().

void tcp_sent ( struct tcp_pcb pcb,
tcp_sent_fn  sent 
)

Used to specify the function that should be called when TCP data has been successfully delivered to the remote host.

Parameters
pcbtcp_pcb to set the sent callback
sentcallback function to call for this pcb when data is successfully sent

References LISTEN, LWIP_ASSERT, and tcp_pcb::sent.

Referenced by http_close_conn(), and http_recv().

void tcp_setprio ( struct tcp_pcb pcb,
u8_t  prio 
)

Sets the priority of a connection.

Parameters
pcbthe tcp_pcb to manipulate
prionew priority

Referenced by http_accept().

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
pcbPCB to shutdown
shut_rxshut down receive side if this is != 0
shut_txshut 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.

References CLOSE_WAIT, ERR_CONN, ERR_OK, ESTABLISHED, tcp_pcb::flags, LISTEN, NULL, pbuf_free(), tcp_pcb::refused_data, SYN_RCVD, tcp_close_shutdown(), and TF_RXCLOSED.

err_t tcp_write ( struct tcp_pcb pcb,
const void arg,
u16_t  len,
u8_t  apiflags 
)

Write data for sending (but does not send it immediately).

It waits in the expectation of more data being sent soon (as it can send them more efficiently by combining them together). To prompt the system to send data now, call tcp_output() after calling tcp_write().

Parameters
pcbProtocol control block for the TCP connection to enqueue data for.
argPointer to the data to be enqueued for sending.
lenData length in bytes
apiflagscombination of following flags :
  • TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack
  • TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent,
Returns
ERR_OK if enqueued, another err_t on error

References ERR_ARG, ERR_MEM, ERR_OK, tcp_pcb::flags, tcp_seg::flags, inet_chksum(), pbuf::len, tcp_seg::len, LWIP_ASSERT, LWIP_DBG_STATE, LWIP_DBG_TRACE, LWIP_DEBUGF, LWIP_ERROR(), LWIP_MIN, LWIP_TCP_OPT_LENGTH, tcp_pcb::mss, pbuf::next, tcp_seg::next, ntohl, NULL, tcp_seg::p, pbuf::payload, pbuf_alloc(), pbuf_cat(), pbuf_clen(), pbuf_free(), PBUF_RAM, PBUF_RAW, PBUF_ROM, PBUF_TRANSPORT, S16_F, tcp_pcb::snd_buf, tcp_pcb::snd_lbb, tcp_pcb::snd_queuelen, tcp_pcb::snd_wnd_max, tcp_create_segment(), TCP_DATA_COPY, TCP_DATA_COPY2, TCP_OUTPUT_DEBUG, tcp_pbuf_prealloc(), TCP_PSH, TCP_QLEN_DEBUG, tcp_segs_free(), TCP_SNDQUEUELEN_OVERFLOW, TCP_STATS_INC, TCP_TCPLEN, tcp_write_checks(), TCP_WRITE_FLAG_COPY, TCP_WRITE_FLAG_MORE, TCPH_SET_FLAG, TF_NAGLEMEMERR, TF_SEG_DATA_CHECKSUMMED, TF_SEG_OPTS_TS, TF_TIMESTAMP, pbuf::tot_len, U16_F, U32_F, tcp_pcb::unacked, tcp_pcb::unsent, and tcp_pcb::unsent_oversize.

Referenced by http_send_data().