You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.8 KiB
52 lines
1.8 KiB
#ifndef UTUN_TEST_SOCKET_API_H |
|
#define UTUN_TEST_SOCKET_API_H |
|
|
|
#include <sys/socket.h> |
|
#include <stdint.h> |
|
|
|
struct utun_test_packet { |
|
uint8_t* data; |
|
size_t len; |
|
struct sockaddr_storage addr; |
|
socklen_t addrlen; |
|
struct utun_test_packet* next; |
|
}; |
|
|
|
struct utun_test_packet_queue { |
|
struct utun_test_packet* head; |
|
struct utun_test_packet* tail; |
|
size_t count; |
|
}; |
|
|
|
struct utun_test_socket_api { |
|
struct utun_test_packet_queue send_queue; |
|
struct utun_test_packet_queue recv_queue; |
|
|
|
ssize_t (*on_send)(const uint8_t* data, size_t len, |
|
const struct sockaddr* dest_addr, socklen_t dest_addrlen, |
|
void* user_data); |
|
|
|
ssize_t (*on_recv)(uint8_t* buffer, size_t buffer_size, |
|
struct sockaddr* src_addr, socklen_t* src_addrlen, |
|
void* user_data); |
|
|
|
void* user_data; |
|
}; |
|
|
|
void utun_test_packet_queue_init(struct utun_test_packet_queue* queue); |
|
void utun_test_packet_queue_cleanup(struct utun_test_packet_queue* queue); |
|
void utun_test_packet_queue_push(struct utun_test_packet_queue* queue, |
|
const uint8_t* data, size_t len, |
|
const struct sockaddr* addr, socklen_t addrlen); |
|
struct utun_test_packet* utun_test_packet_queue_pop(struct utun_test_packet_queue* queue); |
|
size_t utun_test_packet_queue_count(struct utun_test_packet_queue* queue); |
|
|
|
ssize_t utun_test_default_on_send(const uint8_t* data, size_t len, |
|
const struct sockaddr* dest_addr, socklen_t dest_addrlen, |
|
void* user_data); |
|
|
|
ssize_t utun_test_default_on_recv(uint8_t* buffer, size_t buffer_size, |
|
struct sockaddr* src_addr, socklen_t* src_addrlen, |
|
void* user_data); |
|
|
|
#endif |