Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

tcp.h File Reference

#include "lwip/sys.h"
#include "lwip/mem.h"
#include "lwip/pbuf.h"
#include "lwip/opt.h"
#include "lwip/ip.h"
#include "lwip/icmp.h"
#include "lwip/err.h"

Include dependency graph for tcp.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tcp_hdr
struct  tcp_pcb
struct  tcp_pcb_listen
struct  tcp_seg

Defines

#define tcp_mss(pcb)   ((pcb)->mss)
#define tcp_sndbuf(pcb)   ((pcb)->snd_buf)
#define TCP_PRIO_MIN   1
#define TCP_PRIO_NORMAL   64
#define TCP_PRIO_MAX   127
#define TCP_SEQ_LT(a, b)   ((s32_t)((a)-(b)) < 0)
#define TCP_SEQ_LEQ(a, b)   ((s32_t)((a)-(b)) <= 0)
#define TCP_SEQ_GT(a, b)   ((s32_t)((a)-(b)) > 0)
#define TCP_SEQ_GEQ(a, b)   ((s32_t)((a)-(b)) >= 0)
#define TCP_FIN   0x01
#define TCP_SYN   0x02
#define TCP_RST   0x04
#define TCP_PSH   0x08
#define TCP_ACK   0x10
#define TCP_URG   0x20
#define TCP_FLAGS   0x3f
#define TCP_HLEN   20
#define TCP_TMR_INTERVAL   100
#define TCP_FAST_INTERVAL   200
#define TCP_SLOW_INTERVAL   500
#define TCP_FIN_WAIT_TIMEOUT   20000
#define TCP_SYN_RCVD_TIMEOUT   20000
#define TCP_OOSEQ_TIMEOUT   6
#define TCP_MSL   60000
#define TCPH_OFFSET(hdr)   (ntohs((hdr)->_offset_flags) >> 8)
#define TCPH_FLAGS(hdr)   (ntohs((hdr)->_offset_flags) & 0xff)
#define TCPH_OFFSET_SET(hdr, offset)   (hdr)->_offset_flags = htons(((offset) << 8) | TCPH_FLAGS(hdr))
#define TCPH_FLAGS_SET(hdr, flags)   (hdr)->_offset_flags = htons((TCPH_OFFSET(hdr) << 8) | (flags))
#define TCP_TCPLEN(seg)
#define TF_ACK_DELAY   0x01U
#define TF_ACK_NOW   0x02U
#define TF_INFR   0x04U
#define TF_RESET   0x08U
#define TF_CLOSED   0x10U
#define TF_GOT_FIN   0x20U
#define TCP_EVENT_ACCEPT(pcb, err, ret)
#define TCP_EVENT_SENT(pcb, space, ret)
#define TCP_EVENT_RECV(pcb, p, err, ret)
#define TCP_EVENT_CONNECTED(pcb, err, ret)
#define TCP_EVENT_POLL(pcb, ret)
#define TCP_EVENT_ERR(errf, arg, err)
#define tcp_ack(pcb)
#define tcp_ack_now(pcb)
#define tcp_pcbs_sane()   1
#define TCP_REG(pcbs, npcb)
#define TCP_RMV(pcbs, npcb)

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_init (void)
void tcp_tmr (void)
tcp_pcbtcp_new (void)
tcp_pcbtcp_alloc (u8_t prio)
void tcp_arg (struct tcp_pcb *pcb, void *arg)
void tcp_accept (struct tcp_pcb *pcb, err_t(*accept)(void *arg, struct tcp_pcb *newpcb, err_t err))
void tcp_recv (struct tcp_pcb *pcb, err_t(*recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err))
void tcp_sent (struct tcp_pcb *pcb, err_t(*sent)(void *arg, struct tcp_pcb *tpcb, u16_t len))
void tcp_poll (struct tcp_pcb *pcb, err_t(*poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval)
void tcp_err (struct tcp_pcb *pcb, void(*err)(void *arg, err_t err))
void tcp_recved (struct tcp_pcb *pcb, u16_t len)
err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
err_t tcp_connect (struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port, err_t(*connected)(void *arg, struct tcp_pcb *tpcb, err_t err))
tcp_pcbtcp_listen (struct tcp_pcb *pcb)
void tcp_abort (struct tcp_pcb *pcb)
err_t tcp_close (struct tcp_pcb *pcb)
err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t copy)
void tcp_setprio (struct tcp_pcb *pcb, u8_t prio)
void tcp_slowtmr (void)
void tcp_fasttmr (void)
void tcp_input (struct pbuf *p, struct netif *inp)
err_t tcp_output (struct tcp_pcb *pcb)
void tcp_rexmit (struct tcp_pcb *pcb)
tcp_pcbtcp_pcb_copy (struct tcp_pcb *pcb)
void tcp_pcb_purge (struct tcp_pcb *pcb)
void tcp_pcb_remove (struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
u8_t tcp_segs_free (struct tcp_seg *seg)
u8_t tcp_seg_free (struct tcp_seg *seg)
tcp_segtcp_seg_copy (struct tcp_seg *seg)
err_t tcp_send_ctrl (struct tcp_pcb *pcb, u8_t flags)
err_t tcp_enqueue (struct tcp_pcb *pcb, void *dataptr, u16_t len, u8_t flags, u8_t copy, u8_t *optdata, u8_t optlen)
void tcp_rexmit_seg (struct tcp_pcb *pcb, struct tcp_seg *seg)
void tcp_rst (u32_t seqno, u32_t ackno, struct ip_addr *local_ip, struct ip_addr *remote_ip, u16_t local_port, u16_t remote_port)
u32_t tcp_next_iss (void)
void tcp_timer_needed (void)

Variables

PACK_STRUCT_BEGIN struct tcp_hdr PACK_STRUCT_STRUCT
tcp_pcbtcp_input_pcb
u32_t tcp_ticks
tcp_pcb_listentcp_listen_pcbs
tcp_pcbtcp_active_pcbs
tcp_pcbtcp_tw_pcbs
tcp_pcbtcp_tmp_pcb


Define Documentation

#define tcp_ack pcb   ) 
 

Value:

if((pcb)->flags & TF_ACK_DELAY) { \
                            (pcb)->flags &= ~TF_ACK_DELAY; \
                            (pcb)->flags |= TF_ACK_NOW; \
                            tcp_output(pcb); \
                         } else { \
                            (pcb)->flags |= TF_ACK_DELAY; \
                         }

Definition at line 376 of file tcp.h.

#define TCP_ACK   0x10
 

Definition at line 122 of file tcp.h.

#define tcp_ack_now pcb   ) 
 

Value:

(pcb)->flags |= TF_ACK_NOW; \
                         tcp_output(pcb)

Definition at line 384 of file tcp.h.

#define TCP_EVENT_ACCEPT pcb,
err,
ret   ) 
 

