core/peer_table.h (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#ifndef CIRCE_CORE_PEER_TABLE_H
#define CIRCE_CORE_PEER_TABLE_H
#include <stdbool.h>
#include <stdint.h>
struct circe_location
{
enum
{
CIRCE_ADDRESS_IPV4,
CIRCE_ADDRESS_IPV6,
} ip_type;
uint16_t port;
union
{
uint8_t ipv4[4];
uint8_t ipv6[16];
} ip_addr;
};
#define CIRCE_PEER_TABLE_LEN 64
#define CIRCE_IDENTITY_LEN 64 // SHA-512 hash of hostname || island name
struct circe_peer
{
bool double_lan; // lan1 is not valid if false
struct circe_location lan0_loc;
struct circe_location lan1_loc;
struct circe_location wan_loc;
uint8_t relay_server_identity[CIRCE_IDENTITY_LEN]; // SERVERS DON'T USE THIS,
// ONLY CLIENTS DO
uint8_t lan0_hash[32]; // SHA-256
uint8_t lan1_hash[32];
enum
{
CIRCE_ROUTE_LAN0,
CIRCE_ROUTE_LAN1,
CIRCE_ROUTE_WAN,
CIRCE_ROUTE_RELAY,
} current_route;
uint8_t identity[CIRCE_IDENTITY_LEN];
uint8_t mldsa_pubkey[1312]; // ML-DSA-44
uint8_t rx_key[32];
uint8_t tx_key[32];
};
#endif
|