diff options
author | bors <bors@rust-lang.org> | 2022-01-24 20:09:11 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-01-24 20:09:11 +0000 |
commit | 80f4ca240c0a3fd9bf8acd70b38d456f18981602 (patch) | |
tree | aba6ee14c41e521446fd278291bf050237664fe9 | |
parent | 831b3a25e83fa130ce6a85bd4bf7d4837fc835d2 (diff) | |
parent | 0ef1e7130d5f900b0f1c48ef5e65cf672283039d (diff) | |
download | rust-libc-80f4ca240c0a3fd9bf8acd70b38d456f18981602.tar.gz |
Auto merge of #2649 - devnexen:netbsd_ifconf, r=Amanieu
netbsd add ifconf data
-rw-r--r-- | libc-test/semver/netbsd.txt | 1 | ||||
-rw-r--r-- | src/unix/bsd/netbsdlike/netbsd/mod.rs | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/libc-test/semver/netbsd.txt b/libc-test/semver/netbsd.txt index 90d773dc4f..4a8bafbdc1 100644 --- a/libc-test/semver/netbsd.txt +++ b/libc-test/semver/netbsd.txt @@ -1240,6 +1240,7 @@ if_freenameindex if_msghdr if_nameindex ifaddrs +ifconf in6_pktinfo in_pktinfo initgroups diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index a7c2440f13..872403e377 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -575,6 +575,16 @@ s! { pub descr_len: u32, pub descr_str: [::c_char; 1], } + + pub struct ifreq { + pub _priv: [[::c_char; 6]; 24], + } + + pub struct ifconf { + pub ifc_len: ::c_int, + #[cfg(libc_union)] + pub ifc_ifcu: __c_anonymous_ifc_ifcu, + } } s_no_extra_traits! { @@ -693,6 +703,12 @@ s_no_extra_traits! { pub open: __c_anonymous_posix_spawn_fae_open, pub dup2: __c_anonymous_posix_spawn_fae_dup2, } + + #[cfg(libc_union)] + pub union __c_anonymous_ifc_ifcu { + pub ifcu_buf: *mut ::c_void, + pub ifcu_req: *mut ifreq, + } } cfg_if! { @@ -1155,6 +1171,41 @@ cfg_if! { } } } + + #[cfg(libc_union)] + impl Eq for __c_anonymous_ifc_ifcu {} + + #[cfg(libc_union)] + impl PartialEq for __c_anonymous_ifc_ifcu { + fn eq(&self, other: &__c_anonymous_ifc_ifcu) -> bool { + unsafe { + self.ifcu_buf == other.ifcu_buf + || self.ifcu_req == other.ifcu_req + } + } + } + + #[cfg(libc_union)] + impl ::fmt::Debug for __c_anonymous_ifc_ifcu { + fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { + unsafe { + f.debug_struct("__c_anonymous_ifc_ifcu") + .field("ifcu_buf", &self.ifcu_buf) + .field("ifcu_req", &self.ifcu_req) + .finish() + } + } + } + + #[cfg(libc_union)] + impl ::hash::Hash for __c_anonymous_ifc_ifcu { + fn hash<H: ::hash::Hasher>(&self, state: &mut H) { + unsafe { + self.ifcu_buf.hash(state); + self.ifcu_req.hash(state); + } + } + } } } |