xref: /nrf52832-nimble/rt-thread/components/net/lwip-2.1.0/test/unit/tcp/tcp_helper.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero #ifndef LWIP_HDR_TCP_HELPER_H
2*10465441SEvalZero #define LWIP_HDR_TCP_HELPER_H
3*10465441SEvalZero 
4*10465441SEvalZero #include "../lwip_check.h"
5*10465441SEvalZero #include "lwip/arch.h"
6*10465441SEvalZero #include "lwip/tcp.h"
7*10465441SEvalZero #include "lwip/netif.h"
8*10465441SEvalZero 
9*10465441SEvalZero /* counters used for test_tcp_counters_* callback functions */
10*10465441SEvalZero struct test_tcp_counters {
11*10465441SEvalZero   u32_t recv_calls;
12*10465441SEvalZero   u32_t recved_bytes;
13*10465441SEvalZero   u32_t recv_calls_after_close;
14*10465441SEvalZero   u32_t recved_bytes_after_close;
15*10465441SEvalZero   u32_t close_calls;
16*10465441SEvalZero   u32_t err_calls;
17*10465441SEvalZero   err_t last_err;
18*10465441SEvalZero   char* expected_data;
19*10465441SEvalZero   u32_t expected_data_len;
20*10465441SEvalZero };
21*10465441SEvalZero 
22*10465441SEvalZero struct test_tcp_txcounters {
23*10465441SEvalZero   u32_t num_tx_calls;
24*10465441SEvalZero   u32_t num_tx_bytes;
25*10465441SEvalZero   u8_t  copy_tx_packets;
26*10465441SEvalZero   struct pbuf *tx_packets;
27*10465441SEvalZero };
28*10465441SEvalZero 
29*10465441SEvalZero extern const ip_addr_t test_local_ip;
30*10465441SEvalZero extern const ip_addr_t test_remote_ip;
31*10465441SEvalZero extern const ip_addr_t test_netmask;
32*10465441SEvalZero #define TEST_REMOTE_PORT    0x100
33*10465441SEvalZero #define TEST_LOCAL_PORT     0x101
34*10465441SEvalZero 
35*10465441SEvalZero /* Helper functions */
36*10465441SEvalZero void tcp_remove_all(void);
37*10465441SEvalZero 
38*10465441SEvalZero struct pbuf* tcp_create_segment(ip_addr_t* src_ip, ip_addr_t* dst_ip,
39*10465441SEvalZero                    u16_t src_port, u16_t dst_port, void* data, size_t data_len,
40*10465441SEvalZero                    u32_t seqno, u32_t ackno, u8_t headerflags);
41*10465441SEvalZero struct pbuf* tcp_create_rx_segment(struct tcp_pcb* pcb, void* data, size_t data_len,
42*10465441SEvalZero                    u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags);
43*10465441SEvalZero struct pbuf* tcp_create_rx_segment_wnd(struct tcp_pcb* pcb, void* data, size_t data_len,
44*10465441SEvalZero                    u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags, u16_t wnd);
45*10465441SEvalZero void tcp_set_state(struct tcp_pcb* pcb, enum tcp_state state, const ip_addr_t* local_ip,
46*10465441SEvalZero                    const ip_addr_t* remote_ip, u16_t local_port, u16_t remote_port);
47*10465441SEvalZero void test_tcp_counters_err(void* arg, err_t err);
48*10465441SEvalZero err_t test_tcp_counters_recv(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err);
49*10465441SEvalZero 
50*10465441SEvalZero struct tcp_pcb* test_tcp_new_counters_pcb(struct test_tcp_counters* counters);
51*10465441SEvalZero 
52*10465441SEvalZero void test_tcp_input(struct pbuf *p, struct netif *inp);
53*10465441SEvalZero 
54*10465441SEvalZero void test_tcp_init_netif(struct netif *netif, struct test_tcp_txcounters *txcounters,
55*10465441SEvalZero                          const ip_addr_t *ip_addr, const ip_addr_t *netmask);
56*10465441SEvalZero 
57*10465441SEvalZero 
58*10465441SEvalZero #endif
59