diff --git a/CHANGELOG.md b/CHANGELOG.md index b2ac33412b..2feeef8433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,12 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] - ReleaseDate ### Added - Added `if_nameindex` (#[1445](https://github.com/nix-rust/nix/pull/1445)) +- Exposed `SockAddr::from_raw_sockaddr` (#[1447](https://github.com/nix-rust/nix/pull/1447)) ### Changed ### Fixed ### Removed +- Removed `SockAddr/InetAddr::to_str` in favor of `<_ as ToString>::to_string` (#[1447](https://github.com/nix-rust/nix/pull/1447)) ## [0.21.0] - 31 May 2021 ### Added diff --git a/src/ifaddrs.rs b/src/ifaddrs.rs index ed6328f3ef..74f340505e 100644 --- a/src/ifaddrs.rs +++ b/src/ifaddrs.rs @@ -46,8 +46,8 @@ impl InterfaceAddress { /// Create an `InterfaceAddress` from the libc struct. fn from_libc_ifaddrs(info: &libc::ifaddrs) -> InterfaceAddress { let ifname = unsafe { ffi::CStr::from_ptr(info.ifa_name) }; - let address = unsafe { SockAddr::from_libc_sockaddr(info.ifa_addr) }; - let netmask = unsafe { SockAddr::from_libc_sockaddr(info.ifa_netmask) }; + let address = unsafe { SockAddr::from_raw_sockaddr(info.ifa_addr) }; + let netmask = unsafe { SockAddr::from_raw_sockaddr(info.ifa_netmask) }; let mut addr = InterfaceAddress { interface_name: ifname.to_string_lossy().to_string(), flags: InterfaceFlags::from_bits_truncate(info.ifa_flags as i32), @@ -59,9 +59,9 @@ impl InterfaceAddress { let ifu = get_ifu_from_sockaddr(info); if addr.flags.contains(InterfaceFlags::IFF_POINTOPOINT) { - addr.destination = unsafe { SockAddr::from_libc_sockaddr(ifu) }; + addr.destination = unsafe { SockAddr::from_raw_sockaddr(ifu) }; } else if addr.flags.contains(InterfaceFlags::IFF_BROADCAST) { - addr.broadcast = unsafe { SockAddr::from_libc_sockaddr(ifu) }; + addr.broadcast = unsafe { SockAddr::from_raw_sockaddr(ifu) }; } addr diff --git a/src/sys/socket/addr.rs b/src/sys/socket/addr.rs index 6a0bc9a560..6db397b31f 100644 --- a/src/sys/socket/addr.rs +++ b/src/sys/socket/addr.rs @@ -342,10 +342,6 @@ impl InetAddr { sa.sin6_scope_id)), } } - - pub fn to_str(&self) -> String { - format!("{}", self) - } } impl fmt::Display for InetAddr { @@ -720,10 +716,6 @@ impl SockAddr { } } - pub fn to_str(&self) -> String { - format!("{}", self) - } - /// Creates a `SockAddr` struct from libc's sockaddr. /// /// Supports only the following address families: Unix, Inet (v4 & v6), Netlink and System. @@ -734,7 +726,7 @@ impl SockAddr { /// unsafe because it takes a raw pointer as argument. The caller must /// ensure that the pointer is valid. #[cfg(not(target_os = "fuchsia"))] - pub(crate) unsafe fn from_libc_sockaddr(addr: *const libc::sockaddr) -> Option { + pub unsafe fn from_raw_sockaddr(addr: *const libc::sockaddr) -> Option { if addr.is_null() { None } else { @@ -1313,7 +1305,7 @@ mod tests { fn test_macos_loopback_datalink_addr() { let bytes = [20i8, 18, 1, 0, 24, 3, 0, 0, 108, 111, 48, 0, 0, 0, 0, 0]; let sa = bytes.as_ptr() as *const libc::sockaddr; - let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) }; + let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) }; assert!(_sock_addr.is_none()); } @@ -1328,7 +1320,7 @@ mod tests { let bytes = [20i8, 18, 7, 0, 6, 3, 6, 0, 101, 110, 48, 24, 101, -112, -35, 76, -80]; let ptr = bytes.as_ptr(); let sa = ptr as *const libc::sockaddr; - let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) }; + let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) }; assert!(_sock_addr.is_some()); @@ -1350,7 +1342,7 @@ mod tests { let bytes = [25u8, 0, 0, 0, 6, 0, 6, 0, 24, 101, 144, 221, 76, 176]; let ptr = bytes.as_ptr(); let sa = ptr as *const libc::sockaddr; - let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) }; + let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) }; assert!(_sock_addr.is_some()); diff --git a/test/sys/test_socket.rs b/test/sys/test_socket.rs index c22eaeb1a5..d7b5607030 100644 --- a/test/sys/test_socket.rs +++ b/test/sys/test_socket.rs @@ -27,7 +27,7 @@ pub fn test_inetv4_addr_to_sock_addr() { _ => panic!("nope"), } - assert_eq!(addr.to_str(), "127.0.0.1:3000"); + assert_eq!(addr.to_string(), "127.0.0.1:3000"); let inet = addr.to_std(); assert_eq!(actual, inet); @@ -143,8 +143,8 @@ pub fn test_getsockname() { .expect("socket failed"); let sockaddr = SockAddr::new_unix(&sockname).unwrap(); bind(sock, &sockaddr).expect("bind failed"); - assert_eq!(sockaddr.to_str(), - getsockname(sock).expect("getsockname failed").to_str()); + assert_eq!(sockaddr.to_string(), + getsockname(sock).expect("getsockname failed").to_string()); } #[test]