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