Path: blob/main/crates/wasi/src/p2/network.rs
1692 views
use crate::TrappableError;1use crate::p2::bindings::sockets::network::ErrorCode;2use crate::sockets::{SocketAddrCheck, SocketAddrUse};3use std::net::SocketAddr;45pub type SocketResult<T> = Result<T, SocketError>;67pub type SocketError = TrappableError<ErrorCode>;89impl From<wasmtime::component::ResourceTableError> for SocketError {10fn from(error: wasmtime::component::ResourceTableError) -> Self {11Self::trap(error)12}13}1415impl From<std::io::Error> for SocketError {16fn from(error: std::io::Error) -> Self {17ErrorCode::from(error).into()18}19}2021impl From<rustix::io::Errno> for SocketError {22fn from(error: rustix::io::Errno) -> Self {23ErrorCode::from(error).into()24}25}2627impl From<crate::sockets::util::ErrorCode> for SocketError {28fn from(error: crate::sockets::util::ErrorCode) -> Self {29ErrorCode::from(error).into()30}31}3233impl From<crate::sockets::util::ErrorCode> for ErrorCode {34fn from(error: crate::sockets::util::ErrorCode) -> Self {35match error {36crate::sockets::util::ErrorCode::Unknown => Self::Unknown,37crate::sockets::util::ErrorCode::AccessDenied => Self::AccessDenied,38crate::sockets::util::ErrorCode::NotSupported => Self::NotSupported,39crate::sockets::util::ErrorCode::InvalidArgument => Self::InvalidArgument,40crate::sockets::util::ErrorCode::OutOfMemory => Self::OutOfMemory,41crate::sockets::util::ErrorCode::Timeout => Self::Timeout,42crate::sockets::util::ErrorCode::InvalidState => Self::InvalidState,43crate::sockets::util::ErrorCode::AddressNotBindable => Self::AddressNotBindable,44crate::sockets::util::ErrorCode::AddressInUse => Self::AddressInUse,45crate::sockets::util::ErrorCode::RemoteUnreachable => Self::RemoteUnreachable,46crate::sockets::util::ErrorCode::ConnectionRefused => Self::ConnectionRefused,47crate::sockets::util::ErrorCode::ConnectionReset => Self::ConnectionReset,48crate::sockets::util::ErrorCode::ConnectionAborted => Self::ConnectionAborted,49crate::sockets::util::ErrorCode::DatagramTooLarge => Self::DatagramTooLarge,50crate::sockets::util::ErrorCode::NotInProgress => Self::NotInProgress,51crate::sockets::util::ErrorCode::ConcurrencyConflict => Self::ConcurrencyConflict,52}53}54}5556pub struct Network {57pub(crate) socket_addr_check: SocketAddrCheck,58pub(crate) allow_ip_name_lookup: bool,59}6061impl Network {62pub(crate) async fn check_socket_addr(63&self,64addr: SocketAddr,65reason: SocketAddrUse,66) -> std::io::Result<()> {67self.socket_addr_check.check(addr, reason).await68}69}707172