netstack3_tcp/
lib.rs

1// Copyright 2024 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
5//! Netstack3 core TCP.
6//!
7//! This crate contains the TCP implementation for netstack3.
8
9#![no_std]
10#![warn(missing_docs, unreachable_patterns, clippy::useless_conversion, clippy::redundant_clone)]
11
12extern crate fakealloc as alloc;
13
14#[path = "."]
15mod internal {
16    pub(super) mod base;
17    pub(super) mod buffer;
18    pub(super) mod congestion;
19    pub(super) mod rtt;
20    pub(super) mod socket;
21    pub(super) mod state;
22    pub(super) mod uninstantiable;
23}
24
25pub use internal::base::{
26    BufferSizes, ConnectionError, SocketOptions, TcpCounters, TcpCountersInner, TcpState,
27    DEFAULT_FIN_WAIT2_TIMEOUT,
28};
29pub use internal::buffer::{Buffer, BufferLimits, IntoBuffers, ReceiveBuffer, SendBuffer};
30pub use internal::socket::accept_queue::ListenerNotifier;
31pub use internal::socket::isn::IsnGenerator;
32pub use internal::socket::{
33    AcceptError, BindError, BoundInfo, ConnectError, ConnectionInfo, DemuxState,
34    DualStackDemuxIdConverter, DualStackIpExt, Ipv6Options, Ipv6SocketIdToIpv4DemuxIdConverter,
35    ListenError, NoConnection, OriginalDestinationError, SetDeviceError, SetReuseAddrError,
36    SocketAddr, SocketInfo, Sockets, TcpApi, TcpBindingsContext, TcpBindingsTypes, TcpContext,
37    TcpDemuxContext, TcpDualStackContext, TcpIpTransportContext, TcpSocketId, TcpSocketSet,
38    TcpSocketState, TcpTimerId, UnboundInfo, WeakTcpSocketId,
39};
40
41/// TCP test utilities.
42#[cfg(any(test, feature = "testutils"))]
43pub mod testutil {
44    pub use crate::internal::buffer::testutil::{
45        ClientBuffers, ProvidedBuffers, RingBuffer, TestSendBuffer, WriteBackClientBuffers,
46    };
47}