summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg V <greg@unrelenting.technology>2020-04-15 14:55:21 +0300
committerGreg V <greg@unrelenting.technology>2020-04-15 14:55:55 +0300
commitd8764e8b78b2736ecd74f3fd29d6767e40cac491 (patch)
tree81d859246a8880f508e9a4ab6d1f801c1bba43d4
parente687a59c8a6b5962b9b27cc8f7a683bab99e5006 (diff)
downloadrust-libc-d8764e8b78b2736ecd74f3fd29d6767e40cac491.tar.gz
freebsd: add sockcred/SOCKCREDSIZE
Like on NetBSD, but without a pid field in the struct.
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 1b714b7751..d9dc4f2f74 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -107,6 +107,15 @@ s! {
pub msg_hdr: ::msghdr,
pub msg_len: ::ssize_t,
}
+
+ pub struct sockcred {
+ pub sc_uid: ::uid_t,
+ pub sc_euid: ::uid_t,
+ pub sc_gid: ::gid_t,
+ pub sc_egid: ::gid_t,
+ pub sc_ngroups: ::c_int,
+ pub sc_groups: [::gid_t; 1],
+ }
}
s_no_extra_traits! {
@@ -1136,6 +1145,15 @@ f! {
as ::c_uint
}
+ pub fn SOCKCREDSIZE(ngrps: usize) -> usize {
+ let ngrps = if ngrps > 0 {
+ ngrps - 1
+ } else {
+ 0
+ };
+ ::mem::size_of::<sockcred>() + ::mem::size_of::<::gid_t>() * ngrps
+ }
+
pub fn uname(buf: *mut ::utsname) -> ::c_int {
__xuname(256, buf as *mut ::c_void)
}