From 639bc91e3123526a9d6e80001d521a08f62c201b Mon Sep 17 00:00:00 2001 From: Ruihan Li Date: Thu, 12 Jun 2025 23:07:47 +0800 Subject: [PATCH] Clean up public re-exports under `net/` --- kernel/src/net/iface/ext.rs | 2 +- kernel/src/net/socket/ip/addr.rs | 2 +- kernel/src/net/socket/ip/datagram/bound.rs | 2 +- kernel/src/net/socket/ip/datagram/mod.rs | 14 +++------ kernel/src/net/socket/ip/datagram/unbound.rs | 2 +- kernel/src/net/socket/ip/mod.rs | 9 ++++-- kernel/src/net/socket/ip/stream/connected.rs | 7 ++--- kernel/src/net/socket/ip/stream/connecting.rs | 2 +- kernel/src/net/socket/ip/stream/init.rs | 4 +-- kernel/src/net/socket/ip/stream/listen.rs | 2 +- kernel/src/net/socket/ip/stream/mod.rs | 13 +++----- kernel/src/net/socket/ip/stream/options.rs | 31 +++++++++++++++++-- kernel/src/net/socket/ip/stream/util.rs | 29 +---------------- kernel/src/net/socket/mod.rs | 10 +++--- kernel/src/net/socket/netlink/addr/mod.rs | 2 +- kernel/src/net/socket/netlink/common/mod.rs | 7 +++-- .../socket/netlink/kobject_uevent/bound.rs | 3 +- .../netlink/kobject_uevent/message/test.rs | 3 +- kernel/src/net/socket/netlink/route/bound.rs | 3 +- kernel/src/net/socket/options/mod.rs | 4 +-- kernel/src/net/socket/unix/addr.rs | 2 +- .../src/net/socket/unix/stream/connected.rs | 2 +- kernel/src/net/socket/unix/stream/init.rs | 2 +- kernel/src/net/socket/unix/stream/listener.rs | 2 +- kernel/src/net/socket/unix/stream/socket.rs | 4 +-- kernel/src/net/socket/util/datagram_common.rs | 2 +- kernel/src/net/socket/util/linger_option.rs | 23 ++++++++++++++ kernel/src/net/socket/util/message_header.rs | 2 +- kernel/src/net/socket/util/mod.rs | 15 ++++++--- kernel/src/net/socket/util/options.rs | 23 +------------- kernel/src/net/socket/vsock/addr.rs | 2 +- .../src/net/socket/vsock/stream/connected.rs | 2 +- kernel/src/net/socket/vsock/stream/socket.rs | 3 +- kernel/src/syscall/recvfrom.rs | 2 +- kernel/src/syscall/recvmsg.rs | 2 +- kernel/src/syscall/sendmsg.rs | 2 +- kernel/src/syscall/sendto.rs | 2 +- kernel/src/syscall/shutdown.rs | 2 +- kernel/src/syscall/socket.rs | 2 +- kernel/src/util/net/addr/family.rs | 2 +- kernel/src/util/net/options/tcp.rs | 2 +- kernel/src/util/net/options/utils.rs | 4 +-- kernel/src/util/net/socket.rs | 2 +- 43 files changed, 128 insertions(+), 129 deletions(-) create mode 100644 kernel/src/net/socket/util/linger_option.rs diff --git a/kernel/src/net/iface/ext.rs b/kernel/src/net/iface/ext.rs index b6537833c..79ddaa354 100644 --- a/kernel/src/net/iface/ext.rs +++ b/kernel/src/net/iface/ext.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MPL-2.0 use super::sched::PollScheduler; -use crate::net::socket::ip::{datagram::DatagramObserver, stream::StreamObserver}; +use crate::net::socket::ip::{DatagramObserver, StreamObserver}; pub struct BigtcpExt; diff --git a/kernel/src/net/socket/ip/addr.rs b/kernel/src/net/socket/ip/addr.rs index 7e1044059..a0f34bdfa 100644 --- a/kernel/src/net/socket/ip/addr.rs +++ b/kernel/src/net/socket/ip/addr.rs @@ -2,7 +2,7 @@ use aster_bigtcp::wire::{IpAddress, IpEndpoint, Ipv4Address}; -use crate::{net::socket::SocketAddr, prelude::*, return_errno_with_message}; +use crate::{net::socket::util::SocketAddr, prelude::*, return_errno_with_message}; impl TryFrom for IpEndpoint { type Error = Error; diff --git a/kernel/src/net/socket/ip/datagram/bound.rs b/kernel/src/net/socket/ip/datagram/bound.rs index 0bc4f4737..9eb825d01 100644 --- a/kernel/src/net/socket/ip/datagram/bound.rs +++ b/kernel/src/net/socket/ip/datagram/bound.rs @@ -9,7 +9,7 @@ use crate::{ events::IoEvents, net::{ iface::{Iface, UdpSocket}, - socket::util::{datagram_common, send_recv_flags::SendRecvFlags}, + socket::util::{datagram_common, SendRecvFlags}, }, prelude::*, util::{MultiRead, MultiWrite}, diff --git a/kernel/src/net/socket/ip/datagram/mod.rs b/kernel/src/net/socket/ip/datagram/mod.rs index f560a6410..2fc2c5fb1 100644 --- a/kernel/src/net/socket/ip/datagram/mod.rs +++ b/kernel/src/net/socket/ip/datagram/mod.rs @@ -3,10 +3,10 @@ use core::sync::atomic::{AtomicBool, Ordering}; use aster_bigtcp::wire::IpEndpoint; -use unbound::BindOptions; +use bound::BoundDatagram; +use unbound::{BindOptions, UnboundDatagram}; -use self::{bound::BoundDatagram, unbound::UnboundDatagram}; -use super::UNSPECIFIED_LOCAL_ENDPOINT; +use super::addr::UNSPECIFIED_LOCAL_ENDPOINT; use crate::{ events::IoEvents, match_sock_option_mut, @@ -16,9 +16,7 @@ use crate::{ util::{ datagram_common::{select_remote_and_bind, Bound, Inner}, options::{SetSocketLevelOption, SocketOptionSet}, - send_recv_flags::SendRecvFlags, - socket_addr::SocketAddr, - MessageHeader, + MessageHeader, SendRecvFlags, SocketAddr, }, Socket, }, @@ -28,11 +26,9 @@ use crate::{ }; mod bound; -mod observer; +pub(super) mod observer; mod unbound; -pub(in crate::net) use self::observer::DatagramObserver; - #[derive(Debug, Clone)] struct OptionSet { socket: SocketOptionSet, diff --git a/kernel/src/net/socket/ip/datagram/unbound.rs b/kernel/src/net/socket/ip/datagram/unbound.rs index a372652da..6847862ca 100644 --- a/kernel/src/net/socket/ip/datagram/unbound.rs +++ b/kernel/src/net/socket/ip/datagram/unbound.rs @@ -2,7 +2,7 @@ use aster_bigtcp::{socket::UdpSocket, wire::IpEndpoint}; -use super::{bound::BoundDatagram, DatagramObserver}; +use super::{bound::BoundDatagram, observer::DatagramObserver}; use crate::{ events::IoEvents, net::socket::{ diff --git a/kernel/src/net/socket/ip/mod.rs b/kernel/src/net/socket/ip/mod.rs index 21bb2efc2..2f5fc2502 100644 --- a/kernel/src/net/socket/ip/mod.rs +++ b/kernel/src/net/socket/ip/mod.rs @@ -2,8 +2,11 @@ mod addr; mod common; -pub mod datagram; +mod datagram; pub mod options; -pub mod stream; +mod stream; -use addr::UNSPECIFIED_LOCAL_ENDPOINT; +pub(in crate::net) use datagram::observer::DatagramObserver; +pub use datagram::DatagramSocket; +pub(in crate::net) use stream::observer::StreamObserver; +pub use stream::{options as stream_options, StreamSocket}; diff --git a/kernel/src/net/socket/ip/stream/connected.rs b/kernel/src/net/socket/ip/stream/connected.rs index 781e13c6d..3c5d13ace 100644 --- a/kernel/src/net/socket/ip/stream/connected.rs +++ b/kernel/src/net/socket/ip/stream/connected.rs @@ -6,15 +6,12 @@ use aster_bigtcp::{ wire::IpEndpoint, }; -use super::StreamObserver; +use super::observer::StreamObserver; use crate::{ events::IoEvents, net::{ iface::{Iface, RawTcpSocketExt, TcpConnection}, - socket::{ - util::{send_recv_flags::SendRecvFlags, shutdown_cmd::SockShutdownCmd}, - LingerOption, - }, + socket::util::{LingerOption, SendRecvFlags, SockShutdownCmd}, }, prelude::*, process::signal::{Pollee, Poller}, diff --git a/kernel/src/net/socket/ip/stream/connecting.rs b/kernel/src/net/socket/ip/stream/connecting.rs index ce7e0a373..4e1bd7a93 100644 --- a/kernel/src/net/socket/ip/stream/connecting.rs +++ b/kernel/src/net/socket/ip/stream/connecting.rs @@ -6,7 +6,7 @@ use aster_bigtcp::{ wire::IpEndpoint, }; -use super::{connected::ConnectedStream, init::InitStream, StreamObserver}; +use super::{connected::ConnectedStream, init::InitStream, observer::StreamObserver}; use crate::{ events::IoEvents, net::iface::{BoundPort, Iface, TcpConnection}, diff --git a/kernel/src/net/socket/ip/stream/init.rs b/kernel/src/net/socket/ip/stream/init.rs index d696b7da0..f8964aef5 100644 --- a/kernel/src/net/socket/ip/stream/init.rs +++ b/kernel/src/net/socket/ip/stream/init.rs @@ -7,14 +7,14 @@ use core::{ use aster_bigtcp::{socket::RawTcpOption, wire::IpEndpoint}; -use super::{connecting::ConnectingStream, listen::ListenStream, StreamObserver}; +use super::{connecting::ConnectingStream, listen::ListenStream, observer::StreamObserver}; use crate::{ events::IoEvents, net::{ iface::BoundPort, socket::{ ip::common::{bind_port, get_ephemeral_endpoint}, - SocketAddr, + util::SocketAddr, }, }, prelude::*, diff --git a/kernel/src/net/socket/ip/stream/listen.rs b/kernel/src/net/socket/ip/stream/listen.rs index c2a01a9c6..e2684854c 100644 --- a/kernel/src/net/socket/ip/stream/listen.rs +++ b/kernel/src/net/socket/ip/stream/listen.rs @@ -6,7 +6,7 @@ use aster_bigtcp::{ wire::IpEndpoint, }; -use super::{connected::ConnectedStream, StreamObserver}; +use super::{connected::ConnectedStream, observer::StreamObserver}; use crate::{ events::IoEvents, net::iface::{BoundPort, Iface, TcpListener}, diff --git a/kernel/src/net/socket/ip/stream/mod.rs b/kernel/src/net/socket/ip/stream/mod.rs index 33db1b991..eafa3d05d 100644 --- a/kernel/src/net/socket/ip/stream/mod.rs +++ b/kernel/src/net/socket/ip/stream/mod.rs @@ -10,6 +10,7 @@ use connected::{close_and_linger, ConnectedStream}; use connecting::{ConnResult, ConnectingStream}; use init::InitStream; use listen::ListenStream; +use observer::StreamObserver; use options::{ Congestion, DeferAccept, Inq, KeepIdle, MaxSegment, NoDelay, SynCnt, UserTimeout, WindowClamp, KEEPALIVE_INTERVAL, @@ -19,8 +20,8 @@ use takeable::Takeable; use util::{Retrans, TcpOptionSet}; use super::{ + addr::UNSPECIFIED_LOCAL_ENDPOINT, options::{IpOptionSet, SetIpLevelOption}, - UNSPECIFIED_LOCAL_ENDPOINT, }; use crate::{ events::IoEvents, @@ -33,10 +34,7 @@ use crate::{ private::SocketPrivate, util::{ options::{SetSocketLevelOption, SocketOptionSet}, - send_recv_flags::SendRecvFlags, - shutdown_cmd::SockShutdownCmd, - socket_addr::SocketAddr, - MessageHeader, + MessageHeader, SendRecvFlags, SockShutdownCmd, SocketAddr, }, Socket, }, @@ -50,13 +48,10 @@ mod connected; mod connecting; mod init; mod listen; -mod observer; +pub(super) mod observer; pub mod options; mod util; -pub(in crate::net) use self::observer::StreamObserver; -pub use self::util::CongestionControl; - pub struct StreamSocket { // Lock order: `state` first, `options` second state: RwLock, PreemptDisabled>, diff --git a/kernel/src/net/socket/ip/stream/options.rs b/kernel/src/net/socket/ip/stream/options.rs index f3f3a3f4e..d43129fc6 100644 --- a/kernel/src/net/socket/ip/stream/options.rs +++ b/kernel/src/net/socket/ip/stream/options.rs @@ -1,7 +1,6 @@ // SPDX-License-Identifier: MPL-2.0 -use super::CongestionControl; -use crate::impl_socket_options; +use crate::{impl_socket_options, prelude::*}; impl_socket_options!( pub struct NoDelay(bool); @@ -15,6 +14,34 @@ impl_socket_options!( pub struct Inq(bool); ); +#[derive(Debug, Clone, Copy)] +pub enum CongestionControl { + Reno, + Cubic, +} + +impl CongestionControl { + const RENO: &'static str = "reno"; + const CUBIC: &'static str = "cubic"; + + pub fn new(name: &str) -> Result { + let congestion = match name { + Self::RENO => Self::Reno, + Self::CUBIC => Self::Cubic, + _ => return_errno_with_message!(Errno::ENOENT, "unsupported congestion name"), + }; + + Ok(congestion) + } + + pub fn name(&self) -> &'static str { + match self { + Self::Reno => Self::RENO, + Self::Cubic => Self::CUBIC, + } + } +} + /// The keepalive interval. /// /// The linux value can be found at `/proc/sys/net/ipv4/tcp_keepalive_intvl`, diff --git a/kernel/src/net/socket/ip/stream/util.rs b/kernel/src/net/socket/ip/stream/util.rs index 47ebc21f3..e98d84a68 100644 --- a/kernel/src/net/socket/ip/stream/util.rs +++ b/kernel/src/net/socket/ip/stream/util.rs @@ -2,6 +2,7 @@ use aster_bigtcp::time::Duration; +use super::options::CongestionControl; use crate::prelude::*; #[derive(Debug, Clone, Copy, CopyGetters, Setters)] @@ -102,31 +103,3 @@ impl Retrans { period } } - -#[derive(Debug, Clone, Copy)] -pub enum CongestionControl { - Reno, - Cubic, -} - -impl CongestionControl { - const RENO: &'static str = "reno"; - const CUBIC: &'static str = "cubic"; - - pub fn new(name: &str) -> Result { - let congestion = match name { - Self::RENO => Self::Reno, - Self::CUBIC => Self::Cubic, - _ => return_errno_with_message!(Errno::ENOENT, "unsupported congestion name"), - }; - - Ok(congestion) - } - - pub fn name(&self) -> &'static str { - match self { - Self::Reno => Self::RENO, - Self::Cubic => Self::CUBIC, - } - } -} diff --git a/kernel/src/net/socket/mod.rs b/kernel/src/net/socket/mod.rs index 8a272618c..e0a20464e 100644 --- a/kernel/src/net/socket/mod.rs +++ b/kernel/src/net/socket/mod.rs @@ -1,10 +1,8 @@ // SPDX-License-Identifier: MPL-2.0 -use self::options::SocketOption; -pub use self::util::{ - options::LingerOption, send_recv_flags::SendRecvFlags, shutdown_cmd::SockShutdownCmd, - socket_addr::SocketAddr, MessageHeader, -}; +use options::SocketOption; +use util::{MessageHeader, SendRecvFlags, SockShutdownCmd, SocketAddr}; + use crate::{ fs::{ file_handle::FileLike, @@ -18,7 +16,7 @@ pub mod ip; pub mod netlink; pub mod options; pub mod unix; -mod util; +pub mod util; pub mod vsock; mod private { diff --git a/kernel/src/net/socket/netlink/addr/mod.rs b/kernel/src/net/socket/netlink/addr/mod.rs index 276ce223c..38b0343fc 100644 --- a/kernel/src/net/socket/netlink/addr/mod.rs +++ b/kernel/src/net/socket/netlink/addr/mod.rs @@ -4,7 +4,7 @@ mod multicast; pub use multicast::{GroupIdSet, MAX_GROUPS}; -use crate::{net::socket::SocketAddr, prelude::*}; +use crate::{net::socket::util::SocketAddr, prelude::*}; /// The socket address of a netlink socket. /// diff --git a/kernel/src/net/socket/netlink/common/mod.rs b/kernel/src/net/socket/netlink/common/mod.rs index 4ac2c8173..6189796b5 100644 --- a/kernel/src/net/socket/netlink/common/mod.rs +++ b/kernel/src/net/socket/netlink/common/mod.rs @@ -13,8 +13,11 @@ use crate::{ netlink::{table::SupportedNetlinkProtocol, AddMembership, DropMembership}, options::SocketOption, private::SocketPrivate, - util::datagram_common::{select_remote_and_bind, Bound, Inner}, - MessageHeader, SendRecvFlags, Socket, SocketAddr, + util::{ + datagram_common::{select_remote_and_bind, Bound, Inner}, + MessageHeader, SendRecvFlags, SocketAddr, + }, + Socket, }, prelude::*, process::signal::{PollHandle, Pollable, Pollee}, diff --git a/kernel/src/net/socket/netlink/kobject_uevent/bound.rs b/kernel/src/net/socket/netlink/kobject_uevent/bound.rs index 0cf9edd4d..98969da3c 100644 --- a/kernel/src/net/socket/netlink/kobject_uevent/bound.rs +++ b/kernel/src/net/socket/netlink/kobject_uevent/bound.rs @@ -7,8 +7,7 @@ use crate::{ events::IoEvents, net::socket::{ netlink::{common::BoundNetlink, NetlinkSocketAddr}, - util::datagram_common, - SendRecvFlags, + util::{datagram_common, SendRecvFlags}, }, prelude::*, util::{MultiRead, MultiWrite}, diff --git a/kernel/src/net/socket/netlink/kobject_uevent/message/test.rs b/kernel/src/net/socket/netlink/kobject_uevent/message/test.rs index 8a848a000..231e3b26c 100644 --- a/kernel/src/net/socket/netlink/kobject_uevent/message/test.rs +++ b/kernel/src/net/socket/netlink/kobject_uevent/message/test.rs @@ -18,7 +18,8 @@ use crate::{ table::{NetlinkUeventProtocol, SupportedNetlinkProtocol}, GroupIdSet, NetlinkSocketAddr, NetlinkUeventSocket, }, - SendRecvFlags, Socket, SocketAddr, + util::{SendRecvFlags, SocketAddr}, + Socket, }, prelude::*, }; diff --git a/kernel/src/net/socket/netlink/route/bound.rs b/kernel/src/net/socket/netlink/route/bound.rs index 2bad49904..87debf64e 100644 --- a/kernel/src/net/socket/netlink/route/bound.rs +++ b/kernel/src/net/socket/netlink/route/bound.rs @@ -10,8 +10,7 @@ use crate::{ common::BoundNetlink, message::ProtocolSegment, route::kernel::get_netlink_route_kernel, NetlinkSocketAddr, }, - util::datagram_common, - SendRecvFlags, + util::{datagram_common, SendRecvFlags}, }, prelude::*, util::{MultiRead, MultiWrite}, diff --git a/kernel/src/net/socket/options/mod.rs b/kernel/src/net/socket/options/mod.rs index b5df5a857..eb9498b42 100644 --- a/kernel/src/net/socket/options/mod.rs +++ b/kernel/src/net/socket/options/mod.rs @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 +use super::util::LingerOption; use crate::{impl_socket_options, prelude::*}; -mod macros; -use super::LingerOption; +mod macros; /// Socket options. This trait represents all options that can be set or got for a socket, including /// socket level options and options for specific socket type like tcp socket. diff --git a/kernel/src/net/socket/unix/addr.rs b/kernel/src/net/socket/unix/addr.rs index d2de3020b..8cfe446ea 100644 --- a/kernel/src/net/socket/unix/addr.rs +++ b/kernel/src/net/socket/unix/addr.rs @@ -5,7 +5,7 @@ use keyable_arc::KeyableArc; use super::ns::{self, AbstractHandle}; use crate::{ fs::{path::Dentry, utils::Inode}, - net::socket::util::socket_addr::SocketAddr, + net::socket::util::SocketAddr, prelude::*, }; diff --git a/kernel/src/net/socket/unix/stream/connected.rs b/kernel/src/net/socket/unix/stream/connected.rs index 6da2d2246..df1a5ff07 100644 --- a/kernel/src/net/socket/unix/stream/connected.rs +++ b/kernel/src/net/socket/unix/stream/connected.rs @@ -9,7 +9,7 @@ use crate::{ fs::utils::{Channel, Consumer, Producer}, net::socket::{ unix::{addr::UnixSocketAddrBound, UnixSocketAddr}, - SockShutdownCmd, + util::SockShutdownCmd, }, prelude::*, process::signal::{PollHandle, Pollee}, diff --git a/kernel/src/net/socket/unix/stream/init.rs b/kernel/src/net/socket/unix/stream/init.rs index eedf20127..2fc6b6609 100644 --- a/kernel/src/net/socket/unix/stream/init.rs +++ b/kernel/src/net/socket/unix/stream/init.rs @@ -10,7 +10,7 @@ use crate::{ events::IoEvents, net::socket::{ unix::addr::{UnixSocketAddr, UnixSocketAddrBound}, - SockShutdownCmd, + util::SockShutdownCmd, }, prelude::*, process::signal::{PollHandle, Pollee}, diff --git a/kernel/src/net/socket/unix/stream/listener.rs b/kernel/src/net/socket/unix/stream/listener.rs index a10602d17..1d9024318 100644 --- a/kernel/src/net/socket/unix/stream/listener.rs +++ b/kernel/src/net/socket/unix/stream/listener.rs @@ -14,7 +14,7 @@ use crate::{ fs::file_handle::FileLike, net::socket::{ unix::addr::{UnixSocketAddrBound, UnixSocketAddrKey}, - SockShutdownCmd, SocketAddr, + util::{SockShutdownCmd, SocketAddr}, }, prelude::*, process::signal::{PollHandle, Pollee}, diff --git a/kernel/src/net/socket/unix/stream/socket.rs b/kernel/src/net/socket/unix/stream/socket.rs index b0bb3733f..bf332edd1 100644 --- a/kernel/src/net/socket/unix/stream/socket.rs +++ b/kernel/src/net/socket/unix/stream/socket.rs @@ -15,8 +15,8 @@ use crate::{ net::socket::{ private::SocketPrivate, unix::UnixSocketAddr, - util::{send_recv_flags::SendRecvFlags, socket_addr::SocketAddr, MessageHeader}, - SockShutdownCmd, Socket, + util::{MessageHeader, SendRecvFlags, SockShutdownCmd, SocketAddr}, + Socket, }, prelude::*, process::signal::{PollHandle, Pollable}, diff --git a/kernel/src/net/socket/util/datagram_common.rs b/kernel/src/net/socket/util/datagram_common.rs index 123299457..ef0085bf3 100644 --- a/kernel/src/net/socket/util/datagram_common.rs +++ b/kernel/src/net/socket/util/datagram_common.rs @@ -2,7 +2,7 @@ use ostd::sync::RwMutex; -use super::send_recv_flags::SendRecvFlags; +use super::SendRecvFlags; use crate::{ events::IoEvents, process::signal::Pollee, diff --git a/kernel/src/net/socket/util/linger_option.rs b/kernel/src/net/socket/util/linger_option.rs new file mode 100644 index 000000000..220ea6227 --- /dev/null +++ b/kernel/src/net/socket/util/linger_option.rs @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MPL-2.0 + +use core::time::Duration; + +#[derive(Debug, Default, Clone, Copy)] +pub struct LingerOption { + is_on: bool, + timeout: Duration, +} + +impl LingerOption { + pub fn new(is_on: bool, timeout: Duration) -> Self { + Self { is_on, timeout } + } + + pub fn is_on(&self) -> bool { + self.is_on + } + + pub fn timeout(&self) -> Duration { + self.timeout + } +} diff --git a/kernel/src/net/socket/util/message_header.rs b/kernel/src/net/socket/util/message_header.rs index a396ffd52..3f70eafbc 100644 --- a/kernel/src/net/socket/util/message_header.rs +++ b/kernel/src/net/socket/util/message_header.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MPL-2.0 -use super::socket_addr::SocketAddr; +use super::SocketAddr; use crate::prelude::*; /// Message header used for sendmsg/recvmsg. diff --git a/kernel/src/net/socket/util/mod.rs b/kernel/src/net/socket/util/mod.rs index 39706922e..782e7708a 100644 --- a/kernel/src/net/socket/util/mod.rs +++ b/kernel/src/net/socket/util/mod.rs @@ -1,10 +1,15 @@ // SPDX-License-Identifier: MPL-2.0 -pub mod datagram_common; +pub(super) mod datagram_common; +mod linger_option; mod message_header; -pub mod options; -pub mod send_recv_flags; -pub mod shutdown_cmd; -pub mod socket_addr; +pub(super) mod options; +mod send_recv_flags; +mod shutdown_cmd; +mod socket_addr; +pub use linger_option::LingerOption; pub use message_header::MessageHeader; +pub use send_recv_flags::SendRecvFlags; +pub use shutdown_cmd::SockShutdownCmd; +pub use socket_addr::SocketAddr; diff --git a/kernel/src/net/socket/util/options.rs b/kernel/src/net/socket/util/options.rs index 41248aae0..7464f0cdc 100644 --- a/kernel/src/net/socket/util/options.rs +++ b/kernel/src/net/socket/util/options.rs @@ -1,11 +1,10 @@ // SPDX-License-Identifier: MPL-2.0 -use core::time::Duration; - use aster_bigtcp::socket::{ NeedIfacePoll, TCP_RECV_BUF_LEN, TCP_SEND_BUF_LEN, UDP_RECV_PAYLOAD_LEN, UDP_SEND_PAYLOAD_LEN, }; +use super::LingerOption; use crate::{ match_sock_option_mut, match_sock_option_ref, net::socket::options::{ @@ -137,26 +136,6 @@ impl SocketOptionSet { pub const MIN_SENDBUF: u32 = 2304; pub const MIN_RECVBUF: u32 = 2304; -#[derive(Debug, Default, Clone, Copy)] -pub struct LingerOption { - is_on: bool, - timeout: Duration, -} - -impl LingerOption { - pub fn new(is_on: bool, timeout: Duration) -> Self { - Self { is_on, timeout } - } - - pub fn is_on(&self) -> bool { - self.is_on - } - - pub fn timeout(&self) -> Duration { - self.timeout - } -} - /// A trait used for setting socket level options on actual sockets. pub(in crate::net) trait SetSocketLevelOption { /// Sets whether keepalive messages are enabled. diff --git a/kernel/src/net/socket/vsock/addr.rs b/kernel/src/net/socket/vsock/addr.rs index 78a74b5a4..a7d99b588 100644 --- a/kernel/src/net/socket/vsock/addr.rs +++ b/kernel/src/net/socket/vsock/addr.rs @@ -2,7 +2,7 @@ use aster_virtio::device::socket::header::VsockDeviceAddr; -use crate::{net::socket::SocketAddr, prelude::*}; +use crate::{net::socket::util::SocketAddr, prelude::*}; #[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)] pub struct VsockSocketAddr { diff --git a/kernel/src/net/socket/vsock/stream/connected.rs b/kernel/src/net/socket/vsock/stream/connected.rs index 98e3ab743..4929ce742 100644 --- a/kernel/src/net/socket/vsock/stream/connected.rs +++ b/kernel/src/net/socket/vsock/stream/connected.rs @@ -6,8 +6,8 @@ use super::connecting::Connecting; use crate::{ events::IoEvents, net::socket::{ + util::{SendRecvFlags, SockShutdownCmd}, vsock::{addr::VsockSocketAddr, VSOCK_GLOBAL}, - SendRecvFlags, SockShutdownCmd, }, prelude::*, process::signal::{PollHandle, Pollee}, diff --git a/kernel/src/net/socket/vsock/stream/socket.rs b/kernel/src/net/socket/vsock/stream/socket.rs index 83a0fa063..9111f5420 100644 --- a/kernel/src/net/socket/vsock/stream/socket.rs +++ b/kernel/src/net/socket/vsock/stream/socket.rs @@ -8,8 +8,9 @@ use crate::{ fs::file_handle::FileLike, net::socket::{ private::SocketPrivate, + util::{MessageHeader, SendRecvFlags, SockShutdownCmd, SocketAddr}, vsock::{addr::VsockSocketAddr, VSOCK_GLOBAL}, - MessageHeader, SendRecvFlags, SockShutdownCmd, Socket, SocketAddr, + Socket, }, prelude::*, process::signal::{PollHandle, Pollable, Poller}, diff --git a/kernel/src/syscall/recvfrom.rs b/kernel/src/syscall/recvfrom.rs index 7a63cdf59..51d508077 100644 --- a/kernel/src/syscall/recvfrom.rs +++ b/kernel/src/syscall/recvfrom.rs @@ -3,7 +3,7 @@ use super::SyscallReturn; use crate::{ fs::file_table::{get_file_fast, FileDesc}, - net::socket::SendRecvFlags, + net::socket::util::SendRecvFlags, prelude::*, util::net::write_socket_addr_to_user, }; diff --git a/kernel/src/syscall/recvmsg.rs b/kernel/src/syscall/recvmsg.rs index 2e572a7bb..647b686e1 100644 --- a/kernel/src/syscall/recvmsg.rs +++ b/kernel/src/syscall/recvmsg.rs @@ -3,7 +3,7 @@ use super::SyscallReturn; use crate::{ fs::file_table::{get_file_fast, FileDesc}, - net::socket::SendRecvFlags, + net::socket::util::SendRecvFlags, prelude::*, util::net::CUserMsgHdr, }; diff --git a/kernel/src/syscall/sendmsg.rs b/kernel/src/syscall/sendmsg.rs index 44c1259a0..e702605c6 100644 --- a/kernel/src/syscall/sendmsg.rs +++ b/kernel/src/syscall/sendmsg.rs @@ -3,7 +3,7 @@ use super::SyscallReturn; use crate::{ fs::file_table::{get_file_fast, FileDesc}, - net::socket::{MessageHeader, SendRecvFlags}, + net::socket::util::{MessageHeader, SendRecvFlags}, prelude::*, util::net::CUserMsgHdr, }; diff --git a/kernel/src/syscall/sendto.rs b/kernel/src/syscall/sendto.rs index f2b6f4e9e..c31fb5a25 100644 --- a/kernel/src/syscall/sendto.rs +++ b/kernel/src/syscall/sendto.rs @@ -3,7 +3,7 @@ use super::SyscallReturn; use crate::{ fs::file_table::{get_file_fast, FileDesc}, - net::socket::{MessageHeader, SendRecvFlags}, + net::socket::util::{MessageHeader, SendRecvFlags}, prelude::*, util::net::read_socket_addr_from_user, }; diff --git a/kernel/src/syscall/shutdown.rs b/kernel/src/syscall/shutdown.rs index 33d97b156..c90904ba1 100644 --- a/kernel/src/syscall/shutdown.rs +++ b/kernel/src/syscall/shutdown.rs @@ -3,7 +3,7 @@ use super::SyscallReturn; use crate::{ fs::file_table::{get_file_fast, FileDesc}, - net::socket::SockShutdownCmd, + net::socket::util::SockShutdownCmd, prelude::*, }; diff --git a/kernel/src/syscall/socket.rs b/kernel/src/syscall/socket.rs index 47e90fe40..9100edac3 100644 --- a/kernel/src/syscall/socket.rs +++ b/kernel/src/syscall/socket.rs @@ -4,7 +4,7 @@ use super::SyscallReturn; use crate::{ fs::{file_handle::FileLike, file_table::FdFlags}, net::socket::{ - ip::{datagram::DatagramSocket, stream::StreamSocket}, + ip::{DatagramSocket, StreamSocket}, netlink::{ is_valid_protocol, NetlinkRouteSocket, NetlinkUeventSocket, StandardNetlinkProtocol, }, diff --git a/kernel/src/util/net/addr/family.rs b/kernel/src/util/net/addr/family.rs index 9901ac737..7cc2d6478 100644 --- a/kernel/src/util/net/addr/family.rs +++ b/kernel/src/util/net/addr/family.rs @@ -5,7 +5,7 @@ use core::cmp::min; use ostd::task::Task; use super::{ip::CSocketAddrInet, netlink::CSocketAddrNetlink, unix, vsock::CSocketAddrVm}; -use crate::{current_userspace, net::socket::SocketAddr, prelude::*}; +use crate::{current_userspace, net::socket::util::SocketAddr, prelude::*}; /// Address family. /// diff --git a/kernel/src/util/net/options/tcp.rs b/kernel/src/util/net/options/tcp.rs index 75a24c143..fded518b7 100644 --- a/kernel/src/util/net/options/tcp.rs +++ b/kernel/src/util/net/options/tcp.rs @@ -3,7 +3,7 @@ use super::RawSocketOption; use crate::{ impl_raw_socket_option, - net::socket::ip::stream::options::{ + net::socket::ip::stream_options::{ Congestion, DeferAccept, Inq, KeepIdle, MaxSegment, NoDelay, SynCnt, UserTimeout, WindowClamp, }, diff --git a/kernel/src/util/net/options/utils.rs b/kernel/src/util/net/options/utils.rs index 24cb19f26..3eb3e3cd1 100644 --- a/kernel/src/util/net/options/utils.rs +++ b/kernel/src/util/net/options/utils.rs @@ -5,8 +5,8 @@ use core::{num::NonZeroU8, time::Duration}; use crate::{ current_userspace, net::socket::{ - ip::{options::IpTtl, stream::CongestionControl}, - LingerOption, + ip::{options::IpTtl, stream_options::CongestionControl}, + util::LingerOption, }, prelude::*, }; diff --git a/kernel/src/util/net/socket.rs b/kernel/src/util/net/socket.rs index b83005b4a..8ca7af693 100644 --- a/kernel/src/util/net/socket.rs +++ b/kernel/src/util/net/socket.rs @@ -2,7 +2,7 @@ use super::read_socket_addr_from_user; use crate::{ - net::socket::SocketAddr, + net::socket::util::SocketAddr, prelude::*, util::{net::write_socket_addr_with_max_len, VmReaderArray, VmWriterArray}, };