pub struct NetworkApiConfig {Show 19 fields
pub address: IpAddr,
pub port: u16,
pub public_address: Option<IpAddr>,
pub public_port: Option<u16>,
pub ignore_protocol_version: bool,
pub bandwidth_limit: Option<usize>,
pub total_bandwidth_limit: Option<usize>,
pub min_bandwidth_per_connection: Option<usize>,
pub blocked_addresses: Option<HashSet<SocketAddr>>,
pub event_loop_channel_capacity: usize,
pub transient_budget: usize,
pub transient_ttl_secs: u64,
pub min_connections: usize,
pub max_connections: usize,
pub streaming_threshold: usize,
pub ledbat_min_ssthresh: Option<usize>,
pub congestion_control: String,
pub bbr_startup_rate: Option<u64>,
pub skip_load_from_network: bool,
}Fields§
§address: IpAddrAddress to listen to locally
port: u16Port to expose api on
public_address: Option<IpAddr>Public external address for the network, mandatory for gateways.
public_port: Option<u16>Public external port for the network, mandatory for gateways.
Both kebab spellings are accepted: public-network-port (which matches
the --public-network-port flag and is the key this will be WRITTEN as
once #5130 lands) and the direct public-port.
ignore_protocol_version: boolWhether to ignore protocol version compatibility routine while initiating connections.
bandwidth_limit: Option<usize>Bandwidth limit per connection for data transfers (in bytes per second). NOTE: This applies to each connection independently - N connections may use N * bandwidth_limit total. Each connection uses LEDBAT congestion control to yield to foreground traffic. Default: 10 MB/s (10,000,000 bytes/second)
If total_bandwidth_limit is set, this field is ignored and per-connection rates
are derived from: total_bandwidth_limit / active_connections.
total_bandwidth_limit: Option<usize>Total bandwidth limit across ALL connections (in bytes per second).
When set, individual connection rates are computed as: total / active_connections.
This overrides the per-connection bandwidth_limit.
Example: With 50 MB/s total and 5 connections, each gets 10 MB/s.
Default: None (use per-connection bandwidth_limit instead)
min_bandwidth_per_connection: Option<usize>Minimum bandwidth per connection when using total_bandwidth_limit (bytes/sec).
Prevents connection starvation when many connections are active.
If total / N < min, each connection gets min (exceeding total is possible).
Default: 1 MB/s (1,000,000 bytes/second)
blocked_addresses: Option<HashSet<SocketAddr>>List of IP:port addresses to refuse connections to/from.
event_loop_channel_capacity: usizeCapacity for the event loop notification and op execution channels. Default: 2048. Increase under sustained multi-client load to reduce channel saturation and associated context-switch spikes.
transient_budget: usizeMaximum number of concurrent transient connections accepted by a gateway.
transient_ttl_secs: u64Time (in seconds) before an unpromoted transient connection is dropped.
min_connections: usizeMinimum desired connections for the ring topology.
max_connections: usizeMaximum allowed connections for the ring topology.
streaming_threshold: usizeThreshold in bytes above which streaming transport is used. Default: 65536 (64KB)
ledbat_min_ssthresh: Option<usize>Minimum ssthresh floor for LEDBAT timeout recovery (bytes).
On high-latency paths (>100ms RTT), repeated timeouts can cause ssthresh to collapse to ~5KB, severely limiting throughput recovery. Setting a higher floor prevents this “ssthresh death spiral”.
Default: 102400 (100KB) - suitable for intercontinental connections. Set to None for LAN-only deployments.
congestion_control: StringCongestion control algorithm for transport connections.
Available algorithms:
fixedrate(default): Fixed-rate transmission at 10 Mbps per connectionbbr: BBR (Bottleneck Bandwidth and RTT)ledbat: LEDBAT++ (Low Extra Delay Background Transport)
bbr_startup_rate: Option<u64>BBR startup minimum pacing rate (bytes/sec).
Only used when congestion_control is “bbr”.
skip_load_from_network: boolWhen true, this node is part of a local/test network and does not load
gateways from the public remote index. Used to disable the relay-ready
gate and other production-only features. The on-disk gateways.toml is
also skipped in two cases: when is_gateway is true (isolated
gateway), and when an explicit --gateway CLI entry is supplied. With
neither, the on-disk gateways.toml is still read — the test-harness
contract preserved for callers like freenet-test-network’s Docker NAT
path that pre-populate the file in a custom --config-dir.
Implementations§
Source§impl NetworkApiConfig
impl NetworkApiConfig
Sourcepub fn build_congestion_config(&self) -> CongestionControlConfig
pub fn build_congestion_config(&self) -> CongestionControlConfig
Build a CongestionControlConfig from the current network API configuration.
This parses the congestion_control string to determine the algorithm
and applies any algorithm-specific settings like bbr_startup_rate.
Trait Implementations§
Source§impl Clone for NetworkApiConfig
impl Clone for NetworkApiConfig
Source§fn clone(&self) -> NetworkApiConfig
fn clone(&self) -> NetworkApiConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NetworkApiConfig
impl Debug for NetworkApiConfig
Source§impl<'de> Deserialize<'de> for NetworkApiConfig
impl<'de> Deserialize<'de> for NetworkApiConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for NetworkApiConfig
impl RefUnwindSafe for NetworkApiConfig
impl Send for NetworkApiConfig
impl Sync for NetworkApiConfig
impl Unpin for NetworkApiConfig
impl UnsafeUnpin for NetworkApiConfig
impl UnwindSafe for NetworkApiConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more