Value:

if((pcb)->accept != NULL) \
                        (ret = (pcb)->accept((pcb)->callback_arg,(pcb),(err)))

Definition at line 337 of file tcp.h.

#define TCP_EVENT_CONNECTED pcb,
err,
ret   ) 
 

Value:

if((pcb)->connected != NULL) \
                        (ret = (pcb)->connected((pcb)->callback_arg,(pcb),(err)))

Definition at line 347 of file tcp.h.

#define TCP_EVENT_ERR errf,
arg,
err   ) 
 

Value:

if((errf) != NULL) \
                        (errf)((arg),(err))

Definition at line 353 of file tcp.h.

#define TCP_EVENT_POLL pcb,
ret   ) 
 

Value:

if((pcb)->poll != NULL) \
                        (ret = (pcb)->poll((pcb)->callback_arg,(pcb)))

Definition at line 350 of file tcp.h.

#define TCP_EVENT_RECV pcb,
p,
err,
ret   ) 
 

Value:

if((pcb)->recv != NULL) \
                        { ret = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err)); } else { \
                                                pbuf_free(p); }

Definition at line 343 of file tcp.h.

#define TCP_EVENT_SENT pcb,
space,
ret   ) 
 

Value:

if((pcb)->sent != NULL) \
                        (ret = (pcb)->sent((pcb)->callback_arg,(pcb),(space)))

Definition at line 340 of file tcp.h.

#define TCP_FAST_INTERVAL   200
 

Definition at line 136 of file tcp.h.

#define TCP_FIN   0x01
 

Definition at line 118 of file tcp.h.

#define TCP_FIN_WAIT_TIMEOUT   20000
 

Definition at line 145 of file tcp.h.

#define TCP_FLAGS   0x3f
 

Definition at line 125 of file tcp.h.

#define TCP_HLEN   20
 

Definition at line 128 of file tcp.h.

#define TCP_MSL   60000
 

Definition at line 150 of file tcp.h.

#define tcp_mss pcb   )     ((pcb)->mss)
 

Definition at line 77 of file tcp.h.

#define TCP_OOSEQ_TIMEOUT   6
 

Definition at line 148 of file tcp.h.

 
#define tcp_pcbs_sane  )     1
 

Definition at line 410 of file tcp.h.

#define TCP_PRIO_MAX   127
 

Definition at line 97 of file tcp.h.

#define TCP_PRIO_MIN   1
 

Definition at line 95 of file tcp.h.

#define TCP_PRIO_NORMAL   64
 

