Skip to content

Instantly share code, notes, and snippets.

@ssrlive
Created November 27, 2024 03:46
Show Gist options
  • Save ssrlive/efd354051ad951484e1269759b14a86b to your computer and use it in GitHub Desktop.
Save ssrlive/efd354051ad951484e1269759b14a86b to your computer and use it in GitHub Desktop.
sockaddr_union
#[cfg(unix)]
#[repr(C)]
#[derive(Clone, Copy)]
pub union sockaddr_union {
pub addr_stor: libc::sockaddr_storage,
pub addr6: libc::sockaddr_in6,
pub addr4: libc::sockaddr_in,
pub addr: libc::sockaddr,
}
#[cfg(windows)]
#[repr(C)]
#[derive(Clone, Copy)]
pub union sockaddr_union {
pub addr_stor: windows_sys::Win32::Networking::WinSock::SOCKADDR_STORAGE,
pub addr6: windows_sys::Win32::Networking::WinSock::SOCKADDR_IN6,
pub addr4: windows_sys::Win32::Networking::WinSock::SOCKADDR_IN,
pub addr: windows_sys::Win32::Networking::WinSock::SOCKADDR,
}
fn main() {
println!(
"sizeof(sockaddr_union) = {}",
std::mem::size_of::<sockaddr_union>()
);
}
/*
[dependencies]
libc = "0.2.166"
windows-sys = { version = "0.59.0", features = [
"Win32_Security",
"Win32_System_Threading",
"Win32_UI_WindowsAndMessaging",
"Win32_Networking_WindowsWebServices",
"Win32_Networking_WinSock",
] }
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment