diff --git a/src/sys/socket/addr.rs b/src/sys/socket/addr.rs index 98f0c0f854..efe4e6918c 100644 --- a/src/sys/socket/addr.rs +++ b/src/sys/socket/addr.rs @@ -1557,6 +1557,16 @@ impl From for SockaddrStorage { } } +#[cfg(feature = "net")] +impl From for SockaddrStorage { + fn from(s: net::SocketAddr) -> Self { + match s { + net::SocketAddr::V4(sa4) => Self::from(sa4), + net::SocketAddr::V6(sa6) => Self::from(sa6), + } + } +} + impl Hash for SockaddrStorage { fn hash(&self, s: &mut H) { unsafe { diff --git a/test/sys/test_socket.rs b/test/sys/test_socket.rs index 350f1fa6f1..e03edc3b40 100644 --- a/test/sys/test_socket.rs +++ b/test/sys/test_socket.rs @@ -912,7 +912,6 @@ pub fn test_sendmsg_ipv6packetinfo() { .expect("socket failed"); let std_sa = SocketAddrV6::from_str("[::1]:6000").unwrap(); - //let inet_addr = InetAddr::from_std(&std_sa); let sock_addr: SockaddrIn6 = SockaddrIn6::from(std_sa); if let Err(Errno::EADDRNOTAVAIL) = bind(sock, &sock_addr) { @@ -1908,8 +1907,8 @@ mod linux_errqueue { use nix::sys::uio::IoVec; const MESSAGE_CONTENTS: &str = "ABCDEF"; - - let sock_addr = SockaddrIn::from_str(sa).unwrap(); + let std_sa = std::net::SocketAddr::from_str(sa).unwrap(); + let sock_addr = SockaddrStorage::from(std_sa); let sock = socket(af, SockType::Datagram, SockFlag::SOCK_CLOEXEC, None).unwrap(); setsockopt(sock, opt, &true).unwrap(); if let Err(e) = sendto(sock, MESSAGE_CONTENTS.as_bytes(), &sock_addr, MsgFlags::empty()) {