Definition at line 96 of file tcp.h.

#define TCP_PSH   0x08
 

Definition at line 121 of file tcp.h.

#define TCP_REG pcbs,
npcb   ) 
 

Value:

do { \
                            npcb->next = *pcbs; \
                            *(pcbs) = npcb; \
                                                        tcp_timer_needed(); \
                            } while(0)

Definition at line 469 of file tcp.h.

#define TCP_RMV pcbs,
npcb   ) 
 

Value:

do { \
                            if(*(pcbs) == npcb) { \
                               (*(pcbs)) = (*pcbs)->next; \
                            } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \
                               if(tcp_tmp_pcb->next != NULL && tcp_tmp_pcb->next == npcb) { \
                                  tcp_tmp_pcb->next = npcb->next; \
                                  break; \
                               } \
                            } \
                            npcb->next = NULL; \
                            } while(0)

Definition at line 474 of file tcp.h.

#define TCP_RST   0x04
 

Definition at line 120 of file tcp.h.

#define TCP_SEQ_GEQ a,
 )     ((s32_t)((a)-(b)) >= 0)
 

Definition at line 116 of file tcp.h.

#define TCP_SEQ_GT a,
 )     ((s32_t)((a)-(b)) > 0)
 

Definition at line 115 of file tcp.h.

#define TCP_SEQ_LEQ a,
 )     ((s32_t)((a)-(b)) <= 0)
 

Definition at line 114 of file tcp.h.

#define TCP_SEQ_LT a,
 )     ((s32_t)((a)-(b)) < 0)
 

Definition at line 113 of file tcp.h.

#define TCP_SLOW_INTERVAL   500
 

Definition at line 141 of file tcp.h.

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

Definition at line 78 of file tcp.h.

Referenced by do_write(), netconn_write(), and send_data().

#define TCP_SYN   0x02
 

Definition at line 119 of file tcp.h.

#define TCP_SYN_RCVD_TIMEOUT   20000
 

Definition at line 146 of file tcp.h.

#define TCP_TCPLEN seg   ) 
 

Value:

((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & TCP_FIN || \
                                        TCPH_FLAGS((seg)->tcphdr) & TCP_SYN)? 1: 0))

Definition at line 177 of file tcp.h.

#define TCP_TMR_INTERVAL   100
 

Definition at line 131 of file tcp.h.

Referenced by tcpip_thread().

#define TCP_URG   0x20
 

Definition at line 123 of file tcp.h.

#define TCPH_FLAGS hdr   )     (ntohs((hdr)->_offset_flags) & 0xff)
 

Definition at line 172 of file tcp.h.

#define TCPH_FLAGS_SET hdr,
flags   )     (hdr)->_offset_flags = htons((TCPH_OFFSET(hdr) << 8) | (flags))
 

Definition at line 175 of file tcp.h.

#define TCPH_OFFSET hdr   )     (ntohs((hdr)->_offset_flags) >> 8)
 

Definition at line 171 of file tcp.h.

#define TCPH_OFFSET_SET hdr,
offset   )     (hdr)->_offset_flags = htons(((offset) << 8) | TCPH_FLAGS(hdr))
 

Definition at line 174 of file tcp.h.

#define TF_ACK_DELAY   0x01U
 

Definition at line 223 of file tcp.h.

#define TF_ACK_NOW   0x02U
 

Definition at line 224 of file tcp.h.

#define TF_CLOSED   0x10U
 

Definition at line 227 of file tcp.h.

#define TF_GOT_FIN   0x20U
 

Definition at line 228 of file tcp.h.

#define TF_INFR   0x04U
 

Definition at line 225 of file tcp.h.

#define TF_RESET   0x08U
 

Definition at line 226 of file tcp.h.


Enumeration Type Documentation

enum tcp_state
 

Enumeration values:
CLOSED 
LISTEN 
SYN_SENT 
SYN_RCVD 
ESTABLISHED 
FIN_WAIT_1 
FIN_WAIT_2 
CLOSE_WAIT 
CLOSING 
LAST_ACK 
TIME_WAIT 

Definition at line 180 of file tcp.h.

00180                {
00181   CLOSED      = 0,
00182   LISTEN      = 1,
00183   SYN_SENT    = 2,
00184   SYN_RCVD    = 3,
00185   ESTABLISHED = 4,
00186   FIN_WAIT_1  = 5,
00187   FIN_WAIT_2  = 6,
00188   CLOSE_WAIT  = 7,
00189   CLOSING     = 8,
00190   LAST_ACK    = 9,
00191   TIME_WAIT   = 10
00192 };


Function Documentation

void tcp_abort struct tcp_pcb pcb  ) 
 

Referenced by do_delconn().

