ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
nat.h
Go to the documentation of this file.
1
10#pragma once
11
15#include <stdbool.h>
16#include <stdint.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
54
59void nat_quality_init(nat_quality_t *quality);
60
72asciichat_error_t nat_detect_quality(nat_quality_t *quality, const char *stun_server, uint16_t local_port);
73
84
96int nat_compare_quality(const nat_quality_t *ours, const nat_quality_t *theirs, bool we_are_initiator);
97
105void nat_quality_to_acip(const nat_quality_t *quality, const uint8_t session_id[16], const uint8_t participant_id[16],
106 acip_nat_quality_t *out);
107
114
120const char *nat_type_to_string(acip_nat_type_t type);
121
127int nat_compute_tier(const nat_quality_t *quality);
128
129#ifdef __cplusplus
130}
131#endif
ascii-chat Discovery Service (ACDS) Protocol Message Formats
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
acip_nat_type_t
NAT type classification for host selection.
Definition acds.h:825
acip_nat_quality_t
Definition acds.h:891
unsigned short uint16_t
Definition common.h:57
unsigned int uint32_t
Definition common.h:58
unsigned long long uint64_t
Definition common.h:59
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
int socket_t
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.
Definition nat.c:459
asciichat_error_t nat_measure_bandwidth(nat_quality_t *quality, socket_t acds_socket)
Measure upload bandwidth to ACDS server.
Definition nat.c:375
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.
Definition nat.c:54
void nat_quality_init(nat_quality_t *quality)
Initialize NAT quality structure with defaults.
Definition nat.c:32
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.
Definition nat.c:293
int nat_compute_tier(const nat_quality_t *quality)
Compute NAT tier for host selection (0=best, 4=worst)
Definition nat.c:39
void nat_quality_from_acip(const acip_nat_quality_t *acip, nat_quality_t *out)
Convert acip_nat_quality_t to nat_quality_t.
Definition nat.c:497
const char * nat_type_to_string(acip_nat_type_t type)
Get human-readable description of NAT type.
Definition nat.c:526
Cross-platform socket interface for ascii-chat.
uint8_t session_id[16]
uint8_t participant_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
NAT quality assessment result.
Definition nat.h:27
bool detection_complete
All probes finished.
Definition nat.h:51
bool has_host_candidates
Local IP reachable.
Definition nat.h:46
uint32_t upload_kbps
Upload bandwidth in Kbps.
Definition nat.h:39
asciichat_error_t error
Error if detection failed.
Definition nat.h:52
uint32_t download_kbps
Download bandwidth in Kbps.
Definition nat.h:40
bool lan_reachable
Same subnet as peer.
Definition nat.h:33
uint64_t stun_latency_ns
RTT to STUN server in nanoseconds.
Definition nat.h:34
bool has_srflx_candidates
STUN worked.
Definition nat.h:47
bool has_relay_candidates
TURN available.
Definition nat.h:48
uint8_t packet_loss_pct
Packet loss percentage.
Definition nat.h:43
acip_nat_type_t nat_type
NAT classification.
Definition nat.h:32
bool has_public_ip
STUN reflexive == local IP.
Definition nat.h:29
bool upnp_available
UPnP/NAT-PMP mapping succeeded.
Definition nat.h:30
uint16_t upnp_mapped_port
Mapped external port (if upnp_available)
Definition nat.h:31
uint64_t rtt_to_acds_ns
Latency to ACDS in nanoseconds.
Definition nat.h:41
uint16_t public_port
Public port.
Definition nat.h:36
uint64_t jitter_ns
Packet timing variance in nanoseconds.
Definition nat.h:42