1*d6eebaa4SHervé Poussineau #ifndef LWIP_HDR_TCP_HELPER_H 2*d6eebaa4SHervé Poussineau #define LWIP_HDR_TCP_HELPER_H 31734f297SVictor Perevertkin 41734f297SVictor Perevertkin #include "../lwip_check.h" 51734f297SVictor Perevertkin #include "lwip/arch.h" 61734f297SVictor Perevertkin #include "lwip/tcp.h" 71734f297SVictor Perevertkin #include "lwip/netif.h" 81734f297SVictor Perevertkin 91734f297SVictor Perevertkin /* counters used for test_tcp_counters_* callback functions */ 101734f297SVictor Perevertkin struct test_tcp_counters { 111734f297SVictor Perevertkin u32_t recv_calls; 121734f297SVictor Perevertkin u32_t recved_bytes; 131734f297SVictor Perevertkin u32_t recv_calls_after_close; 141734f297SVictor Perevertkin u32_t recved_bytes_after_close; 151734f297SVictor Perevertkin u32_t close_calls; 161734f297SVictor Perevertkin u32_t err_calls; 171734f297SVictor Perevertkin err_t last_err; 181734f297SVictor Perevertkin char* expected_data; 191734f297SVictor Perevertkin u32_t expected_data_len; 201734f297SVictor Perevertkin }; 211734f297SVictor Perevertkin 221734f297SVictor Perevertkin struct test_tcp_txcounters { 231734f297SVictor Perevertkin u32_t num_tx_calls; 241734f297SVictor Perevertkin u32_t num_tx_bytes; 251734f297SVictor Perevertkin u8_t copy_tx_packets; 261734f297SVictor Perevertkin struct pbuf *tx_packets; 271734f297SVictor Perevertkin }; 281734f297SVictor Perevertkin 29*d6eebaa4SHervé Poussineau extern const ip_addr_t test_local_ip; 30*d6eebaa4SHervé Poussineau extern const ip_addr_t test_remote_ip; 31*d6eebaa4SHervé Poussineau extern const ip_addr_t test_netmask; 32*d6eebaa4SHervé Poussineau #define TEST_REMOTE_PORT 0x100 33*d6eebaa4SHervé Poussineau #define TEST_LOCAL_PORT 0x101 34*d6eebaa4SHervé Poussineau 351734f297SVictor Perevertkin /* Helper functions */ 361734f297SVictor Perevertkin void tcp_remove_all(void); 371734f297SVictor Perevertkin 381734f297SVictor Perevertkin struct pbuf* tcp_create_segment(ip_addr_t* src_ip, ip_addr_t* dst_ip, 391734f297SVictor Perevertkin u16_t src_port, u16_t dst_port, void* data, size_t data_len, 401734f297SVictor Perevertkin u32_t seqno, u32_t ackno, u8_t headerflags); 411734f297SVictor Perevertkin struct pbuf* tcp_create_rx_segment(struct tcp_pcb* pcb, void* data, size_t data_len, 421734f297SVictor Perevertkin u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags); 431734f297SVictor Perevertkin struct pbuf* tcp_create_rx_segment_wnd(struct tcp_pcb* pcb, void* data, size_t data_len, 441734f297SVictor Perevertkin u32_t seqno_offset, u32_t ackno_offset, u8_t headerflags, u16_t wnd); 45*d6eebaa4SHervé Poussineau void tcp_set_state(struct tcp_pcb* pcb, enum tcp_state state, const ip_addr_t* local_ip, 46*d6eebaa4SHervé Poussineau const ip_addr_t* remote_ip, u16_t local_port, u16_t remote_port); 471734f297SVictor Perevertkin void test_tcp_counters_err(void* arg, err_t err); 481734f297SVictor Perevertkin err_t test_tcp_counters_recv(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err); 491734f297SVictor Perevertkin 501734f297SVictor Perevertkin struct tcp_pcb* test_tcp_new_counters_pcb(struct test_tcp_counters* counters); 511734f297SVictor Perevertkin 521734f297SVictor Perevertkin void test_tcp_input(struct pbuf *p, struct netif *inp); 531734f297SVictor Perevertkin 541734f297SVictor Perevertkin void test_tcp_init_netif(struct netif *netif, struct test_tcp_txcounters *txcounters, 55*d6eebaa4SHervé Poussineau const ip_addr_t *ip_addr, const ip_addr_t *netmask); 561734f297SVictor Perevertkin 571734f297SVictor Perevertkin 581734f297SVictor Perevertkin #endif 59