diff options
author | Kyle Huey <khuey@kylehuey.com> | 2022-04-27 18:27:03 -0700 |
---|---|---|
committer | Kyle Huey <khuey@kylehuey.com> | 2022-05-02 08:53:08 -0700 |
commit | 024c0d7ddefc5458911242d61a89f44b5a3b5a38 (patch) | |
tree | 0612d9c58f530664ad93be6a07aeeb748358ac6a /src/sys/socket | |
parent | 4d79e93904b5f679ea14c382e778404fab306dd0 (diff) | |
download | nix-024c0d7ddefc5458911242d61a89f44b5a3b5a38.zip |
Restore conversions from ip v4/6 Sockaddr types to std::net equivalents.
Fixes #1710
Diffstat (limited to 'src/sys/socket')
-rw-r--r-- | src/sys/socket/addr.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/sys/socket/addr.rs b/src/sys/socket/addr.rs index 52d60ac9..5cd4678c 100644 --- a/src/sys/socket/addr.rs +++ b/src/sys/socket/addr.rs @@ -1234,6 +1234,16 @@ impl From<net::SocketAddrV4> for SockaddrIn { } #[cfg(feature = "net")] +impl From<SockaddrIn> for net::SocketAddrV4 { + fn from(addr: SockaddrIn) -> Self { + net::SocketAddrV4::new( + net::Ipv4Addr::from(addr.0.sin_addr.s_addr.to_ne_bytes()), + u16::from_be(addr.0.sin_port) + ) + } +} + +#[cfg(feature = "net")] impl std::str::FromStr for SockaddrIn { type Err = net::AddrParseError; @@ -1330,6 +1340,18 @@ impl From<net::SocketAddrV6> for SockaddrIn6 { } #[cfg(feature = "net")] +impl From<SockaddrIn6> for net::SocketAddrV6 { + fn from(addr: SockaddrIn6) -> Self { + net::SocketAddrV6::new( + net::Ipv6Addr::from(addr.0.sin6_addr.s6_addr), + u16::from_be(addr.0.sin6_port), + u32::from_be(addr.0.sin6_flowinfo), + u32::from_be(addr.0.sin6_scope_id) + ) + } +} + +#[cfg(feature = "net")] impl std::str::FromStr for SockaddrIn6 { type Err = net::AddrParseError; |