10#if !LWIP_STATS || !TCP_STATS || !MEMP_STATS
11#error "This tests needs TCP- and MEMP-statistics enabled"
22 struct tcp_pcb *pcb = pcb_list;
28 if (pcb2->state == LISTEN) {
60 LWIP_ASSERT(
"data_len too big", data_len <= 0xFFFF);
75 iphdr = (
struct ip_hdr*)
p->payload;
77 iphdr->dest.addr = ip_2_ip4(dst_ip)->addr;
78 iphdr->src.addr = ip_2_ip4(src_ip)->addr;
122 data_len, seqno, ackno, headerflags,
TCP_WND);
133 return tcp_create_segment(&pcb->remote_ip, &pcb->local_ip, pcb->remote_port, pcb->local_port,
134 data, data_len, pcb->rcv_nxt + seqno_offset, pcb->lastack + ackno_offset, headerflags);
146 data, data_len, pcb->rcv_nxt + seqno_offset, pcb->lastack + ackno_offset, headerflags, wnd);
160 iss = tcp_next_iss(pcb);
166 if (
state == ESTABLISHED) {
167 TCP_REG(&tcp_active_pcbs, pcb);
169 pcb->local_port = local_port;
171 pcb->remote_port = remote_port;
172 }
else if(
state == LISTEN) {
173 TCP_REG(&tcp_listen_pcbs.pcbs, pcb);
175 pcb->local_port = local_port;
176 }
else if(
state == TIME_WAIT) {
177 TCP_REG(&tcp_tw_pcbs, pcb);
179 pcb->local_port = local_port;
181 pcb->remote_port = remote_port;
208 char *
data = (
char*)
q->payload;
209 for(
i = 0; i < q->
len;
i++) {
232 counters->recved_bytes_after_close +=
p->tot_len;
246 struct tcp_pcb* pcb = tcp_new();
266 ip_data.current_ip4_header = iphdr;
267 ip_data.current_input_netif = inp;
281 const ip4_addr_t *ipaddr)
285 if (txcounters !=
NULL)
310 if (txcounters !=
NULL) {
316 ip_addr_copy_from_ip4(
netif->netmask, *ip_2_ip4(netmask));
317 ip_addr_copy_from_ip4(
netif->ip_addr, *ip_2_ip4(ip_addr));
STREAM tcp_recv(STREAM s, uint32 length)
#define LWIP_ASSERT(message, assertion)
#define ip_current_src_addr()
#define ip_current_dest_addr()
#define ip_current_netif()
struct ip_globals ip_data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble q
GLint GLint GLsizei GLuint * counters
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define LWIP_UNUSED_ARG(x)
#define NETIF_FLAG_LINK_UP
void pbuf_cat(struct pbuf *h, struct pbuf *t)
struct pbuf * pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
u8_t pbuf_free(struct pbuf *p)
err_t pbuf_copy(struct pbuf *p_to, const struct pbuf *p_from)
err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len)
u16_t inet_chksum(const void *dataptr, u16_t len)
u16_t ip_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, const ip_addr_t *src, const ip_addr_t *dest)
#define ip_addr_copy(dest, src)
#define ip_addr_set_zero(ipaddr)
#define TCPH_HDRLEN_SET(phdr, len)
#define TCPH_FLAGS_SET(phdr, flags)
#define EXPECT_RETX(x, y)
#define EXPECT_RETNULL(x)
struct netif * netif_list
u8_t pbuf_header(struct pbuf *p, s16_t header_size_increment)
#define IPH_VHL_SET(hdr, v, hl)
#define IPH_LEN_SET(hdr, len)
#define IPH_CHKSUM_SET(hdr, chksum)
#define IPH_TOS_SET(hdr, tos)
#define MEMP_STATS_GET(x, i)
void test_tcp_init_netif(struct netif *netif, struct test_tcp_txcounters *txcounters, const ip_addr_t *ip_addr, const ip_addr_t *netmask)
static struct pbuf * tcp_create_segment_wnd(ip_addr_t *src_ip, ip_addr_t *dst_ip, u16_t src_port, u16_t dst_port, void *data, size_t data_len, u32_t seqno, u32_t ackno, u8_t headerflags, u16_t wnd)
void test_tcp_input(struct pbuf *p, struct netif *inp)
static err_t test_tcp_netif_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr)
void test_tcp_counters_err(void *arg, err_t err)
struct pbuf * tcp_create_rx_segment_wnd(struct tcp_pcb *pcb, void *data, size_t data_len, u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags, u16_t wnd)
struct pbuf * tcp_create_rx_segment(struct tcp_pcb *pcb, void *data, size_t data_len, u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags)
struct tcp_pcb * test_tcp_new_counters_pcb(struct test_tcp_counters *counters)
err_t test_tcp_counters_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
void tcp_set_state(struct tcp_pcb *pcb, enum tcp_state state, const ip_addr_t *local_ip, const ip_addr_t *remote_ip, u16_t local_port, u16_t remote_port)
static void test_tcp_counters_check_rxdata(struct test_tcp_counters *counters, struct pbuf *p)
const ip_addr_t test_netmask
void tcp_remove_all(void)
const ip_addr_t test_local_ip
const ip_addr_t test_remote_ip
struct pbuf * tcp_create_segment(ip_addr_t *src_ip, ip_addr_t *dst_ip, u16_t src_port, u16_t dst_port, void *data, size_t data_len, u32_t seqno, u32_t ackno, u8_t headerflags)
static void tcp_remove(struct tcp_pcb *pcb_list)
void tcp_close(struct sock *sk, long timeout)