12#include <ascii-chat/asciichat_errno.h>
13#include <ascii-chat/network/acip/acds.h>
14#include <ascii-chat/platform/socket.h>
35 char public_address[64];
106 acip_nat_quality_t *out);
void nat_quality_to_acip(const nat_quality_t *quality, const uint8_t session_id[16], const uint8_t participant_id[16], acip_nat_quality_t *out)
Convert nat_quality_t to acip_nat_quality_t for network transmission.
asciichat_error_t nat_measure_bandwidth(nat_quality_t *quality, socket_t acds_socket)
Measure upload bandwidth to ACDS server.
int nat_compare_quality(const nat_quality_t *ours, const nat_quality_t *theirs, bool we_are_initiator)
Compare two NAT qualities and determine who should host.
void nat_quality_init(nat_quality_t *quality)
Initialize NAT quality structure with defaults.
asciichat_error_t nat_detect_quality(nat_quality_t *quality, const char *stun_server, uint16_t local_port)
Detect NAT quality using all available methods.
int nat_compute_tier(const nat_quality_t *quality)
Compute NAT tier for host selection (0=best, 4=worst)
void nat_quality_from_acip(const acip_nat_quality_t *acip, nat_quality_t *out)
Convert acip_nat_quality_t to nat_quality_t.
const char * nat_type_to_string(acip_nat_type_t type)
Get human-readable description of NAT type.
uint8_t participant_id[16]
NAT quality assessment result.
bool detection_complete
All probes finished.
bool has_host_candidates
Local IP reachable.
uint32_t upload_kbps
Upload bandwidth in Kbps.
asciichat_error_t error
Error if detection failed.
uint32_t download_kbps
Download bandwidth in Kbps.
bool lan_reachable
Same subnet as peer.
uint64_t stun_latency_ns
RTT to STUN server in nanoseconds.
bool has_srflx_candidates
STUN worked.
bool has_relay_candidates
TURN available.
uint8_t packet_loss_pct
Packet loss percentage.
acip_nat_type_t nat_type
NAT classification.
bool has_public_ip
STUN reflexive == local IP.
bool upnp_available
UPnP/NAT-PMP mapping succeeded.
uint16_t upnp_mapped_port
Mapped external port (if upnp_available)
uint64_t rtt_to_acds_ns
Latency to ACDS in nanoseconds.
uint16_t public_port
Public port.
uint64_t jitter_ns
Packet timing variance in nanoseconds.