netstack3_tcp/
settings.rs

1// Copyright 2025 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use core::num::NonZeroUsize;
6
7use netstack3_base::BufferSizeSettings;
8
9/// TCP layer stack settings.
10#[derive(Clone)]
11pub struct TcpSettings {
12    /// Receive buffer settings.
13    pub receive_buffer: BufferSizeSettings<NonZeroUsize>,
14    /// Send buffer settings.
15    pub send_buffer: BufferSizeSettings<NonZeroUsize>,
16}
17
18#[cfg(any(test, feature = "testutils"))]
19impl Default for TcpSettings {
20    fn default() -> Self {
21        // Arbitrarily chosen to satisfy tests so we have some semblance of
22        // clamping capacity in tests.
23
24        let min = NonZeroUsize::new(16).unwrap();
25        let max = NonZeroUsize::new(16 << 20).unwrap();
26        let default = NonZeroUsize::new(netstack3_base::WindowSize::DEFAULT.into()).unwrap();
27        let sizes = BufferSizeSettings::new(min, default, max).unwrap();
28        Self { receive_buffer: sizes, send_buffer: sizes }
29    }
30}