void tcp_accept struct tcp_pcb pcb,
err_t(*  accept)(void *arg, struct tcp_pcb *newpcb, err_t err)
 

Referenced by do_delconn(), do_listen(), and httpd_init().

struct tcp_pcb* tcp_alloc u8_t  prio  ) 
 

void tcp_arg struct tcp_pcb pcb,
void *  arg
 

Referenced by close_conn(), do_delconn(), do_listen(), and http_accept().

err_t tcp_bind struct tcp_pcb pcb,
struct ip_addr ipaddr,
u16_t  port
 

Referenced by do_bind(), and httpd_init().

err_t tcp_close struct tcp_pcb pcb  ) 
 

Referenced by close_conn(), do_close(), do_delconn(), and http_poll().

err_t tcp_connect struct tcp_pcb pcb,
struct ip_addr ipaddr,
u16_t  port,
err_t(*  connected)(void *arg, struct tcp_pcb *tpcb, err_t err)
 

Referenced by do_connect().

err_t tcp_enqueue struct tcp_pcb pcb,
void *  dataptr,
u16_t  len,
u8_t  flags,
u8_t  copy,
u8_t optdata,
u8_t  optlen
 

void tcp_err struct tcp_pcb pcb,
void(*  err)(void *arg, err_t err)
 

Referenced by do_delconn(), and http_accept().

void tcp_fasttmr void   ) 
 

void tcp_init void   ) 
 

Referenced by tcpip_thread().

void tcp_input struct pbuf p,
struct netif inp
 

Referenced by ip_input().

struct tcp_pcb* tcp_listen struct tcp_pcb pcb  ) 
 

Referenced by do_listen(), and httpd_init().

struct tcp_pcb* tcp_new void   ) 
 

Referenced by do_bind(), do_connect(), and httpd_init().

u32_t tcp_next_iss void   ) 
 

err_t tcp_output struct tcp_pcb pcb  ) 
 

Referenced by do_write().

struct tcp_pcb* tcp_pcb_copy struct tcp_pcb pcb  ) 
 

void tcp_pcb_purge struct tcp_pcb pcb  ) 
 

void tcp_pcb_remove struct tcp_pcb **  pcblist,
struct tcp_pcb pcb
 

void tcp_poll struct tcp_pcb pcb,
err_t(*  poll)(void *arg, struct tcp_pcb *tpcb),
u8_t  interval
 

Referenced by do_delconn(), and http_accept().

void tcp_recv struct tcp_pcb pcb,
err_t(*  recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
 

Referenced by close_conn(), do_delconn(), and http_accept().

void tcp_recved struct tcp_pcb pcb,
u16_t  len
 

Referenced by do_recv(), and http_recv().

void tcp_rexmit struct tcp_pcb pcb  ) 
 

void tcp_rexmit_seg struct tcp_pcb pcb,
struct tcp_seg seg
 

void tcp_rst u32_t  seqno,
u32_t  ackno,
struct ip_addr local_ip,
struct ip_addr remote_ip,
u16_t  local_port,
u16_t  remote_port
 

struct tcp_seg* tcp_seg_copy struct tcp_seg seg  ) 
 

u8_t tcp_seg_free struct tcp_seg seg  ) 
 

u8_t tcp_segs_free struct tcp_seg seg  ) 
 

err_t tcp_send_ctrl struct tcp_pcb pcb,
u8_t  flags
 

void tcp_sent struct tcp_pcb pcb,
err_t(*  sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)
 

Referenced by close_conn(), do_delconn(), and http_recv().

void tcp_setprio struct tcp_pcb pcb,
u8_t  prio
 

void tcp_slowtmr void   ) 
 

void tcp_timer_needed void   ) 
 

void tcp_tmr void   ) 
 

err_t tcp_write struct tcp_pcb pcb,
const void *  dataptr,
u16_t  len,
u8_t  copy
 

Referenced by do_write(), and send_data().


Variable Documentation

PACK_STRUCT_BEGIN struct tcp_hdr PACK_STRUCT_STRUCT
 

struct tcp_pcb* tcp_active_pcbs
 

Definition at line 421 of file tcp.h.

struct tcp_pcb* tcp_input_pcb
 

Definition at line 400 of file tcp.h.

struct tcp_pcb_listen* tcp_listen_pcbs
 

Definition at line 420 of file tcp.h.

u32_t tcp_ticks
 

Definition at line 401 of file tcp.h.

struct tcp_pcb* tcp_tmp_pcb
 

Definition at line 426 of file tcp.h.

struct tcp_pcb* tcp_tw_pcbs
 

Definition at line 424 of file tcp.h.


Generated on Wed Jan 14 12:59:14 2004 for RTL-lwIP-0.4 by doxygen 1.3.4