mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Move Networking_Core struct into the .c file.
To make it an abstract type everywhere except in network.c.
This commit is contained in:
parent
c84daff541
commit
2fbed5b4c5
|
@ -468,7 +468,7 @@ static void test_list_main(void)
|
|||
|
||||
dhts[i] = new_DHT(NULL, new_networking(NULL, ip, DHT_DEFAULT_PORT + i), true);
|
||||
ck_assert_msg(dhts[i] != 0, "Failed to create dht instances %u", i);
|
||||
ck_assert_msg(dhts[i]->net->port != DHT_DEFAULT_PORT + i, "Bound to wrong port");
|
||||
ck_assert_msg(net_port(dhts[i]->net) != DHT_DEFAULT_PORT + i, "Bound to wrong port");
|
||||
}
|
||||
|
||||
for (j = 0; j < NUM_DHT; ++j) {
|
||||
|
@ -604,7 +604,7 @@ START_TEST(test_DHT_test)
|
|||
|
||||
dhts[i] = new_DHT(NULL, new_networking(NULL, ip, DHT_DEFAULT_PORT + i), true);
|
||||
ck_assert_msg(dhts[i] != 0, "Failed to create dht instances %u", i);
|
||||
ck_assert_msg(dhts[i]->net->port != DHT_DEFAULT_PORT + i, "Bound to wrong port");
|
||||
ck_assert_msg(net_port(dhts[i]->net) != DHT_DEFAULT_PORT + i, "Bound to wrong port");
|
||||
}
|
||||
|
||||
struct {
|
||||
|
|
|
@ -163,12 +163,12 @@ START_TEST(test_basic)
|
|||
ck_assert_msg((onion1 != NULL) && (onion2 != NULL), "Onion failed initializing.");
|
||||
networking_registerhandler(onion2->net, 'I', &handle_test_1, onion2);
|
||||
|
||||
IP_Port on1 = {ip, onion1->net->port};
|
||||
IP_Port on1 = {ip, net_port(onion1->net)};
|
||||
Node_format n1;
|
||||
memcpy(n1.public_key, onion1->dht->self_public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
n1.ip_port = on1;
|
||||
|
||||
IP_Port on2 = {ip, onion2->net->port};
|
||||
IP_Port on2 = {ip, net_port(onion2->net)};
|
||||
Node_format n2;
|
||||
memcpy(n2.public_key, onion2->dht->self_public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
n2.ip_port = on2;
|
||||
|
@ -402,11 +402,11 @@ START_TEST(test_announce)
|
|||
IP ip = get_loopback();
|
||||
|
||||
for (i = 3; i < NUM_ONIONS; ++i) {
|
||||
IP_Port ip_port = {ip, onions[i - 1]->onion->net->port};
|
||||
IP_Port ip_port = {ip, net_port(onions[i - 1]->onion->net)};
|
||||
DHT_bootstrap(onions[i]->onion->dht, ip_port, onions[i - 1]->onion->dht->self_public_key);
|
||||
IP_Port ip_port1 = {ip, onions[i - 2]->onion->net->port};
|
||||
IP_Port ip_port1 = {ip, net_port(onions[i - 2]->onion->net)};
|
||||
DHT_bootstrap(onions[i]->onion->dht, ip_port1, onions[i - 2]->onion->dht->self_public_key);
|
||||
IP_Port ip_port2 = {ip, onions[i - 3]->onion->net->port};
|
||||
IP_Port ip_port2 = {ip, net_port(onions[i - 3]->onion->net)};
|
||||
DHT_bootstrap(onions[i]->onion->dht, ip_port2, onions[i - 3]->onion->dht->self_public_key);
|
||||
}
|
||||
|
||||
|
@ -464,7 +464,7 @@ START_TEST(test_announce)
|
|||
}
|
||||
|
||||
onion_getfriendip(onions[NUM_LAST]->onion_c, frnum, &ip_port);
|
||||
ck_assert_msg(ip_port.port == onions[NUM_FIRST]->onion->net->port, "Port in returned ip not correct.");
|
||||
ck_assert_msg(ip_port.port == net_port(onions[NUM_FIRST]->onion->net), "Port in returned ip not correct.");
|
||||
|
||||
for (i = 0; i < NUM_ONIONS; ++i) {
|
||||
kill_onions(onions[i]);
|
||||
|
|
|
@ -157,7 +157,7 @@ int main(int argc, char *argv[])
|
|||
fclose(file);
|
||||
|
||||
printf("\n");
|
||||
printf("Port: %u\n", net_ntohs(dht->net->port));
|
||||
printf("Port: %u\n", net_ntohs(net_port(dht->net)));
|
||||
|
||||
if (argc > argvoffset + 3) {
|
||||
printf("Trying to bootstrap into the network...\n");
|
||||
|
|
|
@ -376,7 +376,7 @@ int send_LANdiscovery(uint16_t port, DHT *dht)
|
|||
ip_port.port = port;
|
||||
|
||||
/* IPv6 multicast */
|
||||
if (dht->net->family == TOX_AF_INET6) {
|
||||
if (net_family(dht->net) == TOX_AF_INET6) {
|
||||
ip_port.ip = broadcast_ip(TOX_AF_INET6, TOX_AF_INET6);
|
||||
|
||||
if (ip_isset(&ip_port.ip)) {
|
||||
|
@ -387,7 +387,7 @@ int send_LANdiscovery(uint16_t port, DHT *dht)
|
|||
}
|
||||
|
||||
/* IPv4 broadcast (has to be IPv4-in-IPv6 mapping if socket is TOX_AF_INET6 */
|
||||
ip_port.ip = broadcast_ip(dht->net->family, TOX_AF_INET);
|
||||
ip_port.ip = broadcast_ip(net_family(dht->net), TOX_AF_INET);
|
||||
|
||||
if (ip_isset(&ip_port.ip)) {
|
||||
if (sendpacket(dht->net, ip_port, data, 1 + CRYPTO_PUBLIC_KEY_SIZE)) {
|
||||
|
|
|
@ -1946,8 +1946,7 @@ Messenger *new_messenger(Messenger_Options *options, unsigned int *error)
|
|||
unsigned int net_err = 0;
|
||||
|
||||
if (options->udp_disabled) {
|
||||
/* this is the easiest way to completely disable UDP without changing too much code. */
|
||||
m->net = (Networking_Core *)calloc(1, sizeof(Networking_Core));
|
||||
m->net = new_networking_no_udp(log);
|
||||
} else {
|
||||
IP ip;
|
||||
ip_init(&ip, options->ipv6enabled);
|
||||
|
|
|
@ -388,6 +388,31 @@ static void loglogdata(Logger *log, const char *message, const uint8_t *buffer,
|
|||
}
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
packet_handler_callback function;
|
||||
void *object;
|
||||
} Packet_Handler;
|
||||
|
||||
struct Networking_Core {
|
||||
Logger *log;
|
||||
Packet_Handler packethandlers[256];
|
||||
|
||||
Family family;
|
||||
uint16_t port;
|
||||
/* Our UDP socket. */
|
||||
Socket sock;
|
||||
};
|
||||
|
||||
Family net_family(const Networking_Core *net)
|
||||
{
|
||||
return net->family;
|
||||
}
|
||||
|
||||
uint16_t net_port(const Networking_Core *net)
|
||||
{
|
||||
return net->port;
|
||||
}
|
||||
|
||||
/* Basic network functions:
|
||||
* Function to send packet(data) of length length to ip_port.
|
||||
*/
|
||||
|
@ -816,6 +841,20 @@ Networking_Core *new_networking_ex(Logger *log, IP ip, uint16_t port_from, uint1
|
|||
return NULL;
|
||||
}
|
||||
|
||||
Networking_Core *new_networking_no_udp(Logger *log)
|
||||
{
|
||||
/* this is the easiest way to completely disable UDP without changing too much code. */
|
||||
Networking_Core *net = (Networking_Core *)calloc(1, sizeof(Networking_Core));
|
||||
|
||||
if (net == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
net->log = log;
|
||||
|
||||
return net;
|
||||
}
|
||||
|
||||
/* Function to cleanup networking stuff. */
|
||||
void kill_networking(Networking_Core *net)
|
||||
{
|
||||
|
|
|
@ -303,20 +303,10 @@ int addr_resolve_or_parse_ip(const char *address, IP *to, IP *extra);
|
|||
typedef int (*packet_handler_callback)(void *object, IP_Port ip_port, const uint8_t *data, uint16_t len,
|
||||
void *userdata);
|
||||
|
||||
typedef struct {
|
||||
packet_handler_callback function;
|
||||
void *object;
|
||||
} Packet_Handles;
|
||||
typedef struct Networking_Core Networking_Core;
|
||||
|
||||
typedef struct {
|
||||
Logger *log;
|
||||
Packet_Handles packethandlers[256];
|
||||
|
||||
Family family;
|
||||
uint16_t port;
|
||||
/* Our UDP socket. */
|
||||
Socket sock;
|
||||
} Networking_Core;
|
||||
Family net_family(const Networking_Core *net);
|
||||
uint16_t net_port(const Networking_Core *net);
|
||||
|
||||
/* Run this before creating sockets.
|
||||
*
|
||||
|
@ -415,6 +405,7 @@ int bind_to_port(Socket sock, int family, uint16_t port);
|
|||
*/
|
||||
Networking_Core *new_networking(Logger *log, IP ip, uint16_t port);
|
||||
Networking_Core *new_networking_ex(Logger *log, IP ip, uint16_t port_from, uint16_t port_to, unsigned int *error);
|
||||
Networking_Core *new_networking_no_udp(Logger *log);
|
||||
|
||||
/* Function to cleanup networking stuff (doesn't do much right now). */
|
||||
void kill_networking(Networking_Core *net);
|
||||
|
|
|
@ -59,7 +59,7 @@ int create_announce_request(uint8_t *packet, uint16_t max_packet_length, const u
|
|||
}
|
||||
|
||||
uint8_t plain[ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE +
|
||||
ONION_ANNOUNCE_SENDBACK_DATA_LENGTH];
|
||||
ONION_ANNOUNCE_SENDBACK_DATA_LENGTH];
|
||||
memcpy(plain, ping_id, ONION_PING_ID_SIZE);
|
||||
memcpy(plain + ONION_PING_ID_SIZE, client_id, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
memcpy(plain + ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE, data_public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
|
@ -347,7 +347,7 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t *
|
|||
get_shared_key(&onion_a->shared_keys_recv, shared_key, onion_a->dht->self_secret_key, packet_public_key);
|
||||
|
||||
uint8_t plain[ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE +
|
||||
ONION_ANNOUNCE_SENDBACK_DATA_LENGTH];
|
||||
ONION_ANNOUNCE_SENDBACK_DATA_LENGTH];
|
||||
int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE,
|
||||
ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH +
|
||||
CRYPTO_MAC_SIZE, plain);
|
||||
|
|
|
@ -1526,7 +1526,7 @@ void tox_self_get_dht_id(const Tox *tox, uint8_t *dht_id)
|
|||
uint16_t tox_self_get_udp_port(const Tox *tox, TOX_ERR_GET_PORT *error)
|
||||
{
|
||||
const Messenger *m = tox;
|
||||
uint16_t port = net_htons(m->net->port);
|
||||
uint16_t port = net_htons(net_port(m->net));
|
||||
|
||||
if (port) {
|
||||
SET_ERROR_PARAMETER(error, TOX_ERR_GET_PORT_OK);
|
||||
|
|
Loading…
Reference in New Issue
Block a user