Closed
Description
On Linux, there is no method SockaddrStorage::as_link_addr
, so it is not possible to obtain a MAC address for an interface using safe Rust. I cooked up the following, which seems to work, but it feels like this should be possible using only safe code:
fn sockaddr_link(sockaddr: &SockaddrStorage) -> Option<LinkAddr> {
if let Some(AddressFamily::Packet) = sockaddr.family() {
// Safety: Checked the address family
unsafe { LinkAddr::from_raw(sockaddr.as_ptr(), None) }
} else {
None
}
}
Metadata
Metadata
Assignees
Labels
No labels