Skip to content

Commit 83c0117

Browse files
committed
Expose SockAddr::from_raw_sockaddr
1 parent 99fc58e commit 83c0117

File tree

4 files changed

+13
-19
lines changed

4 files changed

+13
-19
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ This project adheres to [Semantic Versioning](https://semver.org/).
66
## [Unreleased] - ReleaseDate
77
### Added
88
- Added `if_nameindex` (#[1445](https://github.com/nix-rust/nix/pull/1445))
9+
- Exposed `SockAddr::from_raw_sockaddr` (#[1447](https://github.com/nix-rust/nix/pull/1447))
910

1011
### Changed
1112
### Fixed
1213
### Removed
14+
- Removed `SockAddr/InetAddr::to_str` in favor of `<_ as ToString>::to_string` (#[1447](https://github.com/nix-rust/nix/pull/1447))
1315

1416
## [0.21.0] - 31 May 2021
1517
### Added

src/ifaddrs.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ impl InterfaceAddress {
4646
/// Create an `InterfaceAddress` from the libc struct.
4747
fn from_libc_ifaddrs(info: &libc::ifaddrs) -> InterfaceAddress {
4848
let ifname = unsafe { ffi::CStr::from_ptr(info.ifa_name) };
49-
let address = unsafe { SockAddr::from_libc_sockaddr(info.ifa_addr) };
50-
let netmask = unsafe { SockAddr::from_libc_sockaddr(info.ifa_netmask) };
49+
let address = unsafe { SockAddr::from_raw_sockaddr(info.ifa_addr) };
50+
let netmask = unsafe { SockAddr::from_raw_sockaddr(info.ifa_netmask) };
5151
let mut addr = InterfaceAddress {
5252
interface_name: ifname.to_string_lossy().to_string(),
5353
flags: InterfaceFlags::from_bits_truncate(info.ifa_flags as i32),
@@ -59,9 +59,9 @@ impl InterfaceAddress {
5959

6060
let ifu = get_ifu_from_sockaddr(info);
6161
if addr.flags.contains(InterfaceFlags::IFF_POINTOPOINT) {
62-
addr.destination = unsafe { SockAddr::from_libc_sockaddr(ifu) };
62+
addr.destination = unsafe { SockAddr::from_raw_sockaddr(ifu) };
6363
} else if addr.flags.contains(InterfaceFlags::IFF_BROADCAST) {
64-
addr.broadcast = unsafe { SockAddr::from_libc_sockaddr(ifu) };
64+
addr.broadcast = unsafe { SockAddr::from_raw_sockaddr(ifu) };
6565
}
6666

6767
addr

src/sys/socket/addr.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,6 @@ impl InetAddr {
342342
sa.sin6_scope_id)),
343343
}
344344
}
345-
346-
pub fn to_str(&self) -> String {
347-
format!("{}", self)
348-
}
349345
}
350346

351347
impl fmt::Display for InetAddr {
@@ -720,10 +716,6 @@ impl SockAddr {
720716
}
721717
}
722718

723-
pub fn to_str(&self) -> String {
724-
format!("{}", self)
725-
}
726-
727719
/// Creates a `SockAddr` struct from libc's sockaddr.
728720
///
729721
/// Supports only the following address families: Unix, Inet (v4 & v6), Netlink and System.
@@ -734,7 +726,7 @@ impl SockAddr {
734726
/// unsafe because it takes a raw pointer as argument. The caller must
735727
/// ensure that the pointer is valid.
736728
#[cfg(not(target_os = "fuchsia"))]
737-
pub(crate) unsafe fn from_libc_sockaddr(addr: *const libc::sockaddr) -> Option<SockAddr> {
729+
pub unsafe fn from_raw_sockaddr(addr: *const libc::sockaddr) -> Option<SockAddr> {
738730
if addr.is_null() {
739731
None
740732
} else {
@@ -1313,7 +1305,7 @@ mod tests {
13131305
fn test_macos_loopback_datalink_addr() {
13141306
let bytes = [20i8, 18, 1, 0, 24, 3, 0, 0, 108, 111, 48, 0, 0, 0, 0, 0];
13151307
let sa = bytes.as_ptr() as *const libc::sockaddr;
1316-
let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) };
1308+
let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) };
13171309
assert!(_sock_addr.is_none());
13181310
}
13191311

@@ -1328,7 +1320,7 @@ mod tests {
13281320
let bytes = [20i8, 18, 7, 0, 6, 3, 6, 0, 101, 110, 48, 24, 101, -112, -35, 76, -80];
13291321
let ptr = bytes.as_ptr();
13301322
let sa = ptr as *const libc::sockaddr;
1331-
let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) };
1323+
let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) };
13321324

13331325
assert!(_sock_addr.is_some());
13341326

@@ -1350,7 +1342,7 @@ mod tests {
13501342
let bytes = [25u8, 0, 0, 0, 6, 0, 6, 0, 24, 101, 144, 221, 76, 176];
13511343
let ptr = bytes.as_ptr();
13521344
let sa = ptr as *const libc::sockaddr;
1353-
let _sock_addr = unsafe { SockAddr::from_libc_sockaddr(sa) };
1345+
let _sock_addr = unsafe { SockAddr::from_raw_sockaddr(sa) };
13541346

13551347
assert!(_sock_addr.is_some());
13561348

test/sys/test_socket.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub fn test_inetv4_addr_to_sock_addr() {
2727
_ => panic!("nope"),
2828
}
2929

30-
assert_eq!(addr.to_str(), "127.0.0.1:3000");
30+
assert_eq!(addr.to_string(), "127.0.0.1:3000");
3131

3232
let inet = addr.to_std();
3333
assert_eq!(actual, inet);
@@ -143,8 +143,8 @@ pub fn test_getsockname() {
143143
.expect("socket failed");
144144
let sockaddr = SockAddr::new_unix(&sockname).unwrap();
145145
bind(sock, &sockaddr).expect("bind failed");
146-
assert_eq!(sockaddr.to_str(),
147-
getsockname(sock).expect("getsockname failed").to_str());
146+
assert_eq!(sockaddr.to_string(),
147+
getsockname(sock).expect("getsockname failed").to_string());
148148
}
149149

150150
#[test]

0 commit comments

Comments
 (0)