wasmtime_wasi/p2/
network.rs1use crate::p2::bindings::sockets::network::{ErrorCode, Ipv4Address, Ipv6Address};
2use crate::TrappableError;
3
4pub type SocketResult<T> = Result<T, SocketError>;
5
6pub type SocketError = TrappableError<ErrorCode>;
7
8impl From<wasmtime::component::ResourceTableError> for SocketError {
9 fn from(error: wasmtime::component::ResourceTableError) -> Self {
10 Self::trap(error)
11 }
12}
13
14impl From<std::io::Error> for SocketError {
15 fn from(error: std::io::Error) -> Self {
16 ErrorCode::from(error).into()
17 }
18}
19
20impl From<rustix::io::Errno> for SocketError {
21 fn from(error: rustix::io::Errno) -> Self {
22 ErrorCode::from(error).into()
23 }
24}
25
26pub(crate) fn to_ipv4_addr(addr: Ipv4Address) -> std::net::Ipv4Addr {
27 let (x0, x1, x2, x3) = addr;
28 std::net::Ipv4Addr::new(x0, x1, x2, x3)
29}
30
31pub(crate) fn from_ipv4_addr(addr: std::net::Ipv4Addr) -> Ipv4Address {
32 let [x0, x1, x2, x3] = addr.octets();
33 (x0, x1, x2, x3)
34}
35
36pub(crate) fn to_ipv6_addr(addr: Ipv6Address) -> std::net::Ipv6Addr {
37 let (x0, x1, x2, x3, x4, x5, x6, x7) = addr;
38 std::net::Ipv6Addr::new(x0, x1, x2, x3, x4, x5, x6, x7)
39}
40
41pub(crate) fn from_ipv6_addr(addr: std::net::Ipv6Addr) -> Ipv6Address {
42 let [x0, x1, x2, x3, x4, x5, x6, x7] = addr.segments();
43 (x0, x1, x2, x3, x4, x5, x6, x7)
44}