Skip to content

Commit

Permalink
impl From(net::SocketAddr) for SockaddrStorage and use it to fix a test
Browse files Browse the repository at this point in the history
on Linux
  • Loading branch information
asomers committed Mar 20, 2022
1 parent 91aab08 commit ce8090f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
10 changes: 10 additions & 0 deletions src/sys/socket/addr.rs
Expand Up @@ -1557,6 +1557,16 @@ impl From<net::SocketAddrV6> for SockaddrStorage {
}
}

#[cfg(feature = "net")]
impl From<net::SocketAddr> 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<H: Hasher>(&self, s: &mut H) {
unsafe {
Expand Down
5 changes: 2 additions & 3 deletions test/sys/test_socket.rs
Expand Up @@ -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) {
Expand Down Expand Up @@ -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()) {
Expand Down

0 comments on commit ce8090f

Please sign in to comment.