pub(crate) unsafe fn get_interface_address() -> Result<InterfaceAddressIterator, String> {
    let mut ifap = null_mut();
    if retry_eintr!(libc::getifaddrs(&mut ifap)) == 0 && !ifap.is_null() {
        Ok(InterfaceAddressIterator { ifap, buf: ifap })
    } else {
        Err("failed to call getifaddrs()".to_string())
    }
}
Return an iterator on (interface_name, address) pairs
src/unix/network_helper.rs