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