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

#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