forked from Green-Sky/tomato
Squashed 'external/toxcore/c-toxcore/' changes from 1828c5356..c9cdae001
c9cdae001 fix(toxav): remove extra copy of video frame on encode 4f6d4546b test: Improve the fake network library. a2581e700 refactor(toxcore): generate `Friend_Request` and `Dht_Nodes_Response` 2aaa11770 refactor(toxcore): use Tox_Memory in generated events 5c367452b test(toxcore): fix incorrect mutex in tox_scenario_get_time 8f92e710f perf: Add a timed limit of number of cookie requests. 695b6417a test: Add some more simulated network support. 815ae9ce9 test(toxcore): fix thread-safety in scenario framework 6d85c754e test(toxcore): add unit tests for net_crypto 9c22e79cc test(support): add SimulatedEnvironment for deterministic testing f34fcb195 chore: Update windows Dockerfile to debian stable (trixie). ece0e8980 fix(group_moderation): allow validating unsorted sanction list signatures a4fa754d7 refactor: rename struct Packet to struct Net_Packet d6f330f85 cleanup: Fix some warnings from coverity. e206bffa2 fix(group_chats): fix sync packets reverting topics 0e4715598 test: Add new scenario testing framework. 668291f44 refactor(toxcore): decouple Network_Funcs from sockaddr via IP_Port fc4396cef fix: potential division by zero in toxav and unsafe hex parsing 8e8b352ab refactor: Add nullable annotations to struct members. 7740bb421 refactor: decouple net_crypto from DHT 1936d4296 test: add benchmark for toxav audio and video 46bfdc2df fix: correct printf format specifiers for unsigned integers REVERT: 1828c5356 fix(toxav): remove extra copy of video frame on encode git-subtree-dir: external/toxcore/c-toxcore git-subtree-split: c9cdae001341e701fca980c9bb9febfeb95d2902
This commit is contained in:
@@ -23,35 +23,68 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Wrapper for sockaddr_storage and size.
|
||||
*/
|
||||
typedef struct Network_Addr Network_Addr;
|
||||
|
||||
typedef bitwise int Socket_Value;
|
||||
typedef struct Socket {
|
||||
Socket_Value value;
|
||||
} Socket;
|
||||
|
||||
#define SIZE_IP4 4
|
||||
#define SIZE_IP6 16
|
||||
#define SIZE_IP (1 + SIZE_IP6)
|
||||
#define SIZE_PORT 2
|
||||
#define SIZE_IPPORT (SIZE_IP + SIZE_PORT)
|
||||
|
||||
typedef struct Family {
|
||||
uint8_t value;
|
||||
} Family;
|
||||
|
||||
typedef union IP4 {
|
||||
uint32_t uint32;
|
||||
uint16_t uint16[2];
|
||||
uint8_t uint8[4];
|
||||
} IP4;
|
||||
|
||||
typedef union IP6 {
|
||||
uint8_t uint8[16];
|
||||
uint16_t uint16[8];
|
||||
uint32_t uint32[4];
|
||||
uint64_t uint64[2];
|
||||
} IP6;
|
||||
|
||||
typedef union IP_Union {
|
||||
IP4 v4;
|
||||
IP6 v6;
|
||||
} IP_Union;
|
||||
|
||||
typedef struct IP {
|
||||
Family family;
|
||||
IP_Union ip;
|
||||
} IP;
|
||||
|
||||
typedef struct IP_Port {
|
||||
IP ip;
|
||||
uint16_t port;
|
||||
} IP_Port;
|
||||
|
||||
int net_socket_to_native(Socket sock);
|
||||
Socket net_socket_from_native(int sock);
|
||||
|
||||
typedef int net_close_cb(void *_Nullable obj, Socket sock);
|
||||
typedef Socket net_accept_cb(void *_Nullable obj, Socket sock);
|
||||
typedef int net_bind_cb(void *_Nullable obj, Socket sock, const Network_Addr *_Nonnull addr);
|
||||
typedef int net_bind_cb(void *_Nullable obj, Socket sock, const IP_Port *_Nonnull addr);
|
||||
typedef int net_listen_cb(void *_Nullable obj, Socket sock, int backlog);
|
||||
typedef int net_connect_cb(void *_Nullable obj, Socket sock, const Network_Addr *_Nonnull addr);
|
||||
typedef int net_connect_cb(void *_Nullable obj, Socket sock, const IP_Port *_Nonnull addr);
|
||||
typedef int net_recvbuf_cb(void *_Nullable obj, Socket sock);
|
||||
typedef int net_recv_cb(void *_Nullable obj, Socket sock, uint8_t *_Nonnull buf, size_t len);
|
||||
typedef int net_recvfrom_cb(void *_Nullable obj, Socket sock, uint8_t *_Nonnull buf, size_t len, Network_Addr *_Nonnull addr);
|
||||
typedef int net_recvfrom_cb(void *_Nullable obj, Socket sock, uint8_t *_Nonnull buf, size_t len, IP_Port *_Nonnull addr);
|
||||
typedef int net_send_cb(void *_Nullable obj, Socket sock, const uint8_t *_Nonnull buf, size_t len);
|
||||
typedef int net_sendto_cb(void *_Nullable obj, Socket sock, const uint8_t *_Nonnull buf, size_t len, const Network_Addr *_Nonnull addr);
|
||||
typedef int net_sendto_cb(void *_Nullable obj, Socket sock, const uint8_t *_Nonnull buf, size_t len, const IP_Port *_Nonnull addr);
|
||||
typedef Socket net_socket_cb(void *_Nullable obj, int domain, int type, int proto);
|
||||
typedef int net_socket_nonblock_cb(void *_Nullable obj, Socket sock, bool nonblock);
|
||||
typedef int net_getsockopt_cb(void *_Nullable obj, Socket sock, int level, int optname, void *_Nonnull optval, size_t *_Nonnull optlen);
|
||||
typedef int net_setsockopt_cb(void *_Nullable obj, Socket sock, int level, int optname, const void *_Nonnull optval, size_t optlen);
|
||||
typedef int net_getaddrinfo_cb(void *_Nullable obj, const Memory *_Nonnull mem, const char *_Nonnull address, int family, int protocol, Network_Addr *_Nullable *_Nonnull addrs);
|
||||
typedef int net_freeaddrinfo_cb(void *_Nullable obj, const Memory *_Nonnull mem, Network_Addr *_Nullable addrs);
|
||||
typedef int net_getaddrinfo_cb(void *_Nullable obj, const Memory *_Nonnull mem, const char *_Nonnull address, int family, int protocol, IP_Port *_Nullable *_Nonnull addrs);
|
||||
typedef int net_freeaddrinfo_cb(void *_Nullable obj, const Memory *_Nonnull mem, IP_Port *_Nullable addrs);
|
||||
|
||||
/** @brief Functions wrapping POSIX network functions.
|
||||
*
|
||||
@@ -84,10 +117,6 @@ typedef struct Network {
|
||||
|
||||
const Network *_Nullable os_network(void);
|
||||
|
||||
typedef struct Family {
|
||||
uint8_t value;
|
||||
} Family;
|
||||
|
||||
bool net_family_is_unspec(Family family);
|
||||
bool net_family_is_ipv4(Family family);
|
||||
bool net_family_is_ipv6(Family family);
|
||||
@@ -182,46 +211,12 @@ typedef enum Net_Packet_Type {
|
||||
#define TCP_INET6 (TOX_AF_INET6 + 3)
|
||||
#define TCP_SERVER_FAMILY (TOX_AF_INET6 + 4)
|
||||
|
||||
#define SIZE_IP4 4
|
||||
#define SIZE_IP6 16
|
||||
#define SIZE_IP (1 + SIZE_IP6)
|
||||
#define SIZE_PORT 2
|
||||
#define SIZE_IPPORT (SIZE_IP + SIZE_PORT)
|
||||
|
||||
typedef union IP4 {
|
||||
uint32_t uint32;
|
||||
uint16_t uint16[2];
|
||||
uint8_t uint8[4];
|
||||
} IP4;
|
||||
|
||||
IP4 get_ip4_loopback(void);
|
||||
IP4 get_ip4_broadcast(void);
|
||||
|
||||
typedef union IP6 {
|
||||
uint8_t uint8[16];
|
||||
uint16_t uint16[8];
|
||||
uint32_t uint32[4];
|
||||
uint64_t uint64[2];
|
||||
} IP6;
|
||||
|
||||
IP6 get_ip6_loopback(void);
|
||||
IP6 get_ip6_broadcast(void);
|
||||
|
||||
typedef union IP_Union {
|
||||
IP4 v4;
|
||||
IP6 v6;
|
||||
} IP_Union;
|
||||
|
||||
typedef struct IP {
|
||||
Family family;
|
||||
IP_Union ip;
|
||||
} IP;
|
||||
|
||||
typedef struct IP_Port {
|
||||
IP ip;
|
||||
uint16_t port;
|
||||
} IP_Port;
|
||||
|
||||
Socket net_socket(const Network *_Nonnull ns, Family domain, int type, int protocol);
|
||||
|
||||
/**
|
||||
@@ -450,15 +445,15 @@ bool set_socket_dualstack(const Network *_Nonnull ns, Socket sock);
|
||||
*
|
||||
* Use `net_send_packet` to send it to an IP/port endpoint.
|
||||
*/
|
||||
typedef struct Packet {
|
||||
typedef struct Net_Packet {
|
||||
const uint8_t *_Nonnull data;
|
||||
uint16_t length;
|
||||
} Packet;
|
||||
} Net_Packet;
|
||||
|
||||
/**
|
||||
* Function to send a network packet to a given IP/port.
|
||||
*/
|
||||
int net_send_packet(const Networking_Core *_Nonnull net, const IP_Port *_Nonnull ip_port, Packet packet);
|
||||
int net_send_packet(const Networking_Core *_Nonnull net, const IP_Port *_Nonnull ip_port, Net_Packet packet);
|
||||
|
||||
/**
|
||||
* Function to send packet(data) of length length to ip_port.
|
||||
|
||||
Reference in New Issue
Block a user