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